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