+ if (theObject.get()) {
+ ResultPtr aResult = std::dynamic_pointer_cast<ModelAPI_Result>(theObject);
+ if (aResult.get()) {
+ ResultCompSolidPtr aCompsolidResult = std::dynamic_pointer_cast<ModelAPI_ResultCompSolid>(theObject);
+ if (aCompsolidResult.get()) {
+ if (aCompsolidResult->numberOfSubs() > 0) {
+ for(int i = 0; i < aCompsolidResult->numberOfSubs(); i++) {
+ ResultPtr aSubResult = aCompsolidResult->subResult(i);
+ if (aSubResult.get()) {
+ GeomShapePtr aShape;
+ addValue(aSubResult, aShape, theFeature, theWorkshop, theObjectShapes);
+ }
+ }
+ return;
+ }
+ }
+#ifdef DEBUG_HIDE_COPY_ATTRIBUTE
+ else {
+ FeaturePtr aFeature = ModelAPI_Feature::feature(theObject);
+ if (aFeature.get()) {
+ AttributeBooleanPtr aCopyAttr = aFeature->data()->boolean(SketchPlugin_SketchEntity::COPY_ID());
+ if (aCopyAttr.get()) {
+ bool isCopy = aCopyAttr->value();
+ if (isCopy)
+ return;
+ }
+ }
+ }
+#endif
+ }
+
+ GeomShapePtr aShape = theShape;
+ if (!aShape.get()) {
+ ResultPtr aResult = std::dynamic_pointer_cast<ModelAPI_Result>(theObject);
+ if (aResult.get())
+ aShape = aResult->shape();
+ }
+ if (!isSubObject(theObject, theFeature))
+ appendShapeIfVisible(theWorkshop, theObject, aShape, theObjectShapes);
+ }
+}
+
+void PartSet_OperationPrs::appendShapeIfVisible(ModuleBase_IWorkshop* theWorkshop,
+ const ObjectPtr& theObject,
+ GeomShapePtr theGeomShape,
+ QMap<ObjectPtr, QList<GeomShapePtr> >& theObjectShapes)
+{
+ XGUI_Displayer* aDisplayer = XGUI_Tools::workshop(theWorkshop)->displayer();
+ if (XGUI_Displayer::isVisible(aDisplayer, theObject)) {
+ if (theGeomShape.get()) {
+ if (theObjectShapes.contains(theObject))
+ theObjectShapes[theObject].append(theGeomShape);
+ else {
+ QList<GeomShapePtr> aShapes;
+ aShapes.append(theGeomShape);
+ theObjectShapes[theObject] = aShapes;
+ }
+ } else {
+ #ifdef DEBUG_EMPTY_SHAPE
+ qDebug(QString("Empty shape in result, result: %1")
+ .arg(ModuleBase_Tools::objectInfo(theObject)).toStdString().c_str());
+ #endif
+ }