#include <TopoDS.hxx>
#include <TopoDS_Edge.hxx>
#include <TopoDS_Wire.hxx>
+#include <BRep_Builder.hxx>
+#include <TopTools_ListIteratorOfListOfShape.hxx>
#include <QStringList>
double aZValue = ZValue();
+ TopTools_ListOfShape aSectionWiresList;
+
int aSectionCount = theSections.size();
for( int aSectionId = 0; aSectionId < aSectionCount; aSectionId++ )
{
aMakeSectionWire.Add( anEdge );
}
TopoDS_Wire aSectionWire = aMakeSectionWire.Wire();
+ aSectionWiresList.Append( aSectionWire );
aMakeWire.Add( aSectionWire );
}
}
- TopoDS_Shape aShape = aMakeWire.Shape();
+ TopoDS_Shape aShape;
+ if ( aMakeWire.IsDone() ) {
+ aShape = aMakeWire.Shape();
+ } else {
+ // build compound
+ TopoDS_Compound aCompound;
+ BRep_Builder aBuilder;
+ aBuilder.MakeCompound( aCompound );
+ TopTools_ListIteratorOfListOfShape anIter( aSectionWiresList );
+ for ( ; anIter.More(); anIter.Next() ) {
+ aBuilder.Add( aCompound, anIter.Value() );
+ }
+ aShape = aCompound;
+ }
+
SetTopShape( aShape );
}