1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D -->
3 // File: SketchPlugin_ConstraintRigid.cpp
4 // Created: 13 Oct 2014
5 // Author: Artem ZHIDKOV
7 #include "SketchPlugin_ConstraintRigid.h"
8 #include "SketchPlugin_ConstraintParallel.h"
10 #include <ModelAPI_ResultConstruction.h>
11 #include <Config_PropManager.h>
13 #include <GeomDataAPI_Point2D.h>
14 #include <GeomAlgoAPI_PointBuilder.h>
16 SketchPlugin_ConstraintRigid::SketchPlugin_ConstraintRigid()
20 void SketchPlugin_ConstraintRigid::initAttributes()
22 data()->addAttribute(SketchPlugin_Constraint::ENTITY_A(), ModelAPI_AttributeRefAttr::type());
25 void SketchPlugin_ConstraintRigid::execute()
29 AISObjectPtr SketchPlugin_ConstraintRigid::getAISObject(AISObjectPtr thePrevious)
34 std::shared_ptr<ModelAPI_Data> aData = data();
35 std::shared_ptr<ModelAPI_AttributeRefAttr> anAttr = std::dynamic_pointer_cast<
36 ModelAPI_AttributeRefAttr>(aData->attribute(SketchPlugin_Constraint::ENTITY_A()));
37 if (!anAttr /*|| !anAttr->isObject()*/)
40 std::shared_ptr<GeomAPI_Shape> aShape;
42 if (anAttr->isObject()) {
43 std::shared_ptr<ModelAPI_ResultConstruction> aConst;
44 aConst = std::dynamic_pointer_cast<ModelAPI_ResultConstruction>(anAttr->object());
49 std::shared_ptr<SketchPlugin_Feature> aSketchFea =
50 std::dynamic_pointer_cast<SketchPlugin_Feature>(ModelAPI_Feature::feature(aConst));
51 if (aSketchFea.get() != NULL) {
52 if (aSketchFea->isExternal())
55 aShape = aConst->shape();
58 std::shared_ptr<GeomDataAPI_Point2D> aPointAttr =
59 std::dynamic_pointer_cast<GeomDataAPI_Point2D>(anAttr->attr());
62 std::shared_ptr<GeomAPI_Pnt> aPoint(sketch()->to3D(aPointAttr->x(), aPointAttr->y()));
63 aShape = GeomAlgoAPI_PointBuilder::point(aPoint);
66 AISObjectPtr anAIS = thePrevious;
68 anAIS = AISObjectPtr(new GeomAPI_AISObject);
70 std::shared_ptr<GeomAPI_Pln> aPlane = sketch()->plane();
71 anAIS->createFixed(aShape, aPlane);
73 // Set color from preferences
74 std::vector<int> aRGB = Config_PropManager::color("Visualization", "sketch_parallel_color",
75 SKETCH_CONSTRAINT_COLOR);
77 anAIS->setColor(aRGB[0], aRGB[1], aRGB[2]);