SHAPER  9.12.0
ConstructionPlugin_Point.h
1 // Copyright (C) 2014-2023 CEA, EDF
2 //
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
7 //
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 //
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 //
19 
20 #ifndef ConstructionPlugin_Point_H_
21 #define ConstructionPlugin_Point_H_
22 
23 #include "ConstructionPlugin.h"
24 
25 #include <GeomAPI_ICustomPrs.h>
26 #include <ModelAPI_Feature.h>
27 #include <ModelAPI_Result.h>
28 
29 #include <math.h>
30 
31 class GeomAPI_Vertex;
32 
37 {
38 public:
40  CONSTRUCTIONPLUGIN_EXPORT virtual const std::string& getKind();
41 
43  inline static const std::string& DEFAULT_COLOR()
44  {
45  static const std::string POINT_COLOR("85,85,0");
46  return POINT_COLOR;
47  }
48 
50  inline static const std::string& COLOR_NAME()
51  {
52  static const std::string POINT_COLOR_NAME("construction_point_color");
53  return POINT_COLOR_NAME;
54  }
55 
56 
58  inline static const std::string& ID()
59  {
60  static const std::string CONSTRUCTION_POINT_KIND("Point");
61  return CONSTRUCTION_POINT_KIND;
62  }
63 
65  inline static const std::string& CREATION_METHOD()
66  {
67  static const std::string MY_CREATION_METHOD_ID("creation_method");
68  return MY_CREATION_METHOD_ID;
69  }
70 
72  inline static const std::string& CREATION_METHOD_BY_XYZ()
73  {
74  static const std::string MY_CREATION_METHOD_ID("by_xyz");
75  return MY_CREATION_METHOD_ID;
76  }
77 
79  inline static const std::string& CREATION_METHOD_BY_DISTANCE_ON_EDGE()
80  {
81  static const std::string MY_CREATION_METHOD_ID("by_distance_on_edge");
82  return MY_CREATION_METHOD_ID;
83  }
84 
86  inline static const std::string& CREATION_METHOD_BY_PROJECTION()
87  {
88  static const std::string MY_CREATION_METHOD_ID("by_projection");
89  return MY_CREATION_METHOD_ID;
90  }
91 
93  inline static const std::string& CREATION_METHOD_BY_INTERSECTION()
94  {
95  static const std::string MY_CREATION_METHOD_ID("by_intersection");
96  return MY_CREATION_METHOD_ID;
97  }
98 
100  inline static const std::string& CREATION_METHOD_BY_GEOMETRICAL_PROPERTY()
101  {
102  static const std::string MY_CREATION_METHOD_ID("by_geometrical_property");
103  return MY_CREATION_METHOD_ID;
104  }
105 
106  inline static const std::string& POINT3D()
107  {
108  static const std::string POINT_ATTR("point3d");
109  return POINT_ATTR;
110  }
111 
113  inline static const std::string& EDGE()
114  {
115  static const std::string ATTR_ID("edge");
116  return ATTR_ID;
117  }
118 
120  inline static const std::string& OFFSET_TYPE()
121  {
122  static const std::string ATTR_ID("offset_type");
123  return ATTR_ID;
124  }
125 
127  inline static const std::string& OFFSET_TYPE_BY_DISTANCE()
128  {
129  static const std::string ATTR_ID("offset_type_by_distance");
130  return ATTR_ID;
131  }
132 
134  inline static const std::string& OFFSET_TYPE_BY_RATIO()
135  {
136  static const std::string ATTR_ID("offset_type_by_ratio");
137  return ATTR_ID;
138  }
139 
141  inline static const std::string& DISTANCE()
142  {
143  static const std::string ATTR_ID("distance");
144  return ATTR_ID;
145  }
146 
148  inline static const std::string& RATIO()
149  {
150  static const std::string ATTR_ID("ratio");
151  return ATTR_ID;
152  }
153 
155  inline static const std::string& REVERSE()
156  {
157  static const std::string ATTR_ID("reverse");
158  return ATTR_ID;
159  }
160 
162  inline static const std::string& POINT_TO_PROJECT()
163  {
164  static const std::string ATTR_ID("point_to_project");
165  return ATTR_ID;
166  }
167 
169  inline static const std::string& PROJECTION_TYPE()
170  {
171  static const std::string ATTR_ID("projection_type");
172  return ATTR_ID;
173  }
174 
176  inline static const std::string& PROJECTION_TYPE_ON_EDGE()
177  {
178  static const std::string ATTR_ID("projection_type_on_edge");
179  return ATTR_ID;
180  }
181 
183  inline static const std::string& PROJECTION_TYPE_ON_FACE()
184  {
185  static const std::string ATTR_ID("projection_type_on_face");
186  return ATTR_ID;
187  }
188 
190  inline static const std::string& EDGE_FOR_POINT_PROJECTION()
191  {
192  static const std::string ATTR_ID("edge_for_point_projection");
193  return ATTR_ID;
194  }
195 
197  inline static const std::string& FACE_FOR_POINT_PROJECTION()
198  {
199  static const std::string ATTR_ID("face_for_point_projection");
200  return ATTR_ID;
201  }
202 
204  inline static const std::string& INTERSECTION_TYPE()
205  {
206  static const std::string ATTR_ID("intersection_type");
207  return ATTR_ID;
208  }
209 
211  inline static const std::string& INTERSECTION_TYPE_BY_LINES()
212  {
213  static const std::string MY_CREATION_METHOD_ID("intersection_type_by_lines");
214  return MY_CREATION_METHOD_ID;
215  }
216 
218  inline static const std::string& INTERSECTION_TYPE_BY_LINE_AND_PLANE()
219  {
220  static const std::string MY_CREATION_METHOD_ID("intersection_type_by_line_and_plane");
221  return MY_CREATION_METHOD_ID;
222  }
223 
225  inline static const std::string& INTERSECTION_TYPE_BY_PLANES()
226  {
227  static const std::string MY_CREATION_METHOD_ID("intersection_type_by_planes");
228  return MY_CREATION_METHOD_ID;
229  }
230 
232  inline static const std::string& INTERSECTION_LINE_1()
233  {
234  static const std::string ATTR_ID("intersection_line_1");
235  return ATTR_ID;
236  }
237 
239  inline static const std::string& INTERSECTION_LINE_2()
240  {
241  static const std::string ATTR_ID("intersection_line_2");
242  return ATTR_ID;
243  }
244 
246  inline static const std::string& INTERSECTION_LINE()
247  {
248  static const std::string ATTR_ID("intersection_line");
249  return ATTR_ID;
250  }
251 
253  inline static const std::string& INTERSECTION_PLANE()
254  {
255  static const std::string ATTR_ID("intersection_plane");
256  return ATTR_ID;
257  }
258 
260  inline static const std::string& USE_OFFSET()
261  {
262  static const std::string ATTR_ID("use_offset");
263  return ATTR_ID;
264  }
265 
267  inline static const std::string& OFFSET()
268  {
269  static const std::string ATTR_ID("offset");
270  return ATTR_ID;
271  }
272 
274  inline static const std::string& REVERSE_OFFSET()
275  {
276  static const std::string ATTR_ID("reverse_offset");
277  return ATTR_ID;
278  }
279 
281  inline static const std::string& INTERSECTION_PLANE_1()
282  {
283  static const std::string ATTR_ID("intersection_plane_1");
284  return ATTR_ID;
285  }
286 
288  inline static const std::string& INTERSECTION_PLANE_2()
289  {
290  static const std::string ATTR_ID("intersection_plane_2");
291  return ATTR_ID;
292  }
293 
295  inline static const std::string& INTERSECTION_PLANE_3()
296  {
297  static const std::string ATTR_ID("intersection_plane_3");
298  return ATTR_ID;
299  }
300 
302  inline static const std::string& GEOMETRICAL_PROPERTY_TYPE()
303  {
304  static const std::string ATTR_ID("geometrical_property_type");
305  return ATTR_ID;
306  }
307 
309  inline static const std::string& GEOMETRICAL_PROPERTY_TYPE_BY_CENTER_OF_GRAVITY()
310  {
311  static const std::string PROPERTY_TYPE("geometrical_property_type_by_center_of_gravity");
312  return PROPERTY_TYPE;
313  }
314 
316  inline static const std::string& GEOMETRICAL_PROPERTY_TYPE_BY_CENTER_OF_CIRCLE()
317  {
318  static const std::string PROPERTY_TYPE("geometrical_property_type_by_center_of_circle");
319  return PROPERTY_TYPE;
320  }
321 
323  inline static const std::string& OBJECT_FOR_CENTER_OF_GRAVITY()
324  {
325  static const std::string ATTR_ID("object_for_center_of_gravity");
326  return ATTR_ID;
327  }
328 
330  inline static const std::string& OBJECT_FOR_CENTER_OF_CIRCLE()
331  {
332  static const std::string ATTR_ID("object_for_center_of_circle");
333  return ATTR_ID;
334  }
335 
337  CONSTRUCTIONPLUGIN_EXPORT virtual void execute();
338 
340  CONSTRUCTIONPLUGIN_EXPORT virtual void initAttributes();
341 
344 
346  virtual bool customisePresentation(ResultPtr theResult, AISObjectPtr thePrs);
347 
348 private:
349  std::shared_ptr<GeomAPI_Vertex> createByXYZ();
350  std::shared_ptr<GeomAPI_Vertex> createByDistanceOnEdge();
351  std::shared_ptr<GeomAPI_Vertex> createByProjectionOnEdge();
352  std::shared_ptr<GeomAPI_Vertex> createByProjectionOnFace();
353  std::shared_ptr<GeomAPI_Vertex> createByLinesIntersection();
354  std::list<std::shared_ptr<GeomAPI_Vertex> > createByLineAndPlaneIntersection();
355  std::shared_ptr<GeomAPI_Vertex> createByPlanesIntersection();
356  std::shared_ptr<GeomAPI_Vertex> createByCenterOfGravity();
357  std::shared_ptr<GeomAPI_Vertex> createByCenterOfCircle();
358 };
359 
360 #endif
Feature for creation of the new part in PartSet.
Definition: ConstructionPlugin_Point.h:37
virtual void execute()
Creates a new part document if needed.
Definition: ConstructionPlugin_Point.cpp:93
virtual void initAttributes()
Request for initialization of data model of the feature: adding all attributes.
Definition: ConstructionPlugin_Point.cpp:56
static const std::string & POINT_TO_PROJECT()
Attribute name for point to projection.
Definition: ConstructionPlugin_Point.h:162
static const std::string & RATIO()
Attribute name for percent flag.
Definition: ConstructionPlugin_Point.h:148
static const std::string & INTERSECTION_TYPE_BY_LINES()
Attribute name for intersection type by lines.
Definition: ConstructionPlugin_Point.h:211
static const std::string & COLOR_NAME()
Default color property name.
Definition: ConstructionPlugin_Point.h:50
static const std::string & INTERSECTION_LINE()
Attribute name for selected intersection line.
Definition: ConstructionPlugin_Point.h:246
static const std::string & REVERSE_OFFSET()
Attribute name for reverse offset for the intersection plane.
Definition: ConstructionPlugin_Point.h:274
ConstructionPlugin_Point()
Use plugin manager for features creation.
Definition: ConstructionPlugin_Point.cpp:44
static const std::string & EDGE_FOR_POINT_PROJECTION()
Attribute name for edge for point projection.
Definition: ConstructionPlugin_Point.h:190
static const std::string & INTERSECTION_LINE_2()
Attribute name for selected second intersection line.
Definition: ConstructionPlugin_Point.h:239
static const std::string & OFFSET()
Attribute name for offset for the intersection plane.
Definition: ConstructionPlugin_Point.h:267
static const std::string & INTERSECTION_PLANE_2()
Attribute name for selected intersection plane.
Definition: ConstructionPlugin_Point.h:288
static const std::string & PROJECTION_TYPE()
Attribute name for projection type.
Definition: ConstructionPlugin_Point.h:169
static const std::string & GEOMETRICAL_PROPERTY_TYPE()
Attribute name for property type.
Definition: ConstructionPlugin_Point.h:302
virtual const std::string & getKind()
Returns the kind of a feature.
Definition: ConstructionPlugin_Point.cpp:49
static const std::string & INTERSECTION_PLANE_1()
Attribute name for selected intersection plane.
Definition: ConstructionPlugin_Point.h:281
static const std::string & OFFSET_TYPE()
Attribute name for offset type on selected edge.
Definition: ConstructionPlugin_Point.h:120
static const std::string & GEOMETRICAL_PROPERTY_TYPE_BY_CENTER_OF_GRAVITY()
Attribute name for property type by center of gravity.
Definition: ConstructionPlugin_Point.h:309
static const std::string & DISTANCE()
Attribute name for distance.
Definition: ConstructionPlugin_Point.h:141
static const std::string & OFFSET_TYPE_BY_DISTANCE()
Attribute name for offset type by distance.
Definition: ConstructionPlugin_Point.h:127
static const std::string & INTERSECTION_TYPE_BY_PLANES()
Attribute name for intersection type by planes.
Definition: ConstructionPlugin_Point.h:225
static const std::string & INTERSECTION_TYPE()
Attribute name for intersection type.
Definition: ConstructionPlugin_Point.h:204
static const std::string & REVERSE()
Attribute name for reverse flag.
Definition: ConstructionPlugin_Point.h:155
static const std::string & OBJECT_FOR_CENTER_OF_GRAVITY()
Attribute name for selected object for center of gravity.
Definition: ConstructionPlugin_Point.h:323
static const std::string & USE_OFFSET()
Attribute name for use offset for the intersection plane.
Definition: ConstructionPlugin_Point.h:260
static const std::string & GEOMETRICAL_PROPERTY_TYPE_BY_CENTER_OF_CIRCLE()
Attribute name for property type by center of circle.
Definition: ConstructionPlugin_Point.h:316
static const std::string & ID()
Point kind.
Definition: ConstructionPlugin_Point.h:58
static const std::string & FACE_FOR_POINT_PROJECTION()
Attribute name for face for point projection.
Definition: ConstructionPlugin_Point.h:197
static const std::string & OBJECT_FOR_CENTER_OF_CIRCLE()
Attribute name for selected object for center of cricle.
Definition: ConstructionPlugin_Point.h:330
static const std::string & OFFSET_TYPE_BY_RATIO()
Attribute name for offset type by ratio.
Definition: ConstructionPlugin_Point.h:134
static const std::string & PROJECTION_TYPE_ON_FACE()
Attribute name for projection type on face.
Definition: ConstructionPlugin_Point.h:183
virtual bool customisePresentation(ResultPtr theResult, AISObjectPtr thePrs)
Customize presentation of the feature.
Definition: ConstructionPlugin_Point.cpp:156
static const std::string & INTERSECTION_TYPE_BY_LINE_AND_PLANE()
Attribute name for intersection type by line and plane.
Definition: ConstructionPlugin_Point.h:218
static const std::string & CREATION_METHOD_BY_INTERSECTION()
Attribute name for creation method.
Definition: ConstructionPlugin_Point.h:93
static const std::string & CREATION_METHOD_BY_PROJECTION()
Attribute name for creation method.
Definition: ConstructionPlugin_Point.h:86
static const std::string & CREATION_METHOD()
Attribute name for creation method.
Definition: ConstructionPlugin_Point.h:65
static const std::string & PROJECTION_TYPE_ON_EDGE()
Attribute name for projection type on edge.
Definition: ConstructionPlugin_Point.h:176
static const std::string & INTERSECTION_LINE_1()
Attribute name for selected first intersection line.
Definition: ConstructionPlugin_Point.h:232
static const std::string & DEFAULT_COLOR()
Default color for a point.
Definition: ConstructionPlugin_Point.h:43
static const std::string & INTERSECTION_PLANE_3()
Attribute name for selected intersection plane.
Definition: ConstructionPlugin_Point.h:295
static const std::string & INTERSECTION_PLANE()
Attribute name for selected intersection plane.
Definition: ConstructionPlugin_Point.h:253
static const std::string & CREATION_METHOD_BY_XYZ()
Attribute name for creation method.
Definition: ConstructionPlugin_Point.h:72
static const std::string & CREATION_METHOD_BY_DISTANCE_ON_EDGE()
Attribute name for creation method.
Definition: ConstructionPlugin_Point.h:79
static const std::string & CREATION_METHOD_BY_GEOMETRICAL_PROPERTY()
Attribute name for creation method.
Definition: ConstructionPlugin_Point.h:100
static const std::string & EDGE()
Attribute name for selected edge.
Definition: ConstructionPlugin_Point.h:113
Interface of a class which can provide specific customization of object presentation.
Definition: GeomAPI_ICustomPrs.h:37
Interface to the vertex object.
Definition: GeomAPI_Vertex.h:31
Feature function that represents the particular functionality of this operation.
Definition: ModelAPI_Feature.h:39