QCAD
Open Source 2D CAD
Loading...
Searching...
No Matches
RPolylineData.h
Go to the documentation of this file.
1
20#ifndef RPOLYLINEDATA_H
21#define RPOLYLINEDATA_H
22
23#include "entity_global.h"
24
25#include "RBox.h"
26#include "REntityData.h"
27#include "RPolyline.h"
28#include "RVector.h"
29
30class RDocument;
31class RLine;
32class RRefPoint;
33
34#ifndef RDEFAULT_MIN1
35#define RDEFAULT_MIN1 -1
36#endif
37
47
48 friend class RPolylineEntity;
49
50protected:
51 RPolylineData(RDocument* document, const RPolylineData& data);
52
53public:
55
59 RPolylineData(RDocument* document);
60
61 RPolylineData(const RPolyline& polyline);
62
63 virtual RS::EntityType getType() const {
64 return RS::EntityPolyline;
65 }
66
67 bool isValid() const {
68 return RPolyline::isValid();
69 }
70 virtual QList<RVector> getEndPoints(const RBox& queryBox = RDEFAULT_RBOX, QList<RObject::Id>* subEntityIds = NULL) const {
71 return REntityData::getEndPoints(queryBox, subEntityIds);
72 }
73 virtual void setZ(double z) {
75 }
76 virtual void to2D() {
78 }
79 virtual RBox getBoundingBox(bool ignoreEmpty=false) const {
81 }
82 virtual QList<RVector> getMiddlePoints(const RBox& queryBox = RDEFAULT_RBOX, QList<RObject::Id>* subEntityIds = NULL) const {
83 return REntityData::getMiddlePoints(queryBox, subEntityIds);
84 }
85 virtual QList<RVector> getCenterPoints(const RBox& queryBox = RDEFAULT_RBOX, QList<RObject::Id>* subEntityIds = NULL) const {
86 return REntityData::getCenterPoints(queryBox, subEntityIds);
87 }
88 virtual QList<RVector> getArcReferencePoints(const RBox& queryBox = RDEFAULT_RBOX) const {
90 }
91 virtual QList<RVector> getPointsWithDistanceToEnd(double distance, int from = RS::FromAny, const RBox& queryBox = RDEFAULT_RBOX, QList<RObject::Id>* subEntityIds = NULL) const {
92 return REntityData::getPointsWithDistanceToEnd(distance, from, queryBox, subEntityIds);
93 }
94 virtual QList<RVector> getIntersectionPoints(const RShape& shape, bool limited = true, const RBox& queryBox = RDEFAULT_RBOX, bool ignoreComplex = true) const {
95 return REntityData::getIntersectionPoints(shape, limited, queryBox, ignoreComplex);
96 }
97 virtual RVector getVectorTo(const RVector& point, bool limited=true, double strictRange = RMAXDOUBLE) const {
98 return REntityData::getVectorTo(point, limited, strictRange);
99 }
100 virtual bool intersectsWith(const RShape& shape) const {
101 return REntityData::intersectsWith(shape);
102 }
103 virtual bool move(const RVector& offset) {
104 return RPolyline::move(offset);
105 }
106 virtual bool rotate(double rotation, const RVector& center = RDEFAULT_RVECTOR) {
107 return RPolyline::rotate(rotation, center);
108 }
109 virtual bool scale(const RVector& scaleFactors, const RVector& center = RDEFAULT_RVECTOR) {
110 return RPolyline::scale(scaleFactors, center);
111 }
112 virtual bool mirror(const RLine& axis) {
113 return RPolyline::mirror(axis);
114 }
115 virtual bool mirror(const RVector& axis1, const RVector& axis2) {
116 return REntityData::mirror(axis1, axis2);
117 }
118 virtual bool flipHorizontal() {
120 }
121 virtual bool flipVertical() {
123 }
124 virtual bool stretch(const RPolyline& area, const RVector& offset) {
125 return RPolyline::stretch(area, offset);
126 }
127 virtual QList<RBox> getBoundingBoxes(bool ignoreEmpty=false) const;
128
129 virtual QList<RRefPoint> getReferencePoints(RS::ProjectionRenderingHint hint = RS::RenderTop) const;
130
131 virtual bool moveReferencePoint(const RVector& referencePoint, const RVector& targetPoint, Qt::KeyboardModifiers modifiers = Qt::NoModifier);
132
133 virtual RShape* castToShape() {
134 return this;
135 }
136
137 virtual double getDistanceTo(const RVector& point, bool limited = true, double range = 0.0, bool draft = false, double strictRange = RMAXDOUBLE) const {
138 if (!hasWidths()) {
139 return REntityData::getDistanceTo(point, limited, range, draft, strictRange);
140 }
141
142 // polylines with custom segment widths:
143 double ret = RPolyline::getDistanceTo(point, limited, strictRange);
144 if (ret>range) {
145 return RNANDOUBLE;
146 }
147 return ret;
148 }
149
151 return *this;
152 }
153
154 void clear() {
156 }
157
158 void normalize(double tolerance = RS::PointTolerance) {
159 RPolyline::normalize(tolerance);
160 }
161
162 QList<RVector> getVertices() const {
163 return RPolyline::getVertices();
164 }
165
166 RVector getVertexAt(int i) const {
168 }
169
170 void setVertexAt(int i, const RVector& v) {
172 }
173
174 void appendVertex(const RVector& vertex, double bulge = 0.0, double w1 = 0.0, double w2 = 0.0) {
175 RPolyline::appendVertex(vertex, bulge, w1, w2);
176 }
177
178 void prependVertex(const RVector& vertex, double bulge = 0.0, double w1 = 0.0, double w2 = 0.0) {
179 RPolyline::prependVertex(vertex, bulge, w1, w2);
180 }
181
182 void insertVertex(int index, const RVector& vertex) {
183 RPolyline::insertVertex(index, vertex);
184 }
185
189
190 void removeVertex(int index) {
192 }
193
194 int countSegments() const {
196 }
197
198 QSharedPointer<RShape> getSegmentAt(int i) const {
200 }
201
202 double getBulgeAt(int i) const {
203 return RPolyline::getBulgeAt(i);
204 }
205
206 void setBulgeAt(int i, double b) {
208 }
209
210 double getVertexAngle(int i, RS::Orientation orientation = RS::UnknownOrientation) const {
211 return RPolyline::getVertexAngle(i, orientation);
212 }
213
214 double getDirection1() const {
216 }
217
218 double getDirection2() const {
220 }
221
222 bool reverse() {
223 return RPolyline::reverse();
224 }
225
227 return RPolyline::getEndPoint();
228 }
229
232 }
233
236 }
237
238 bool relocateStartPoint(double dist) {
240 }
241
242 void setClosed(bool on) {
244 }
245
246 bool isClosed() const {
247 return RPolyline::isClosed();
248 }
249
250 bool isGeometricallyClosed(double tolerance=RS::PointTolerance) const {
251 return RPolyline::isGeometricallyClosed(tolerance);
252 }
253
254 bool autoClose() {
256 }
257
258 bool toLogicallyClosed(double tolerance=RS::PointTolerance) {
259 return RPolyline::toLogicallyClosed(tolerance);
260 }
261
264 }
265
266 RS::Orientation getOrientation(bool implicitelyClosed = false) const {
267 return RPolyline::getOrientation(implicitelyClosed);
268 }
269
270 void setGlobalWidth(double w) {
272 }
273
274 void setStartWidthAt(int i, double w) {
276 }
277
278 double getStartWidthAt(int i) const {
280 }
281
282 void setEndWidthAt(int i, double w) {
284 }
285
286 double getEndWidthAt(int i) const {
288 }
289
290 bool hasWidths() const {
291 return RPolyline::hasWidths();
292 }
293
294 void setStartWidths(const QList<double>& sw) {
296 }
297
298 QList<double> getStartWidths() const {
300 }
301
302 void setEndWidths(const QList<double>& ew) {
304 }
305
306 QList<double> getEndWidths() const {
308 }
309
310 QList<QSharedPointer<RShape> > getExploded(int segments = RDEFAULT_MIN1) const {
311 return RPolyline::getExploded(segments);
312 }
313
317
318 void simplify(double angleTolerance) {
319 RPolyline::simplify(angleTolerance);
320 }
321
322 RPolyline roundAllCorners(double radius) {
323 return RPolyline::roundAllCorners(radius);
324 }
325
326 QList<RVector> verifyTangency(double toleranceMin = RS::AngleTolerance, double toleranceMax = M_PI_4) {
327 return RPolyline::verifyTangency(toleranceMin, toleranceMax);
328 }
329
330 virtual QList<QSharedPointer<RShape> > getShapes(const RBox& queryBox = RDEFAULT_RBOX, bool ignoreComplex = false, bool segment = false, QList<RObject::Id>* entityIds = NULL) const;
331
332 virtual QList<RVector> getIntersectionPoints(
333 const REntityData& other, bool limited = true, bool same = false,
334 const RBox& queryBox = RDEFAULT_RBOX, bool ignoreComplex = true) const;
335
336 void setPolylineGen(bool on) {
337 polylineGen = on;
338 }
339 bool getPolylineGen() const {
340 return polylineGen;
341 }
342 void setElevation(double v);
343 double getElevation() const;
344
345protected:
347};
348
352Q_DECLARE_METATYPE(QSharedPointer<RPolylineData>)
353
354#endif
#define RDEFAULT_RBOX
Definition RBox.h:35
#define RDEFAULT_MIN1
Copyright (c) 2011-2018 by Andrew Mustun.
Definition RExplodable.h:30
#define RNANDOUBLE
Definition RMath.h:74
Q_DECLARE_METATYPE(RMath *)
#define RMAXDOUBLE
Definition RMath.h:66
#define M_PI_4
Definition RMath.h:46
#define RDEFAULT_RVECTOR
Definition RVector.h:38
int i
Copyright (c) 2011-2018 by Andrew Mustun.
Definition autostart.js:32
Represents a box e.g.
Definition RBox.h:46
A graphics document contains and owns entities, layers, user coordinate systems, variables,...
Definition RDocument.h:78
Base class for all entity data classes.
Definition REntityData.h:65
virtual QList< RVector > getCenterPoints(const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition REntityData.cpp:443
virtual QList< RVector > getMiddlePoints(const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition REntityData.cpp:413
virtual QList< RBox > getBoundingBoxes(bool ignoreEmpty=false) const
Definition REntityData.h:160
virtual bool flipHorizontal()
Definition REntityData.cpp:729
virtual double getDistanceTo(const RVector &point, bool limited=true, double range=0.0, bool draft=false, double strictRange=RMAXDOUBLE) const
Definition REntityData.cpp:299
virtual QList< RVector > getIntersectionPoints(const REntityData &other, bool limited=true, bool same=false, const RBox &queryBox=RDEFAULT_RBOX, bool ignoreComplex=true, QList< QPair< RObject::Id, RObject::Id > > *entityIds=NULL) const
Definition REntityData.cpp:601
virtual bool moveReferencePoint(const RVector &referencePoint, const RVector &targetPoint, Qt::KeyboardModifiers modifiers=Qt::NoModifier)=0
Moves the given reference point to the given target point or does nothing if this entity has no refer...
virtual bool intersectsWith(const RShape &shape) const
Definition REntityData.cpp:582
virtual QList< RVector > getPointsWithDistanceToEnd(double distance, int from=RS::FromAny, const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition REntityData.cpp:487
virtual bool flipVertical()
Definition REntityData.cpp:733
virtual bool mirror(const RLine &axis)
Definition REntityData.cpp:715
virtual QList< RVector > getArcReferencePoints(const RBox &queryBox=RDEFAULT_RBOX) const
Definition REntityData.cpp:474
virtual QList< RRefPoint > getReferencePoints(RS::ProjectionRenderingHint hint=RS::RenderTop) const =0
virtual RBox getBoundingBox(bool ignoreEmpty=false) const
Definition REntityData.cpp:313
virtual QList< RVector > getEndPoints(const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition REntityData.cpp:383
virtual QList< QSharedPointer< RShape > > getShapes(const RBox &queryBox=RDEFAULT_RBOX, bool ignoreComplex=false, bool segment=false, QList< RObject::Id > *entityIds=NULL) const
Definition REntityData.h:111
virtual RVector getVectorTo(const RVector &point, bool limited=true, double strictRange=RMAXDOUBLE) const
Definition REntityData.cpp:551
Low-level mathematical representation of a line.
Definition RLine.h:41
Extended painter path with a z-level and a pen.
Definition RPainterPath.h:48
Stores and manages all data that defines the geometry and appearance of a polyline entity.
Definition RPolylineData.h:46
double getDirection2() const
Definition RPolylineData.h:218
void prependVertex(const RVector &vertex, double bulge=0.0, double w1=0.0, double w2=0.0)
Definition RPolylineData.h:178
bool hasWidths() const
Definition RPolylineData.h:290
void insertVertex(int index, const RVector &vertex)
Definition RPolylineData.h:182
bool toLogicallyClosed(double tolerance=RS::PointTolerance)
Definition RPolylineData.h:258
virtual RVector getVectorTo(const RVector &point, bool limited=true, double strictRange=RMAXDOUBLE) const
Definition RPolylineData.h:97
virtual bool flipHorizontal()
Definition RPolylineData.h:118
QList< double > getEndWidths() const
Definition RPolylineData.h:306
virtual bool move(const RVector &offset)
Moves this entity by the given offset.
Definition RPolylineData.h:103
void setClosed(bool on)
Definition RPolylineData.h:242
double getEndWidthAt(int i) const
Definition RPolylineData.h:286
bool relocateStartPoint(const RVector &p)
Definition RPolylineData.h:234
virtual QList< RVector > getArcReferencePoints(const RBox &queryBox=RDEFAULT_RBOX) const
Definition RPolylineData.h:88
virtual QList< RVector > getCenterPoints(const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition RPolylineData.h:85
RPolyline getPolylineShape() const
Definition RPolylineData.h:150
virtual bool mirror(const RVector &axis1, const RVector &axis2)
Definition RPolylineData.h:115
void simplify(double angleTolerance)
Definition RPolylineData.h:318
bool polylineGen
Definition RPolylineData.h:346
virtual QList< RVector > getEndPoints(const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition RPolylineData.h:70
void setStartWidthAt(int i, double w)
Definition RPolylineData.h:274
virtual QList< RVector > getIntersectionPoints(const RShape &shape, bool limited=true, const RBox &queryBox=RDEFAULT_RBOX, bool ignoreComplex=true) const
Definition RPolylineData.h:94
bool isValid() const
Definition RPolylineData.h:67
RPainterPath toPainterPath() const
Definition RPolylineData.h:314
virtual bool rotate(double rotation, const RVector &center=RDEFAULT_RVECTOR)
Definition RPolylineData.h:106
int countSegments() const
Definition RPolylineData.h:194
virtual bool mirror(const RLine &axis)
Definition RPolylineData.h:112
virtual void to2D()
Definition RPolylineData.h:76
bool toLogicallyOpen()
Definition RPolylineData.h:262
QList< double > getStartWidths() const
Definition RPolylineData.h:298
void removeVertex(int index)
Definition RPolylineData.h:190
bool autoClose()
Definition RPolylineData.h:254
bool getPolylineGen() const
Definition RPolylineData.h:339
void appendVertex(const RVector &vertex, double bulge=0.0, double w1=0.0, double w2=0.0)
Definition RPolylineData.h:174
QList< RVector > verifyTangency(double toleranceMin=RS::AngleTolerance, double toleranceMax=M_PI_4)
Definition RPolylineData.h:326
bool relocateStartPoint(double dist)
Definition RPolylineData.h:238
RS::Orientation getOrientation(bool implicitelyClosed=false) const
Definition RPolylineData.h:266
virtual bool intersectsWith(const RShape &shape) const
Definition RPolylineData.h:100
void setPolylineGen(bool on)
Definition RPolylineData.h:336
virtual RBox getBoundingBox(bool ignoreEmpty=false) const
Definition RPolylineData.h:79
virtual RS::EntityType getType() const
Definition RPolylineData.h:63
double getStartWidthAt(int i) const
Definition RPolylineData.h:278
void removeLastVertex()
Definition RPolylineData.h:186
bool reverse()
Definition RPolylineData.h:222
void setEndWidthAt(int i, double w)
Definition RPolylineData.h:282
bool isClosed() const
Definition RPolylineData.h:246
RVector getVertexAt(int i) const
Definition RPolylineData.h:166
bool isGeometricallyClosed(double tolerance=RS::PointTolerance) const
Definition RPolylineData.h:250
virtual bool stretch(const RPolyline &area, const RVector &offset)
Stretches the end points of this entity that are inside area by offset.
Definition RPolylineData.h:124
QSharedPointer< RShape > getSegmentAt(int i) const
Definition RPolylineData.h:198
QList< QSharedPointer< RShape > > getExploded(int segments=RDEFAULT_MIN1) const
Definition RPolylineData.h:310
void setStartWidths(const QList< double > &sw)
Definition RPolylineData.h:294
void setVertexAt(int i, const RVector &v)
Definition RPolylineData.h:170
virtual double getDistanceTo(const RVector &point, bool limited=true, double range=0.0, bool draft=false, double strictRange=RMAXDOUBLE) const
Definition RPolylineData.h:137
void normalize(double tolerance=RS::PointTolerance)
Definition RPolylineData.h:158
void setGlobalWidth(double w)
Definition RPolylineData.h:270
virtual bool flipVertical()
Definition RPolylineData.h:121
virtual QList< RVector > getMiddlePoints(const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition RPolylineData.h:82
virtual bool scale(const RVector &scaleFactors, const RVector &center=RDEFAULT_RVECTOR)
Definition RPolylineData.h:109
RVector getStartPoint() const
Definition RPolylineData.h:230
virtual RShape * castToShape()
Definition RPolylineData.h:133
void setEndWidths(const QList< double > &ew)
Definition RPolylineData.h:302
double getDirection1() const
Definition RPolylineData.h:214
virtual QList< RVector > getPointsWithDistanceToEnd(double distance, int from=RS::FromAny, const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition RPolylineData.h:91
void clear()
Definition RPolylineData.h:154
double getBulgeAt(int i) const
Definition RPolylineData.h:202
RVector getEndPoint() const
Definition RPolylineData.h:226
QList< RVector > getVertices() const
Definition RPolylineData.h:162
void setBulgeAt(int i, double b)
Definition RPolylineData.h:206
RPolyline roundAllCorners(double radius)
Definition RPolylineData.h:322
virtual void setZ(double z)
Definition RPolylineData.h:73
double getVertexAngle(int i, RS::Orientation orientation=RS::UnknownOrientation) const
Definition RPolylineData.h:210
Polyline entity.
Definition RPolylineEntity.h:44
Low-level mathematical representation of an open polyline or closed polyline (= polygon).
Definition RPolyline.h:50
bool relocateStartPoint(const RVector &p)
Relocates the start point of this closed polyline to the given point.
Definition RPolyline.cpp:1074
void clear()
Definition RPolyline.cpp:119
RVector getVertexAt(int i) const
Definition RPolyline.cpp:573
void setClosed(bool on)
Marks the poyline as logically (explicitly) closed.
Definition RPolyline.cpp:777
double getBulgeAt(int i) const
Definition RPolyline.cpp:634
double getEndWidthAt(int i) const
Definition RPolyline.cpp:730
bool toLogicallyOpen()
Converts this logically closed polyline to a locically open, geometrically closed polyline.
Definition RPolyline.cpp:830
void removeLastVertex()
Definition RPolyline.cpp:504
virtual bool reverse()
Definition RPolyline.cpp:1947
virtual bool stretch(const RPolyline &area, const RVector &offset)
Definition RPolyline.cpp:1984
void removeVertex(int index)
Definition RPolyline.cpp:519
void setBulgeAt(int i, double b)
Definition RPolyline.cpp:642
void setEndWidthAt(int i, double w)
Definition RPolyline.cpp:723
QSharedPointer< RShape > getSegmentAt(int i) const
Definition RPolyline.cpp:1199
void appendVertex(const RVector &vertex, double bulge=0.0, double w1=0.0, double w2=0.0)
Definition RPolyline.cpp:394
virtual double getDirection1() const
Definition RPolyline.cpp:1456
RS::Orientation getOrientation(bool implicitelyClosed=false) const
Definition RPolyline.cpp:879
virtual bool mirror(const RLine &axis)
Definition RPolyline.cpp:1936
void insertVertex(int index, const RVector &vertex, double bulgeBefore=0.0, double bulgeAfter=0.0)
Definition RPolyline.cpp:420
void setGlobalWidth(double w)
Definition RPolyline.cpp:699
void setEndWidths(const QList< double > &ew)
Definition RPolyline.cpp:764
bool simplify(double tolerance=RS::PointTolerance)
Simplify by attempting to skip nodes within given tolerance.
Definition RPolyline.cpp:2059
QList< RVector > getVertices() const
Definition RPolyline.cpp:569
virtual bool rotate(double rotation, const RVector &center=RDEFAULT_RVECTOR)
Definition RPolyline.cpp:1868
virtual void setZ(double z)
Definition RPolyline.cpp:85
void setStartWidthAt(int i, double w)
Definition RPolyline.cpp:708
double getStartWidthAt(int i) const
Definition RPolyline.cpp:715
int countSegments() const
Definition RPolyline.cpp:1185
bool toLogicallyClosed(double tolerance=RS::PointTolerance)
Converts this geometrically closed polyline (start == end) to a locically closed polyline.
Definition RPolyline.cpp:803
bool hasWidths() const
Definition RPolyline.cpp:738
QList< RVector > verifyTangency(double toleranceMin=RS::AngleTolerance, double toleranceMax=M_PI_4)
Verifies the tangency of this polyline.
Definition RPolyline.cpp:2071
void setStartWidths(const QList< double > &sw)
Definition RPolyline.cpp:756
virtual bool move(const RVector &offset)
Definition RPolyline.cpp:1861
virtual RVector getEndPoint() const
Definition RPolyline.cpp:1410
RPolyline roundAllCorners(double radius) const
Definition RPolyline.cpp:2311
virtual double getDirection2() const
Definition RPolyline.cpp:1465
bool isGeometricallyClosed(double tolerance=RS::PointTolerance) const
Definition RPolyline.cpp:792
QList< double > getEndWidths() const
Definition RPolyline.cpp:768
virtual QList< QSharedPointer< RShape > > getExploded(int segments=RDEFAULT_MIN1) const
Definition RPolyline.cpp:1137
RPainterPath toPainterPath(bool addOriginalShapes=false) const
Definition RPolyline.cpp:1018
void setVertexAt(int i, const RVector &v)
Definition RPolyline.cpp:604
virtual RVector getStartPoint() const
Definition RPolyline.cpp:1402
void normalize(double tolerance=RS::PointTolerance)
Removes duplicate vertices.
Definition RPolyline.cpp:133
void prependVertex(const RVector &vertex, double bulge=0.0, double w1=0.0, double w2=0.0)
Definition RPolyline.cpp:409
double getVertexAngle(int i, RS::Orientation orientation=RS::UnknownOrientation) const
Definition RPolyline.cpp:669
virtual double getDistanceTo(const RVector &point, bool limited=true, double strictRange=RMAXDOUBLE) const
Definition RPolyline.cpp:1802
virtual bool scale(double scaleFactor, const RVector &center=RDEFAULT_RVECTOR)
Definition RPolyline.cpp:1878
bool isClosed() const
Definition RPolyline.cpp:784
QList< double > getStartWidths() const
Definition RPolyline.cpp:760
Represents a reference point of an entity.
Definition RRefPoint.h:18
Orientation
Definition RS.h:700
@ UnknownOrientation
Definition RS.h:701
@ FromAny
Start or end.
Definition RS.h:374
EntityType
Entity types used for property handling / filtering.
Definition RS.h:227
@ EntityPolyline
Polyline.
Definition RS.h:252
ProjectionRenderingHint
Sets the current rendering hint for exports.
Definition RS.h:293
@ RenderTop
Definition RS.h:294
static const double PointTolerance
Copyright (c) 2011-2018 by Andrew Mustun.
Definition RS.h:920
static const double AngleTolerance
Definition RS.h:921
Interface for geometrical shape classes.
Definition RShape.h:72
virtual bool isValid() const
Definition RShape.h:92
virtual void to2D()
Flattens this shape to the X/Y plane.
Definition RShape.h:158
Represents a 3d vector (x/y/z).
Definition RVector.h:47
#define QCADENTITY_EXPORT
Definition entity_global.h:10
#define NULL
Definition opennurbs_system.h:256