
Tue, 01/26/2010 - 11:04
Hi all,
I have a simple iges file. It contains only two faces. When I try to stitch them together using non-manifold model, it can't be stitched, but it works well under manifold mode. I traced the code and I think it's a bug in BRepBuilderAPI_Sewing::MergedNearestEdges.
// Find the longest edge CCI60011
Standard_Integer i, indRef = 1;
if (myNonmanifold) {
Standard_Real lenRef = 0.;
for (i = 1; i
Standard_Real f, l;
Handle(Geom_Curve) c3d = BRep_Tool::Curve(TopoDS::Edge(seqEdges(i)), f, l);
GeomAdaptor_Curve cAdapt(c3d);
Standard_Real len = GCPnts_AbscissaPoint::Length(cAdapt, f, l);
if (len > lenRef) { indRef = i; lenRef = len; }
}
if (indRef != 1) {
TopoDS_Shape longEdge = seqEdges(indRef);
seqEdges(indRef) = seqEdges(1);
seqEdges(1) = longEdge;
}
}
This code try to sort the candidate edges according to the length under non-manifold mode.
However, the following codes will never get the correct merged edges if the first candidate edge is not a real edge which should be merged.
Here, I comment this code, but I suspect it will cause some other bugs according to the hint "// Find the longest edge CCI60011".
Any suggestion is welcome. Thanks in advance.
-Ding
Tue, 01/26/2010 - 16:50
I think I had the same problem (http://www.opencascade.org/org/forum/thread_17869/)
After setting the non manifold processing parameter to false it worked.
Fri, 01/29/2010 - 04:56
Hi Timo,
Set non-manifold tag to false is not a good idea for me because I have lots of non-manifold model. Now, I just comment this code and rebuild occ lib. Though it works well now, I hope OCC developers can take focus on this problem. That's really a bad bug.
-Ding