QCAD
Open Source 2D CAD
Loading...
Searching...
No Matches
RLeaderData.h
Go to the documentation of this file.
1
20#ifndef RLEADERDATA_H
21#define RLEADERDATA_H
22
23#include "entity_global.h"
24
25#include "REntityData.h"
26#include "RPolyline.h"
27#include "RVector.h"
28
29class RDocument;
30class RLine;
31class RTriangle;
32class RRefPoint;
33class RPolyline;
34
43 friend class RLeaderEntity;
44
45protected:
46 RLeaderData(RDocument* document, const RLeaderData& data);
47
48public:
50 RLeaderData(const RPolyline& polyline, bool arrowHead);
51
52 virtual RS::EntityType getType() const {
53 return RS::EntityLeader;
54 }
55 virtual RShape* castToShape() {
56 return this;
57 }
58
59 bool isValid() const {
60 return RPolyline::isValid();
61 }
62 virtual QList<RVector> getEndPoints(const RBox& queryBox = RDEFAULT_RBOX, QList<RObject::Id>* subEntityIds = NULL) const {
63 return REntityData::getEndPoints(queryBox, subEntityIds);
64 }
65 virtual void setZ(double z) {
67 }
68 virtual void to2D() {
70 }
71 virtual bool reverse() {
72 return RPolyline::reverse();
73 }
74 virtual RBox getBoundingBox(bool ignoreEmpty=false) const {
76 }
77 virtual QList<RVector> getMiddlePoints(const RBox& queryBox = RDEFAULT_RBOX, QList<RObject::Id>* subEntityIds = NULL) const {
78 return REntityData::getMiddlePoints(queryBox, subEntityIds);
79 }
80 virtual QList<RVector> getCenterPoints(const RBox& queryBox = RDEFAULT_RBOX, QList<RObject::Id>* subEntityIds = NULL) const {
81 return REntityData::getCenterPoints(queryBox, subEntityIds);
82 }
83 virtual QList<RVector> getArcReferencePoints(const RBox& queryBox = RDEFAULT_RBOX) const {
85 }
86 virtual QList<RVector> getPointsWithDistanceToEnd(double distance, int from = RS::FromAny, const RBox& queryBox = RDEFAULT_RBOX, QList<RObject::Id>* subEntityIds = NULL) const {
87 return REntityData::getPointsWithDistanceToEnd(distance, from, queryBox, subEntityIds);
88 }
89 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 {
90 return REntityData::getIntersectionPoints(other, limited, same, queryBox, ignoreComplex, entityIds);
91 }
92 virtual QList<RVector> getIntersectionPoints(const RShape& shape, bool limited = true, const RBox& queryBox = RDEFAULT_RBOX, bool ignoreComplex = true) const {
93 return REntityData::getIntersectionPoints(shape, limited, queryBox, ignoreComplex);
94 }
95 virtual RVector getVectorTo(const RVector& point, bool limited=true, double strictRange = RMAXDOUBLE) const {
96 return REntityData::getVectorTo(point, limited, strictRange);
97 }
98 virtual double getDistanceTo(const RVector& point, bool limited = true, double range = 0.0, bool draft = false, double strictRange = RMAXDOUBLE) const {
99 return REntityData::getDistanceTo(point, limited, range, draft, strictRange);
100 }
101 virtual bool intersectsWith(const RShape& shape) const {
102 return REntityData::intersectsWith(shape);
103 }
104 virtual bool move(const RVector& offset) {
105 return RPolyline::move(offset);
106 }
107 virtual bool rotate(double rotation, const RVector& center = RDEFAULT_RVECTOR) {
108 return RPolyline::rotate(rotation, center);
109 }
110 virtual bool mirror(const RLine& axis) {
111 return RPolyline::mirror(axis);
112 }
113 virtual bool mirror(const RVector& axis1, const RVector& axis2) {
114 return REntityData::mirror(axis1, axis2);
115 }
116 virtual bool flipHorizontal() {
118 }
119 virtual bool flipVertical() {
121 }
122
123 double getDimasz(bool scale = true) const;
124
125 void setDimasz(double v);
126
127 double getDimscale() const;
128 void setDimscale(double f);
129
130 virtual void scaleVisualProperties(double scaleFactor);
131
132 void setArrowHead(bool on);
133 bool hasArrowHead() const {
134 return arrowHead;
135 }
136
137 bool canHaveArrowHead() const;
138 bool updateArrowHead() const;
139
140// void setPolyline(const RPolyline& polyline) {
141// *((RPolyline*)this) = polyline;
142// }
143
145 return RPolyline::getEndPoint();
146 }
147
150 }
151
152 int countVertices() const {
154 }
155
156 int countSegments() const {
158 }
159
160 void appendVertex(const RVector& vertex) {
162 }
163
164 bool isSplineShaped() const {
165 return splineShaped;
166 }
167
168 void setSplineShaped(bool on) {
169 splineShaped = on;
170 }
171
172 virtual QList<RRefPoint> getReferencePoints(RS::ProjectionRenderingHint hint = RS::RenderTop) const;
173
174 virtual bool moveReferencePoint(const RVector& referencePoint, const RVector& targetPoint, Qt::KeyboardModifiers modifiers = Qt::NoModifier);
175
176 QList<QSharedPointer<RShape> > getExploded(int segments = RDEFAULT_MIN1) const {
177 return RPolyline::getExploded(segments);
178 }
179
180 virtual bool scale(const RVector& scaleFactors, const RVector& center);
181 virtual bool stretch(const RPolyline& area, const RVector& offset);
182
183 virtual QList<QSharedPointer<RShape> > getShapes(const RBox& queryBox = RDEFAULT_RBOX, bool ignoreComplex = false, bool segment = false, QList<RObject::Id>* entityIds = NULL) const;
184 RTriangle getArrowShape() const;
185
186 RObject::Id getDimLeaderBlockId() const;
187 void setDimLeaderBlockId(RObject::Id id);
188
189 virtual void update() const;
190
192 dimscale = -1.0;
193 dimasz = -1.0;
194 update();
195 }
196
197private:
199 mutable bool arrowHead;
201 double dimasz;
203 double dimscale;
208};
209
213Q_DECLARE_METATYPE(QSharedPointer<RLeaderData>)
214
215#endif
#define RDEFAULT_RBOX
Definition RBox.h:35
#define RDEFAULT_MIN1
Copyright (c) 2011-2018 by Andrew Mustun.
Definition RExplodable.h:30
Q_DECLARE_METATYPE(RMath *)
#define RMAXDOUBLE
Definition RMath.h:66
#define RDEFAULT_RVECTOR
Definition RVector.h:38
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 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 stretch(const RPolyline &area, const RVector &offset)
Stretches the end points of this entity that are inside area by offset.
Definition REntityData.cpp:740
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 void scaleVisualProperties(double scaleFactor)
Definition REntityData.cpp:709
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 void update() const
Entities can reimplement this function to invalidate any internal cache (mark the entity as dirty).
Definition REntityData.h:415
virtual QList< RVector > getEndPoints(const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition REntityData.cpp:383
virtual bool scale(const RVector &scaleFactors, const RVector &center=RDEFAULT_RVECTOR)
Definition REntityData.cpp:695
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
Leader entity data class.
Definition RLeaderData.h:42
void setSplineShaped(bool on)
Definition RLeaderData.h:168
virtual QList< RVector > getMiddlePoints(const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition RLeaderData.h:77
virtual bool move(const RVector &offset)
Moves this entity by the given offset.
Definition RLeaderData.h:104
virtual bool intersectsWith(const RShape &shape) const
Definition RLeaderData.h:101
virtual QList< RVector > getArcReferencePoints(const RBox &queryBox=RDEFAULT_RBOX) const
Definition RLeaderData.h:83
virtual RVector getVectorTo(const RVector &point, bool limited=true, double strictRange=RMAXDOUBLE) const
Definition RLeaderData.h:95
virtual RShape * castToShape()
Definition RLeaderData.h:55
RObject::Id dimLeaderBlockId
Block to use instead of arrow.
Definition RLeaderData.h:205
int countVertices() const
Definition RLeaderData.h:152
virtual QList< RVector > getCenterPoints(const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition RLeaderData.h:80
virtual bool mirror(const RLine &axis)
Definition RLeaderData.h:110
virtual void setZ(double z)
Definition RLeaderData.h:65
virtual bool flipHorizontal()
Definition RLeaderData.h:116
int countSegments() const
Definition RLeaderData.h:156
double dimasz
Arrow size.
Definition RLeaderData.h:201
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 RLeaderData.h:89
virtual double getDistanceTo(const RVector &point, bool limited=true, double range=0.0, bool draft=false, double strictRange=RMAXDOUBLE) const
Definition RLeaderData.h:98
virtual QList< RVector > getPointsWithDistanceToEnd(double distance, int from=RS::FromAny, const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition RLeaderData.h:86
bool isValid() const
Definition RLeaderData.h:59
virtual bool flipVertical()
Definition RLeaderData.h:119
QList< QSharedPointer< RShape > > getExploded(int segments=RDEFAULT_MIN1) const
Definition RLeaderData.h:176
virtual RBox getBoundingBox(bool ignoreEmpty=false) const
Definition RLeaderData.h:74
bool splineShaped
Spline shaped leader.
Definition RLeaderData.h:207
bool isSplineShaped() const
Definition RLeaderData.h:164
bool arrowHead
Arrow head on / off.
Definition RLeaderData.h:199
virtual RS::EntityType getType() const
Definition RLeaderData.h:52
virtual bool mirror(const RVector &axis1, const RVector &axis2)
Definition RLeaderData.h:113
bool hasArrowHead() const
Definition RLeaderData.h:133
void clearStyleOverrides()
Definition RLeaderData.h:191
RVector getStartPoint() const
Definition RLeaderData.h:148
void appendVertex(const RVector &vertex)
Definition RLeaderData.h:160
virtual QList< RVector > getEndPoints(const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition RLeaderData.h:62
virtual void to2D()
Definition RLeaderData.h:68
virtual bool reverse()
Definition RLeaderData.h:71
double dimscale
Dimension scale.
Definition RLeaderData.h:203
RVector getEndPoint() const
Definition RLeaderData.h:144
virtual bool rotate(double rotation, const RVector &center=RDEFAULT_RVECTOR)
Definition RLeaderData.h:107
virtual QList< RVector > getIntersectionPoints(const RShape &shape, bool limited=true, const RBox &queryBox=RDEFAULT_RBOX, bool ignoreComplex=true) const
Definition RLeaderData.h:92
Leader entity class.
Definition RLeaderEntity.h:38
Low-level mathematical representation of a line.
Definition RLine.h:41
int Id
Definition RObject.h:69
Low-level mathematical representation of an open polyline or closed polyline (= polygon).
Definition RPolyline.h:50
virtual bool reverse()
Definition RPolyline.cpp:1947
void appendVertex(const RVector &vertex, double bulge=0.0, double w1=0.0, double w2=0.0)
Definition RPolyline.cpp:394
virtual bool mirror(const RLine &axis)
Definition RPolyline.cpp:1936
int countVertices() const
Definition RPolyline.cpp:622
virtual bool rotate(double rotation, const RVector &center=RDEFAULT_RVECTOR)
Definition RPolyline.cpp:1868
virtual void setZ(double z)
Definition RPolyline.cpp:85
int countSegments() const
Definition RPolyline.cpp:1185
virtual bool move(const RVector &offset)
Definition RPolyline.cpp:1861
virtual RVector getEndPoint() const
Definition RPolyline.cpp:1410
virtual QList< QSharedPointer< RShape > > getExploded(int segments=RDEFAULT_MIN1) const
Definition RPolyline.cpp:1137
virtual RVector getStartPoint() const
Definition RPolyline.cpp:1402
Represents a reference point of an entity.
Definition RRefPoint.h:18
@ FromAny
Start or end.
Definition RS.h:374
EntityType
Entity types used for property handling / filtering.
Definition RS.h:227
@ EntityLeader
Leader.
Definition RS.h:275
ProjectionRenderingHint
Sets the current rendering hint for exports.
Definition RS.h:293
@ RenderTop
Definition RS.h:294
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
Low-level mathematical representation of a triangle.
Definition RTriangle.h:49
Represents a 3d vector (x/y/z).
Definition RVector.h:47
#define QCADENTITY_EXPORT
Definition entity_global.h:10
void scale(void e, void factor, void focusPoint)
Scales the given entity or shape by the given factor with the given focus point.
Definition simple_modify.js:15
#define NULL
Definition opennurbs_system.h:256