X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSketchPlugin%2FSketchPlugin_Plugin.cpp;h=635583b0c14011a42a5f6d631431eb8442655f2f;hb=3f1a42a51c7de1911c75453ff7134593d7d2c6b1;hp=e92cdb8c47472ae37d3726b24434f64d4743ca87;hpb=ed3006032ada5642cbd0b1152c01170c815526a6;p=modules%2Fshaper.git diff --git a/src/SketchPlugin/SketchPlugin_Plugin.cpp b/src/SketchPlugin/SketchPlugin_Plugin.cpp index e92cdb8c4..635583b0c 100644 --- a/src/SketchPlugin/SketchPlugin_Plugin.cpp +++ b/src/SketchPlugin/SketchPlugin_Plugin.cpp @@ -4,14 +4,19 @@ #include #include #include +#include #include #include +#include +#include #include +#include #include #include #include #include #include +#include #include #include #include @@ -19,6 +24,8 @@ #include #include #include +#include +#include #include #include @@ -59,11 +66,29 @@ SketchPlugin_Plugin::SketchPlugin_Plugin() new SketchPlugin_NotFixedValidator); aFactory->registerValidator("SketchPlugin_EqualAttr", new SketchPlugin_EqualAttrValidator); + aFactory->registerValidator("SketchPlugin_MirrorAttr", + new SketchPlugin_MirrorAttrValidator); + aFactory->registerValidator("SketchPlugin_CoincidenceAttr", + new SketchPlugin_CoincidenceAttrValidator); + aFactory->registerValidator("SketchPlugin_CopyValidator", + new SketchPlugin_CopyValidator); + aFactory->registerValidator("SketchPlugin_SolverErrorValidator", + new SketchPlugin_SolverErrorValidator); + aFactory->registerValidator("SketchPlugin_FilletVertexValidator", + new SketchPlugin_FilletVertexValidator); + aFactory->registerValidator("SketchPlugin_MiddlePointAttr", + new SketchPlugin_MiddlePointAttrValidator); + aFactory->registerValidator("SketchPlugin_ArcTangentPoint", + new SketchPlugin_ArcTangentPointValidator); + aFactory->registerValidator("SketchPlugin_IntersectionValidator", + new SketchPlugin_IntersectionValidator); + aFactory->registerValidator("SketchPlugin_ProjectionValidator", + new SketchPlugin_ProjectionValidator); // register this plugin ModelAPI_Session::get()->registerPlugin(this); - Config_PropManager::registerProp("Visualization", "sketch_entity_color", "Sketch enity color", + Config_PropManager::registerProp("Visualization", "sketch_entity_color", "Sketch entity color", Config_Prop::Color, SKETCH_ENTITY_COLOR); Config_PropManager::registerProp("Visualization", "sketch_external_color", "Sketch external entity color", @@ -72,12 +97,13 @@ SketchPlugin_Plugin::SketchPlugin_Plugin() Config_PropManager::registerProp("Visualization", "sketch_auxiliary_color", "Sketch auxiliary entity color", Config_Prop::Color, SKETCH_AUXILIARY_COLOR); - Config_PropManager::registerProp("Visualization", "sketch_constraint_color", "Sketch constraint color", - Config_Prop::Color, SKETCH_CONSTRAINT_COLOR); - Config_PropManager::registerProp("Visualization", "sketch_dimension_color", "Sketch dimension color", Config_Prop::Color, SKETCH_DIMENSION_COLOR); + Config_PropManager::registerProp("Visualization", "sketch_overconstraint_color", + "Sketch overconstraint color", + Config_Prop::Color, SKETCH_OVERCONSTRAINT_COLOR); + // register sketcher properties #ifdef SET_PLANES_COLOR_IN_PREFERENCES Config_PropManager::registerProp("Visualization", "yz_plane_color", "YZ plane color", @@ -95,14 +121,20 @@ FeaturePtr SketchPlugin_Plugin::createFeature(string theFeatureID) return FeaturePtr(new SketchPlugin_Sketch); } else if (theFeatureID == SketchPlugin_Point::ID()) { return FeaturePtr(new SketchPlugin_Point); + } else if (theFeatureID == SketchPlugin_IntersectionPoint::ID()) { + return FeaturePtr(new SketchPlugin_IntersectionPoint); } else if (theFeatureID == SketchPlugin_Line::ID()) { return FeaturePtr(new SketchPlugin_Line); } else if (theFeatureID == SketchPlugin_Circle::ID()) { return FeaturePtr(new SketchPlugin_Circle); } else if (theFeatureID == SketchPlugin_Arc::ID()) { return FeaturePtr(new SketchPlugin_Arc); + } else if (theFeatureID == SketchPlugin_Projection::ID()) { + return FeaturePtr(new SketchPlugin_Projection); } else if (theFeatureID == SketchPlugin_ConstraintCoincidence::ID()) { return FeaturePtr(new SketchPlugin_ConstraintCoincidence); + } else if (theFeatureID == SketchPlugin_ConstraintCollinear::ID()) { + return FeaturePtr(new SketchPlugin_ConstraintCollinear); } else if (theFeatureID == SketchPlugin_ConstraintDistance::ID()) { return FeaturePtr(new SketchPlugin_ConstraintDistance); } else if (theFeatureID == SketchPlugin_ConstraintLength::ID()) { @@ -123,10 +155,18 @@ FeaturePtr SketchPlugin_Plugin::createFeature(string theFeatureID) return FeaturePtr(new SketchPlugin_ConstraintEqual); } else if (theFeatureID == SketchPlugin_ConstraintTangent::ID()) { return FeaturePtr(new SketchPlugin_ConstraintTangent); + } else if (theFeatureID == SketchPlugin_ConstraintMiddle::ID()) { + return FeaturePtr(new SketchPlugin_ConstraintMiddle); } else if (theFeatureID == SketchPlugin_ConstraintMirror::ID()) { return FeaturePtr(new SketchPlugin_ConstraintMirror); } else if (theFeatureID == SketchPlugin_ConstraintFillet::ID()) { return FeaturePtr(new SketchPlugin_ConstraintFillet); + } else if (theFeatureID == SketchPlugin_MultiTranslation::ID()) { + return FeaturePtr(new SketchPlugin_MultiTranslation); + } else if (theFeatureID == SketchPlugin_MultiRotation::ID()) { + return FeaturePtr(new SketchPlugin_MultiRotation); + } else if (theFeatureID == SketchPlugin_ConstraintAngle::ID()) { + return FeaturePtr(new SketchPlugin_ConstraintAngle); } // feature of such kind is not found return FeaturePtr(); @@ -147,8 +187,8 @@ std::shared_ptr SketchPlugin_Plugin ::getFeaturesState(const std::shared_ptr& theFeature) const { const Events_ID kResponseEvent = Events_Loop::loop()->eventByName(EVENT_FEATURE_STATE_RESPONSE); - std::shared_ptr aMsg = - std::make_shared(kResponseEvent, this); + std::shared_ptr aMsg( + new ModelAPI_FeatureStateMessage(kResponseEvent, this)); bool aHasSketchPlane = false; std::shared_ptr aSketchFeature = @@ -158,13 +198,19 @@ std::shared_ptr SketchPlugin_Plugin if (aData) { std::shared_ptr aNormal = std::dynamic_pointer_cast(aData->attribute(SketchPlugin_Sketch::NORM_ID())); - aHasSketchPlane = aNormal && !(aNormal->x() == 0 && aNormal->y() == 0 && aNormal->z() == 0); + // it is important to check whether the normal attribute is initialized + // because it is possible that normal values are filled when the plane is checked on validity + aHasSketchPlane = aNormal && aNormal->isInitialized() && + !(aNormal->x() == 0 && aNormal->y() == 0 && aNormal->z() == 0); aMsg->setState(SketchPlugin_Point::ID(), aHasSketchPlane); + aMsg->setState(SketchPlugin_IntersectionPoint::ID(), aHasSketchPlane); aMsg->setState(SketchPlugin_Line::ID(), aHasSketchPlane); aMsg->setState(SketchPlugin_Circle::ID(), aHasSketchPlane); aMsg->setState(SketchPlugin_Arc::ID(), aHasSketchPlane); + aMsg->setState(SketchPlugin_Projection::ID(), aHasSketchPlane); aMsg->setState(SketchPlugin_ConstraintCoincidence::ID(), aHasSketchPlane); + aMsg->setState(SketchPlugin_ConstraintCollinear::ID(), aHasSketchPlane); aMsg->setState(SketchPlugin_ConstraintDistance::ID(), aHasSketchPlane); aMsg->setState(SketchPlugin_ConstraintLength::ID(), aHasSketchPlane); aMsg->setState(SketchPlugin_ConstraintParallel::ID(), aHasSketchPlane); @@ -175,8 +221,14 @@ std::shared_ptr SketchPlugin_Plugin aMsg->setState(SketchPlugin_ConstraintVertical::ID(), aHasSketchPlane); aMsg->setState(SketchPlugin_ConstraintEqual::ID(), aHasSketchPlane); aMsg->setState(SketchPlugin_ConstraintTangent::ID(), aHasSketchPlane); + aMsg->setState(SketchPlugin_ConstraintMiddle::ID(), aHasSketchPlane); aMsg->setState(SketchPlugin_ConstraintMirror::ID(), aHasSketchPlane); aMsg->setState(SketchPlugin_ConstraintFillet::ID(), aHasSketchPlane); + aMsg->setState(SketchPlugin_ConstraintAngle::ID(), aHasSketchPlane); + aMsg->setState(SketchPlugin_MultiRotation::ID(), aHasSketchPlane); + aMsg->setState(SketchPlugin_MultiTranslation::ID(), aHasSketchPlane); + // SketchRectangle is a python feature, so its ID is passed just as a string + aMsg->setState("SketchRectangle", aHasSketchPlane); } } return aMsg;