]> SALOME platform Git repositories - modules/shaper.git/blob - src/PartSet/PartSet_WidgetShapeSelector.cpp
Salome HOME
Issue #273: Add copyright string
[modules/shaper.git] / src / PartSet / PartSet_WidgetShapeSelector.cpp
1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
2
3 // File:        PartSet_WidgetShapeSelector.cpp
4 // Created:     27 Nov 2014
5 // Author:      Vitaly Smetannikov
6
7 #include "PartSet_WidgetShapeSelector.h"
8
9 #include <ModelAPI_AttributeRefAttr.h>
10 #include <PartSet_Tools.h>
11 #include <SketchPlugin_Feature.h>
12
13
14 bool PartSet_WidgetShapeSelector::storeValue() const
15 {
16   if (!mySelectedObject)
17     return false;
18
19   FeaturePtr aSelectedFeature = ModelAPI_Feature::feature(mySelectedObject);
20   if (aSelectedFeature == myFeature)  // In order to avoid selection of the same object
21     return false;
22
23   DataPtr aData = myFeature->data();
24   if (myUseSubShapes && myShape) {
25     AttributePtr aAttr = aData->attribute(attributeID());
26     AttributeRefAttrPtr aRefAttr = 
27       std::dynamic_pointer_cast<ModelAPI_AttributeRefAttr>(aAttr);
28     if (aRefAttr) {
29       TopoDS_Shape aShape = myShape->impl<TopoDS_Shape>();
30       AttributePtr aPntAttr = PartSet_Tools::findAttributeBy2dPoint(mySelectedObject, aShape, mySketch);
31       if (mySelectedObject)
32         aRefAttr->setObject(mySelectedObject);
33       if (aPntAttr)
34         aRefAttr->setAttr(aPntAttr);
35
36       updateObject(myFeature);
37       return true;
38     }
39   }
40   return ModuleBase_WidgetShapeSelector::storeValue();
41 }
42
43 //*********************************************
44 bool PartSet_WidgetConstraintShapeSelector::storeValue() const
45 {
46   FeaturePtr aFeature = ModelAPI_Feature::feature(mySelectedObject);
47   if (aFeature) {
48     std::shared_ptr<SketchPlugin_Feature> aSPFeature = 
49             std::dynamic_pointer_cast<SketchPlugin_Feature>(aFeature);
50     if ((!aSPFeature) && (!myShape->isNull())) {
51       ObjectPtr aObj = PartSet_Tools::createFixedObjectByEdge(myShape->impl<TopoDS_Shape>(),
52                                                               mySelectedObject, mySketch);
53       if (aObj) {
54         PartSet_WidgetConstraintShapeSelector* that = (PartSet_WidgetConstraintShapeSelector*) this;
55         that->mySelectedObject = aObj;
56       }
57     }
58   }
59   return ModuleBase_WidgetShapeSelector::storeValue();
60 }
61