return aResultShape;
}
+//=================================================================================================
+void FeaturesPlugin_Boolean::storeResult(
+ const ListOfShape& theObjects,
+ const ListOfShape& theTools,
+ const GeomShapePtr theResultShape,
+ int& theResultIndex,
+ std::shared_ptr<GeomAlgoAPI_MakeShapeList> theMakeShapeList,
+ std::vector<FeaturesPlugin_Tools::ResultBaseAlgo>& theResultBaseAlgoList)
+{
+ if (!theResultShape)
+ return;
+
+ std::shared_ptr<ModelAPI_ResultBody> aResultBody =
+ document()->createBody(data(), theResultIndex);
+
+ FeaturesPlugin_Tools::loadModifiedShapes(aResultBody,
+ theObjects,
+ theTools,
+ theMakeShapeList,
+ theResultShape);
+ setResult(aResultBody, theResultIndex++);
+
+ // merge algorithms
+ FeaturesPlugin_Tools::ResultBaseAlgo aRBA;
+ aRBA.resultBody = aResultBody;
+ aRBA.baseShape = theObjects.front();
+ for (std::vector<FeaturesPlugin_Tools::ResultBaseAlgo>::iterator
+ aRBAIt = theResultBaseAlgoList.begin();
+ aRBAIt != theResultBaseAlgoList.end(); ++aRBAIt) {
+ theMakeShapeList->appendAlgo(aRBAIt->makeShape);
+ }
+ aRBA.makeShape = theMakeShapeList;
+ theResultBaseAlgoList.clear();
+ theResultBaseAlgoList.push_back(aRBA);
+}
+
//=================================================================================================
int FeaturesPlugin_Boolean::version()
{
if (aFoundIndex == myParentIndices.end())
return; // no such shape
- const ListOfShape& aSubs = mySubshapes[aFoundIndex->second].second;
+ theUsed = mySubshapes[aFoundIndex->second].second;
SetOfShape aSubsSet;
- aSubsSet.insert(aSubs.begin(), aSubs.end());
+ aSubsSet.insert(theUsed.begin(), theUsed.end());
for (GeomAPI_ShapeIterator anExp(theCompShape); anExp.more(); anExp.next()) {
GeomShapePtr aCurrent = anExp.current();
if (aSubsSet.find(aCurrent) == aSubsSet.end())
theNotUsed.push_back(aCurrent);
- else
- theUsed.push_back(aCurrent);
}
}