SHAPER 9.16.0
ConstructionPlugin_Point.h
1// Copyright (C) 2014-2026 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
31class GeomAPI_Vertex;
32
37{
38public:
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
348private:
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
static const std::string & REVERSE()
Attribute name for reverse flag.
Definition: ConstructionPlugin_Point.h:155
static const std::string & INTERSECTION_LINE_1()
Attribute name for selected first intersection line.
Definition: ConstructionPlugin_Point.h:232
virtual void initAttributes()
Request for initialization of data model of the feature: adding all attributes.
Definition: ConstructionPlugin_Point.cpp:56
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 & ID()
Point kind.
Definition: ConstructionPlugin_Point.h:58
static const std::string & INTERSECTION_PLANE_2()
Attribute name for selected intersection plane.
Definition: ConstructionPlugin_Point.h:288
static const std::string & COLOR_NAME()
Default color property name.
Definition: ConstructionPlugin_Point.h:50
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 & CREATION_METHOD_BY_INTERSECTION()
Attribute name for creation method.
Definition: ConstructionPlugin_Point.h:93
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 & EDGE()
Attribute name for selected edge.
Definition: ConstructionPlugin_Point.h:113
static const std::string & CREATION_METHOD_BY_DISTANCE_ON_EDGE()
Attribute name for creation method.
Definition: ConstructionPlugin_Point.h:79
static const std::string & INTERSECTION_TYPE_BY_PLANES()
Attribute name for intersection type by planes.
Definition: ConstructionPlugin_Point.h:225
static const std::string & POINT_TO_PROJECT()
Attribute name for point to projection.
Definition: ConstructionPlugin_Point.h:162
ConstructionPlugin_Point()
Use plugin manager for features creation.
Definition: ConstructionPlugin_Point.cpp:44
static const std::string & FACE_FOR_POINT_PROJECTION()
Attribute name for face for point projection.
Definition: ConstructionPlugin_Point.h:197
static const std::string & REVERSE_OFFSET()
Attribute name for reverse offset for the intersection plane.
Definition: ConstructionPlugin_Point.h:274
static const std::string & INTERSECTION_TYPE_BY_LINES()
Attribute name for intersection type by lines.
Definition: ConstructionPlugin_Point.h:211
static const std::string & OFFSET_TYPE_BY_RATIO()
Attribute name for offset type by ratio.
Definition: ConstructionPlugin_Point.h:134
virtual const std::string & getKind()
Returns the kind of a feature.
Definition: ConstructionPlugin_Point.cpp:49
static const std::string & INTERSECTION_PLANE_3()
Attribute name for selected intersection plane.
Definition: ConstructionPlugin_Point.h:295
static const std::string & CREATION_METHOD_BY_GEOMETRICAL_PROPERTY()
Attribute name for creation method.
Definition: ConstructionPlugin_Point.h:100
static const std::string & DEFAULT_COLOR()
Default color for a point.
Definition: ConstructionPlugin_Point.h:43
static const std::string & INTERSECTION_TYPE()
Attribute name for intersection type.
Definition: ConstructionPlugin_Point.h:204
static const std::string & DISTANCE()
Attribute name for distance.
Definition: ConstructionPlugin_Point.h:141
static const std::string & RATIO()
Attribute name for percent flag.
Definition: ConstructionPlugin_Point.h:148
static const std::string & INTERSECTION_LINE()
Attribute name for selected intersection line.
Definition: ConstructionPlugin_Point.h:246
static const std::string & OFFSET()
Attribute name for offset for the intersection plane.
Definition: ConstructionPlugin_Point.h:267
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
static const std::string & INTERSECTION_PLANE_1()
Attribute name for selected intersection plane.
Definition: ConstructionPlugin_Point.h:281
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 & OFFSET_TYPE()
Attribute name for offset type on selected edge.
Definition: ConstructionPlugin_Point.h:120
virtual bool customisePresentation(ResultPtr theResult, AISObjectPtr thePrs)
Customize presentation of the feature.
Definition: ConstructionPlugin_Point.cpp:156
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 & USE_OFFSET()
Attribute name for use offset for the intersection plane.
Definition: ConstructionPlugin_Point.h:260
static const std::string & PROJECTION_TYPE_ON_FACE()
Attribute name for projection type on face.
Definition: ConstructionPlugin_Point.h:183
static const std::string & INTERSECTION_PLANE()
Attribute name for selected intersection plane.
Definition: ConstructionPlugin_Point.h:253
static const std::string & PROJECTION_TYPE_ON_EDGE()
Attribute name for projection type on edge.
Definition: ConstructionPlugin_Point.h:176
static const std::string & OFFSET_TYPE_BY_DISTANCE()
Attribute name for offset type by distance.
Definition: ConstructionPlugin_Point.h:127
static const std::string & CREATION_METHOD_BY_XYZ()
Attribute name for creation method.
Definition: ConstructionPlugin_Point.h:72
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 & 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
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:41