edge = TopoDS::Edge(itL.Value());
if (!aUsedEdges.Contains(edge))
{
- if (j == 0)
- aChain.Prepend(edge);
- else
- aChain.Append(edge);
- aUsedEdges.Add(edge);
- TopoDS_Vertex VF2, VL2;
- TopExp::Vertices(edge, VF2, VL2, Standard_True);
- V[j] = (VF2.IsSame(V[j]) ? VL2 : VF2);
- isAdded = Standard_True;
- break;
+ TopoDS_Vertex V2[2];
+ TopExp::Vertices(edge, V2[0], V2[1], Standard_True);
+ // the neighboring edge must have V[j] reversed and located on the opposite end
+ if (V2[1 - j].IsEqual(V[j].Reversed()))
+ {
+ if (j == 0)
+ aChain.Prepend(edge);
+ else
+ aChain.Append(edge);
+ aUsedEdges.Add(edge);
+ V[j] = V2[j];
+ isAdded = Standard_True;
+ break;
+ }
}
}
}
--- /dev/null
+puts "============"
+puts "OCC27521"
+puts "============"
+puts ""
+###############################
+## Standard_ConstructionError when trying to use unifySameDom into a shape
+###############################
+
+restore [locate_data_file bug27521_dom8443-good.brep] a
+unifysamedom result a
+
+don result
+smallview; fit
+checkshape result
+checknbshapes result -m UnifySameDomain -face 31 -edge 286
--- /dev/null
+puts "============"
+puts "OCC27521"
+puts "============"
+puts ""
+###############################
+## Standard_ConstructionError when trying to use unifySameDom into a shape
+###############################
+
+restore [locate_data_file bug27521_dom8443-wrong.brep] a
+unifysamedom result a
+
+don result
+smallview; fit
+checkshape result
+checknbshapes result -m UnifySameDomain -face 31 -edge 286