for(TopTools_ListIteratorOfListOfShape anIt(aToShapes); anIt.More(); anIt.Next()) {
GeomShapePtr aGeomSh(new GeomAPI_Shape());
aGeomSh->setImpl(new TopoDS_Shape(anIt.Value()));
+ fixOrientation(aGeomSh);
this->addToShape(aGeomSh);
}
}
for(TopTools_ListIteratorOfListOfShape anIt(aFromShapes); anIt.More(); anIt.Next()) {
GeomShapePtr aGeomSh(new GeomAPI_Shape());
aGeomSh->setImpl(new TopoDS_Shape(anIt.Value()));
+ fixOrientation(aGeomSh);
this->addFromShape(aGeomSh);
}
}
GeomShapePtr aFromShape(new GeomAPI_Shape), aToShape(new GeomAPI_Shape);
aFromShape->setImpl(new TopoDS_Shape(thePrismBuilder->FirstShape(aShape)));
aToShape->setImpl(new TopoDS_Shape(thePrismBuilder->LastShape(aShape)));
+ thePrismAlgo->fixOrientation(aFromShape);
+ thePrismAlgo->fixOrientation(aToShape);
thePrismAlgo->addFromShape(aFromShape);
thePrismAlgo->addToShape(aToShape);
}
if(anIntTools.IsValidPointForFace(aPnt,
theToFace, Precision::Confusion()) == Standard_True) {
aGeomSh->setImpl(new TopoDS_Shape(aShape));
+ thePrismAlgo->fixOrientation(aGeomSh);
thePrismAlgo->addToShape(aGeomSh);
}
if(anIntTools.IsValidPointForFace(aPnt,
theFromFace, Precision::Confusion()) == Standard_True) {
aGeomSh->setImpl(new TopoDS_Shape(aShape));
+ thePrismAlgo->fixOrientation(aGeomSh);
thePrismAlgo->addFromShape(aGeomSh);
}
} else if(theType == TopAbs_EDGE) {
anEdgeCheck.Perform();
if(anEdgeCheck.MaxDistance() < Precision::Confusion()) {
aGeomSh->setImpl(new TopoDS_Shape(aShape));
+ thePrismAlgo->fixOrientation(aGeomSh);
thePrismAlgo->addToShape(aGeomSh);
}
anEdgeCheck.Init(anEdge, theFromFace);
anEdgeCheck.Perform();
if(anEdgeCheck.MaxDistance() < Precision::Confusion()) {
aGeomSh->setImpl(new TopoDS_Shape(aShape));
+ thePrismAlgo->fixOrientation(aGeomSh);
thePrismAlgo->addFromShape(aGeomSh);
}
} else {
for(TopTools_ListIteratorOfListOfShape anIt(aBndShapes); anIt.More(); anIt.Next()) {
GeomShapePtr aShape(new GeomAPI_Shape());
aShape->setImpl(new TopoDS_Shape(anIt.Value()));
+ fixOrientation(aShape);
isFromFaceSet ? this->addFromShape(aShape) : this->addToShape(aShape);
}
}
for(TopTools_ListIteratorOfListOfShape anIt(aBsShapes); anIt.More(); anIt.Next()) {
GeomShapePtr aShape(new GeomAPI_Shape());
aShape->setImpl(new TopoDS_Shape(anIt.Value()));
+ fixOrientation(aShape);
isFromFaceSet ? this->addToShape(aShape) : this->addFromShape(aShape);
}
}
GeomShapePtr aFromShape(new GeomAPI_Shape), aToShape(new GeomAPI_Shape);
aFromShape->setImpl(new TopoDS_Shape(theRevolBuilder->FirstShape(aShape)));
aToShape->setImpl(new TopoDS_Shape(theRevolBuilder->LastShape(aShape)));
+ theRevolutionAlgo->fixOrientation(aFromShape);
+ theRevolutionAlgo->fixOrientation(aToShape);
theRevolutionAlgo->addFromShape(aFromShape);
theRevolutionAlgo->addToShape(aToShape);
}
if(anIntTools.IsValidPointForFace(aPnt, TopoDS::Face(theToFace),
Precision::Confusion()) == Standard_True) {
aGeomSh->setImpl(new TopoDS_Shape(aShape));
+ theRevolutionAlgo->fixOrientation(aGeomSh);
theRevolutionAlgo->addToShape(aGeomSh);
}
if(anIntTools.IsValidPointForFace(aPnt, TopoDS::Face(theFromFace),
Precision::Confusion()) == Standard_True) {
aGeomSh->setImpl(new TopoDS_Shape(aShape));
+ theRevolutionAlgo->fixOrientation(aGeomSh);
theRevolutionAlgo->addFromShape(aGeomSh);
}
} else if(theType == TopAbs_EDGE) {
anEdgeCheck.Perform();
if(anEdgeCheck.MaxDistance() < Precision::Confusion()) {
aGeomSh->setImpl(new TopoDS_Shape(aShape));
+ theRevolutionAlgo->fixOrientation(aGeomSh);
theRevolutionAlgo->addToShape(aGeomSh);
}
anEdgeCheck.Init(anEdge, TopoDS::Face(theFromFace));
anEdgeCheck.Perform();
if(anEdgeCheck.MaxDistance() < Precision::Confusion()) {
aGeomSh->setImpl(new TopoDS_Shape(aShape));
+ theRevolutionAlgo->fixOrientation(aGeomSh);
theRevolutionAlgo->addFromShape(aGeomSh);
}
} else {
Handle(Geom_Surface) aToSurface = BRep_Tool::Surface(TopoDS::Face(theToFace));
if(aFaceSurface == aFromSurface) {
aGeomSh->setImpl(new TopoDS_Shape(aShape));
+ theRevolutionAlgo->fixOrientation(aGeomSh);
theRevolutionAlgo->addFromShape(aGeomSh);
}
if(aFaceSurface == aToSurface) {
aGeomSh->setImpl(new TopoDS_Shape(aShape));
+ theRevolutionAlgo->fixOrientation(aGeomSh);
theRevolutionAlgo->addToShape(aGeomSh);
}
}
if(anIntTools.IsValidPointForFace(aPnt, TopoDS::Face(theRotatedBoundingFace),
Precision::Confusion()) == Standard_True) {
aGeomSh->setImpl(new TopoDS_Shape(aShape));
+ theRevolutionAlgo->fixOrientation(aGeomSh);
theIsFromFaceSet ? theRevolutionAlgo->addFromShape(aGeomSh) :
theRevolutionAlgo->addToShape(aGeomSh);
}
if(anIntTools.IsValidPointForFace(aPnt, TopoDS::Face(theModifiedBaseShape),
Precision::Confusion()) == Standard_True) {
aGeomSh->setImpl(new TopoDS_Shape(aShape));
+ theRevolutionAlgo->fixOrientation(aGeomSh);
theIsFromFaceSet ? theRevolutionAlgo->addToShape(aGeomSh) :
theRevolutionAlgo->addFromShape(aGeomSh);
}
anEdgeCheck.Perform();
if(anEdgeCheck.MaxDistance() < Precision::Confusion()) {
aGeomSh->setImpl(new TopoDS_Shape(aShape));
+ theRevolutionAlgo->fixOrientation(aGeomSh);
theIsFromFaceSet ? theRevolutionAlgo->addFromShape(aGeomSh) :
theRevolutionAlgo->addToShape(aGeomSh);
}
anEdgeCheck.Perform();
if(anEdgeCheck.MaxDistance() < Precision::Confusion()) {
aGeomSh->setImpl(new TopoDS_Shape(aShape));
+ theRevolutionAlgo->fixOrientation(aGeomSh);
theIsFromFaceSet ? theRevolutionAlgo->addToShape(aGeomSh) :
theRevolutionAlgo->addFromShape(aGeomSh);
}
Handle(Geom_Surface) aBaseSurface = BRep_Tool::Surface(TopoDS::Face(theModifiedBaseShape));
if(aFaceSurface == aBoundingSurface) {
aGeomSh->setImpl(new TopoDS_Shape(aShape));
+ theRevolutionAlgo->fixOrientation(aGeomSh);
theIsFromFaceSet ? theRevolutionAlgo->addFromShape(aGeomSh) :
theRevolutionAlgo->addToShape(aGeomSh);
}
if(aFaceSurface == aBaseSurface) {
aGeomSh->setImpl(new TopoDS_Shape(aShape));
+ theRevolutionAlgo->fixOrientation(aGeomSh);
theIsFromFaceSet ? theRevolutionAlgo->addToShape(aGeomSh) :
theRevolutionAlgo->addFromShape(aGeomSh);
}