1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
3 // File: PartSet_Validators.h
4 // Created: 09 July 2014
5 // Author: Vitaly SMETANNIKOV
7 #ifndef PartSet_Validators_H
8 #define PartSet_Validators_H
12 #include <ModuleBase_SelectionValidator.h>
13 #include <ModuleBase_ISelection.h>
14 #include <ModelAPI_AttributeValidator.h>
21 //! \ingroup Validators
22 //! A class to validate a selection for Distance constraint operation
23 class PartSet_DistanceSelection : public ModuleBase_SelectionValidator
26 PARTSET_EXPORT virtual bool isValid(const ModuleBase_ISelection* theSelection,
27 ModuleBase_Operation* theOperation) const;
30 //! \ingroup Validators
31 //! A class to validate a selection for Length constraint operation
32 class PartSet_LengthSelection : public ModuleBase_SelectionValidator
35 PARTSET_EXPORT virtual bool isValid(const ModuleBase_ISelection* theSelection,
36 ModuleBase_Operation* theOperation) const;
39 //! \ingroup Validators
40 //! A class to validate a selection for Perpendicular constraint operation
41 class PartSet_PerpendicularSelection : public ModuleBase_SelectionValidator
44 PARTSET_EXPORT virtual bool isValid(const ModuleBase_ISelection* theSelection,
45 ModuleBase_Operation* theOperation) const;
48 //! \ingroup Validators
49 //! A class to validate a selection for Parallel constraint operation
50 class PartSet_ParallelSelection : public ModuleBase_SelectionValidator
53 PARTSET_EXPORT virtual bool isValid(const ModuleBase_ISelection* theSelection,
54 ModuleBase_Operation* theOperation) const;
57 //! \ingroup Validators
58 //! A class to validate a selection for Radius constraint operation
59 class PartSet_RadiusSelection : public ModuleBase_SelectionValidator
62 PARTSET_EXPORT virtual bool isValid(const ModuleBase_ISelection* theSelection,
63 ModuleBase_Operation* theOperation) const;
66 //! \ingroup Validators
67 //! A class to validate a selection for Rigid constraint operation
68 class PartSet_RigidSelection : public ModuleBase_SelectionValidator
71 PARTSET_EXPORT virtual bool isValid(const ModuleBase_ISelection* theSelection,
72 ModuleBase_Operation* theOperation) const;
76 //! \ingroup Validators
77 //! A class to validate a selection for coincedence constraint operation
78 class PartSet_CoincidentSelection : public ModuleBase_SelectionValidator
81 PARTSET_EXPORT virtual bool isValid(const ModuleBase_ISelection* theSelection,
82 ModuleBase_Operation* theOperation) const;
85 //! \ingroup Validators
86 //! A class to validate a selection for Horizontal and Vertical constraints operation
87 class PartSet_HVDirSelection : public ModuleBase_SelectionValidator
90 PARTSET_EXPORT virtual bool isValid(const ModuleBase_ISelection* theSelection,
91 ModuleBase_Operation* theOperation) const;
94 //! \ingroup Validators
95 //! A class to validate a selection for Tangential constraints operation
96 class PartSet_TangentSelection : public ModuleBase_SelectionValidator
99 PARTSET_EXPORT virtual bool isValid(const ModuleBase_ISelection* theSelection,
100 ModuleBase_Operation* theOperation) const;
103 //! \ingroup Validators
104 //! A class to validate a selection for Fillet constraints operation
105 class PartSet_FilletSelection : public ModuleBase_SelectionValidator
108 PARTSET_EXPORT virtual bool isValid(const ModuleBase_ISelection* theSelection,
109 ModuleBase_Operation* theOperation) const;
112 //! \ingroup Validators
113 //! A class to validate a selection for Angle constraints operation
114 class PartSet_AngleSelection : public ModuleBase_SelectionValidator
117 PARTSET_EXPORT virtual bool isValid(const ModuleBase_ISelection* theSelection,
118 ModuleBase_Operation* theOperation) const;
121 //! \ingroup Validators
122 //! A class to validate a selection for Equal constraints operation
123 class PartSet_EqualSelection : public ModuleBase_SelectionValidator
126 PARTSET_EXPORT virtual bool isValid(const ModuleBase_ISelection* theSelection,
127 ModuleBase_Operation* theOperation) const;
130 //! \ingroup Validators
131 //! A class to validate a selection for Collinear constraints operation
132 class PartSet_CollinearSelection : public ModuleBase_SelectionValidator
135 PARTSET_EXPORT virtual bool isValid(const ModuleBase_ISelection* theSelection,
136 ModuleBase_Operation* theOperation) const;
139 //! \ingroup Validators
140 //! A class to validate a selection for Middle point constraints operation
141 class PartSet_MiddlePointSelection : public ModuleBase_SelectionValidator
144 PARTSET_EXPORT virtual bool isValid(const ModuleBase_ISelection* theSelection,
145 ModuleBase_Operation* theOperation) const;
148 //! \ingroup Validators
149 //! A class to validate a selection for Middle point constraints operation
150 class PartSet_MultyTranslationSelection : public ModuleBase_SelectionValidator
153 PARTSET_EXPORT virtual bool isValid(const ModuleBase_ISelection* theSelection,
154 ModuleBase_Operation* theOperation) const;
157 //! \ingroup Validators
158 //! A class to validate a selection for Middle point constraints operation
159 class PartSet_SplitSelection : public ModuleBase_SelectionValidator
162 PARTSET_EXPORT virtual bool isValid(const ModuleBase_ISelection* theSelection,
163 ModuleBase_Operation* theOperation) const;
166 //! \ingroup Validators
167 //! A class to validate a selection for Middle point constraints operation
168 class PartSet_ProjectionSelection : public ModuleBase_SelectionValidator
171 PARTSET_EXPORT virtual bool isValid(const ModuleBase_ISelection* theSelection,
172 ModuleBase_Operation* theOperation) const;
175 ////////////// Attribute validators ////////////////
179 * \ingroup Validators
180 * A validator which checks that objects selected for feature attributes are different (not the same)
182 class PartSet_DifferentObjectsValidator : public ModelAPI_AttributeValidator
184 //! Validator possible error types
192 //! Returns true if the attribute is good for the feature attribute
193 //! \param theAttribute an attribute
194 //! \param theArguments a list of arguments (names of attributes to check)
195 //! \param theError an output error string
196 virtual bool isValid(const AttributePtr& theAttribute,
197 const std::list<std::string>& theArguments,
198 Events_InfoMessage& theError) const;
200 //! Returns error message for the error type
201 //! \param theType a type of error
202 //! \param thEqualObjectInfo an
203 std::string errorMessage(const PartSet_DifferentObjectsValidator::ErrorType& theType,
204 const std::string& thEqualObject, const std::string& theFirstAttribute,
205 const std::string& theSecondAttribute) const;
209 /**\class PartSet_CoincidentAttr
210 * \ingroup Validators
211 * \brief Validator to check whether there is a coincident constraint between
212 * the attribute and attribute of argument.
214 class PartSet_CoincidentAttr : public ModelAPI_AttributeValidator
217 //! returns true if attribute is valid
218 //! \param theAttribute the checked attribute
219 //! \param theArguments arguments of the attribute
220 //! \param theError an output error string
221 virtual bool isValid(const AttributePtr& theAttribute,
222 const std::list<std::string>& theArguments,
223 Events_InfoMessage& theError) const;