SHAPER 9.16.0
SketchPlugin_Projection.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 SketchPlugin_Projection_H_
21#define SketchPlugin_Projection_H_
22
23#include "SketchPlugin_SketchEntity.h"
24
25class GeomAPI_Curve;
26
32{
33public:
35 inline static const std::string& ID()
36 {
37 static const std::string MY_PROJECTION_ID("SketchProjection");
38 return MY_PROJECTION_ID;
39 }
41 virtual const std::string& getKind()
42 {
43 static std::string MY_KIND = SketchPlugin_Projection::ID();
44 return MY_KIND;
45 }
46
47 static const std::string& EXTERNAL_FEATURE_ID()
48 {
49 static std::string MY_EXT_FEATURE_ID("ExternalFeature");
50 return MY_EXT_FEATURE_ID;
51 }
52
53 static const std::string& PROJECTED_FEATURE_ID()
54 {
55 static std::string MY_PROJ_FEATURE_ID("ProjectedFeature");
56 return MY_PROJ_FEATURE_ID;
57 }
58
59 static const std::string& INCLUDE_INTO_RESULT()
60 {
61 static std::string MY_INCLUDE("IncludeToResult");
62 return MY_INCLUDE;
63 }
64
65 static const std::string& KEEP_REFERENCE_ID()
66 {
67 static std::string ID("keep_reference");
68 return ID;
69 }
70
71 static const std::string& MAKE_FIXED()
72 {
73 static std::string ID("make_fixed");
74 return ID;
75 }
76
77 static const std::string& FIXED_CONSTRAINT_ID()
78 {
79 static std::string ID("fixed_constraint");
80 return ID;
81 }
82
84 virtual bool isFixed()
85 { return true; }
86
89 SKETCHPLUGIN_EXPORT virtual bool canBeDisplayed() const
90 {
91 return false;
92 }
93
95 SKETCHPLUGIN_EXPORT virtual void execute();
96
98 SKETCHPLUGIN_EXPORT virtual void attributeChanged(const std::string& theID);
99
103 SKETCHPLUGIN_EXPORT virtual bool isMacro() const;
104
107
108protected:
110 virtual void initDerivedClassAttributes();
111
113 virtual void initDerivedClassAttributes2();
114
115private:
117 void computeProjection(const std::string& theID);
118
120 bool projectPoint(FeaturePtr& theProjection, const std::shared_ptr<GeomAPI_Pnt>& thePoint);
122 bool projectSegment(FeaturePtr& theProjection, const std::shared_ptr<GeomAPI_Edge>& theEdge);
124 bool projectEdge(FeaturePtr& theProjection, const std::shared_ptr<GeomAPI_Edge>& theEdge);
125
127 bool fillArc(FeaturePtr& theProjection,
128 const std::shared_ptr<GeomAPI_Curve>& theArc,
129 const std::shared_ptr<GeomAPI_Pln>& thePlane,
130 const std::shared_ptr<GeomAPI_Edge>& theOriginalEdge);
132 bool fillCircle(FeaturePtr& theProjection,
133 const std::shared_ptr<GeomAPI_Curve>& theCircle,
134 const std::shared_ptr<GeomAPI_Pln>& thePlane);
136 bool fillEllipse(FeaturePtr& theProjection,
137 const std::shared_ptr<GeomAPI_Curve>& theEllipse,
138 const std::shared_ptr<GeomAPI_Pln>& thePlane);
140 bool fillEllipticArc(FeaturePtr& theProjection,
141 const std::shared_ptr<GeomAPI_Curve>& theEllipticArc,
142 const std::shared_ptr<GeomAPI_Pln>& thePlane,
143 const std::shared_ptr<GeomAPI_Edge>& theOriginalEdge);
145 bool fillBSpline(FeaturePtr& theProjection,
146 const std::shared_ptr<GeomAPI_Curve>& theCurve,
147 const std::shared_ptr<GeomAPI_Pln>& thePlane);
148
155 bool rebuildProjectedFeature(FeaturePtr& theProjection,
156 const std::set<std::string>& theSupportedTypes,
157 const std::string& theRequestedFeature = std::string());
158
159 bool myIsComputing;
160};
161
162#endif
Interface to the generic curve object.
Definition: GeomAPI_Curve.h:34
Feature for creation of external feature as a projection onto the sketch plane.
Definition: SketchPlugin_Projection.h:32
static const std::string & ID()
Projection feature kind.
Definition: SketchPlugin_Projection.h:35
virtual void initDerivedClassAttributes()
Initializes attributes of derived class.
Definition: SketchPlugin_Projection.cpp:77
virtual void attributeChanged(const std::string &theID)
Called on change of any argument-attribute of this object: for external point.
Definition: SketchPlugin_Projection.cpp:143
virtual void initDerivedClassAttributes2()
Initializes attributes of keeping the reference to the original shape.
Definition: SketchPlugin_Projection.cpp:92
SketchPlugin_Projection()
Use plugin manager for features creation.
Definition: SketchPlugin_Projection.cpp:71
virtual const std::string & getKind()
Returns the kind of a feature.
Definition: SketchPlugin_Projection.h:41
virtual void execute()
Creates a new part document if needed.
Definition: SketchPlugin_Projection.cpp:108
virtual bool isFixed()
Returns true because projected feature is always external.
Definition: SketchPlugin_Projection.h:84
virtual bool canBeDisplayed() const
Returns true if the feature and the feature results can be displayed.
Definition: SketchPlugin_Projection.h:89
virtual bool isMacro() const
Returns true if this feature is used as macro: creates other features and then removed.
Definition: SketchPlugin_Projection.cpp:133
Sketch Entity for creation of the new feature in PartSet.
Definition: SketchPlugin_SketchEntity.h:45