+ ResultPartPtr aResult = std::dynamic_pointer_cast<ModelAPI_ResultPart>(firstResult());
+ if (aResult.get()) {
+ DocumentPtr aDoc = aResult->partDoc();
+ if (aDoc.get() && aDoc->isOpened()) {
+ return aDoc->internalFeature(theIndex);
+ }
+ }
+ return FeaturePtr();
+}
+
+int PartSetPlugin_Part::subFeatureId(const int theIndex) const
+{
+ ResultPartPtr aResult = std::dynamic_pointer_cast<ModelAPI_ResultPart>(firstResult());
+ if (aResult.get()) {
+ DocumentPtr aDoc = aResult->partDoc();
+ if (aDoc.get() && aDoc->isOpened()) {
+ return aDoc->object(ModelAPI_Feature::group(), theIndex)->data()->featureId();
+ }
+ }
+ return 0; // none
+}
+
+bool PartSetPlugin_Part::isSub(ObjectPtr theObject) const
+{
+ ResultPartPtr aResult = std::dynamic_pointer_cast<ModelAPI_ResultPart>(firstResult());
+ if (aResult.get()) {
+ DocumentPtr aDoc = aResult->partDoc();
+ return theObject->document() == aDoc;
+ }
+ return false;
+}
+
+void PartSetPlugin_Part::removeFeature(std::shared_ptr<ModelAPI_Feature> theFeature)
+{
+ ResultPartPtr aResult = std::dynamic_pointer_cast<ModelAPI_ResultPart>(firstResult());
+ if (aResult.get()) {
+ DocumentPtr aDoc = aResult->partDoc();
+ if (aDoc.get() && aDoc->isOpened())
+ aDoc->removeFeature(theFeature);
+ }