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 ////////////// Attribute validators ////////////////
152 * \ingroup Validators
153 * A validator which checks that objects selected for feature attributes are different (not the same)
155 class PartSet_DifferentObjectsValidator : public ModelAPI_AttributeValidator
157 //! Validator possible error types
165 //! Returns true if the attribute is good for the feature attribute
166 //! \param theAttribute an attribute
167 //! \param theArguments a list of arguments (names of attributes to check)
168 //! \param theError an output error string
169 virtual bool isValid(const AttributePtr& theAttribute,
170 const std::list<std::string>& theArguments,
171 Events_InfoMessage& theError) const;
173 //! Returns error message for the error type
174 //! \param theType a type of error
175 //! \param thEqualObjectInfo an
176 std::string errorMessage(const PartSet_DifferentObjectsValidator::ErrorType& theType,
177 const std::string& thEqualObject, const std::string& theFirstAttribute,
178 const std::string& theSecondAttribute) const;
182 /**\class PartSet_CoincidentAttr
183 * \ingroup Validators
184 * \brief Validator to check whether there is a coincident constraint between
185 * the attribute and attribute of argument.
187 class PartSet_CoincidentAttr : public ModelAPI_AttributeValidator
190 //! returns true if attribute is valid
191 //! \param theAttribute the checked attribute
192 //! \param theArguments arguments of the attribute
193 //! \param theError an output error string
194 virtual bool isValid(const AttributePtr& theAttribute,
195 const std::list<std::string>& theArguments,
196 Events_InfoMessage& theError) const;