]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
SameType object validator
authorvsv <vitaly.smetannikov@opencascade.com>
Thu, 26 Mar 2015 14:12:58 +0000 (17:12 +0300)
committervsv <vitaly.smetannikov@opencascade.com>
Thu, 26 Mar 2015 14:12:58 +0000 (17:12 +0300)
src/PartSet/PartSet_Module.cpp
src/PartSet/PartSet_Validators.cpp
src/PartSet/PartSet_Validators.h
src/SketchPlugin/SketchPlugin_Validators.cpp
src/SketchPlugin/SketchPlugin_Validators.h
src/SketchPlugin/plugin-Sketch.xml

index ad9296bc84645741f6bbe984554fc8624a0c81e3..20cd411016fc4806e4f402843ee6926f4f03479e 100644 (file)
@@ -142,6 +142,9 @@ void PartSet_Module::registerValidators()
 
   aFactory->registerValidator("PartSet_SketchEntityValidator",
                               new PartSet_SketchEntityValidator);
+
+  aFactory->registerValidator("PartSet_SameTypeAttr",
+                              new PartSet_SameTypeAttrValidator);
 }
 
 void PartSet_Module::registerFilters()
index 0e2ca6f20592abd11060e753f01e1273f1cf504a..38bf03582b9d0a1bd9299078d981e3ef1414b3e9 100644 (file)
@@ -20,6 +20,7 @@
 #include <ModelAPI_AttributeReference.h>
 #include <ModelAPI_AttributeSelectionList.h>
 #include <ModelAPI_Object.h>
+#include <ModelAPI_Session.h>
 
 #include <SketchPlugin_Sketch.h>
 
@@ -309,3 +310,32 @@ bool PartSet_SketchEntityValidator::isValid(const AttributePtr& theAttribute,
 
   return isSketchEntities;
 }
+
+
+
+bool PartSet_SameTypeAttrValidator::isValid(
+  const AttributePtr& theAttribute, const std::list<std::string>& theArguments ) const
+{
+  // there is a check whether the feature contains a point and a linear edge or two point values
+  std::string aParamA = theArguments.front();
+  SessionPtr aMgr = ModelAPI_Session::get();
+  ModelAPI_ValidatorsFactory* aFactory = aMgr->validators();
+
+  FeaturePtr aFeature = std::dynamic_pointer_cast<ModelAPI_Feature>(theAttribute->owner());
+  AttributeRefAttrPtr aRefAttr = std::dynamic_pointer_cast<ModelAPI_AttributeRefAttr>(theAttribute);
+  if (!aRefAttr)
+    return false;
+
+  bool isObject = aRefAttr->isObject();
+  ObjectPtr anObject = aRefAttr->object();
+  if (isObject && anObject) {
+    FeaturePtr aRefFea = ModelAPI_Feature::feature(anObject);
+
+    AttributeRefAttrPtr aOtherAttr = aFeature->data()->refattr(aParamA);
+    ObjectPtr aOtherObject = aOtherAttr->object();
+    FeaturePtr aOtherFea = ModelAPI_Feature::feature(aOtherObject);
+    return aRefFea->getKind() == aOtherFea->getKind();
+  }
+  return false;
+}
+
index 02e73de5fd0308875f827dcb3d1c4a14dd1ffdca..45df48dfdab1102d74496d45a53ed8e81c0aff60 100644 (file)
@@ -120,4 +120,21 @@ class PartSet_SketchEntityValidator : public ModelAPI_AttributeValidator
                        const std::list<std::string>& theArguments) const;
 };
 
+/**\class PartSet_SameTypeAttrValidator
+ * \ingroup Validators
+ * \brief Validator for the tangent constraint input.
+ *
+ * It just checks that distance is greater than zero.
+ */
+class PartSet_SameTypeAttrValidator : public ModelAPI_AttributeValidator
+{
+ public:
+  //! returns true if attribute is valid
+  //! \param theAttribute the checked attribute
+  //! \param theArguments arguments of the attribute
+  virtual bool isValid(const AttributePtr& theAttribute,
+                       const std::list<std::string>& theArguments) const;
+};
+
+
 #endif
index b83ca9639847485bffd07ab04fdfc5a2044758b0..a613620761710efe89c4f014b9fc02deff3c3bac 100644 (file)
@@ -135,3 +135,5 @@ bool SketchPlugin_TangentAttrValidator::isValid(
   return false;
 }
 
+
+
index 17797fb8a66efade946f15045dcc2ad4916c10f8..11721fbd1dfd654190b980d2ea91f650b62943dc 100644 (file)
@@ -25,42 +25,6 @@ class SketchPlugin_DistanceAttrValidator : public ModelAPI_AttributeValidator
   virtual bool isValid(const AttributePtr& theAttribute,
                        const std::list<std::string>& theArguments) const;
 };
-//  virtual bool isValid(const AttributePtr& theAttribute,
-//                       const std::list<std::string>& theArguments) const;
-//
-//  //! Returns true if object is good for the feature attribute
-//  virtual bool isValid(const FeaturePtr& theFeature, const std::list<std::string>& theArguments,
-//                       const ObjectPtr& theObject, const GeomShapePtr& theShape) const;
-//
-//  //! Returns true if the attribute is good for the feature attribute
-//  virtual bool isValid(const FeaturePtr& theFeature, const std::list<std::string>& theArguments,
-//                       const AttributePtr& theAttribute) const;
-//};
-
-// commented in v1.0.2, master:
-/**\class SketchPlugin_DifferentObjectsValidator
- * \ingroup Validators
- *
- * Check that there is no same object was already selected in the feature.
- * For an example: to avoid perpendicularity on line and the same line.
- */
-// Use PartSet_DifferentObjectsValidator instead
-//class SketchPlugin_DifferentObjectsValidator : public ModelAPI_RefAttrValidator
-//{
-// public:
-//  //! returns true if attribute is valid
-//  //! \param theAttribute the checked attribute
-//  //! \param theArguments arguments of the attribute
-//  virtual bool isValid(
-//    const AttributePtr& theAttribute, const std::list<std::string>& theArguments) const;
-//  //! Returns true if object is good for the feature attribute
-//  virtual bool isValid(const FeaturePtr& theFeature, const std::list<std::string>& theArguments,
-//                       const ObjectPtr& theObject) const;
-//  //! Returns true if the attribute is good for the feature attribute
-//  virtual bool isValid(const FeaturePtr& theFeature, const std::list<std::string>& theArguments,
-//                       const AttributePtr& theAttribute) const;
-//};
-// ======= end of todo
 
 
 /**\class SketchPlugin_TangentAttrValidator
@@ -79,4 +43,5 @@ class SketchPlugin_TangentAttrValidator : public ModelAPI_AttributeValidator
                        const std::list<std::string>& theArguments) const;
 };
 
+
 #endif
index 353505c82f7fb394e3ba5a8a5e3b80e7e68669d1..391738b8c3145b36b7813a8fbb8b2afc41863889 100644 (file)
         
         <sketch_constraint_shape_selector id="ConstraintEntityB"
             label="Last object" tooltip="Select line, circle or arc" shape_types="edge">
+          <validator id="PartSet_SameTypeAttr" parameters="ConstraintEntityA"/>
+          <validator id="PartSet_DifferentObjects"/>
         </sketch_constraint_shape_selector>
       </feature>