1 // File: PartSet_WidgetShapeSelector.cpp
2 // Created: 27 Nov 2014
3 // Author: Vitaly Smetannikov
5 #include "PartSet_WidgetShapeSelector.h"
7 #include <ModelAPI_AttributeRefAttr.h>
8 #include <PartSet_Tools.h>
9 #include <SketchPlugin_Feature.h>
12 bool PartSet_WidgetShapeSelector::storeValue() const
14 if (!mySelectedObject)
17 FeaturePtr aSelectedFeature = ModelAPI_Feature::feature(mySelectedObject);
18 if (aSelectedFeature == myFeature) // In order to avoid selection of the same object
21 DataPtr aData = myFeature->data();
22 if (myUseSubShapes && myShape) {
23 AttributePtr aAttr = aData->attribute(attributeID());
24 AttributeRefAttrPtr aRefAttr =
25 std::dynamic_pointer_cast<ModelAPI_AttributeRefAttr>(aAttr);
27 TopoDS_Shape aShape = myShape->impl<TopoDS_Shape>();
28 AttributePtr aPntAttr = PartSet_Tools::findAttributeBy2dPoint(mySelectedObject, aShape, mySketch);
30 aRefAttr->setObject(mySelectedObject);
32 aRefAttr->setAttr(aPntAttr);
34 updateObject(myFeature);
38 return ModuleBase_WidgetShapeSelector::storeValue();
41 //*********************************************
42 bool PartSet_WidgetConstraintShapeSelector::storeValue() const
44 FeaturePtr aFeature = ModelAPI_Feature::feature(mySelectedObject);
46 std::shared_ptr<SketchPlugin_Feature> aSPFeature =
47 std::dynamic_pointer_cast<SketchPlugin_Feature>(aFeature);
48 if ((!aSPFeature) && (!myShape->isNull())) {
49 ObjectPtr aObj = PartSet_Tools::createFixedObjectByEdge(myShape->impl<TopoDS_Shape>(),
50 mySelectedObject, mySketch);
52 PartSet_WidgetConstraintShapeSelector* that = (PartSet_WidgetConstraintShapeSelector*) this;
53 that->mySelectedObject = aObj;
57 return ModuleBase_WidgetShapeSelector::storeValue();