QCAD
Open Source 2D CAD
Loading...
Searching...
No Matches
RXLineData.h
Go to the documentation of this file.
1
20#ifndef RXLINEDATA_H
21#define RXLINEDATA_H
22
23#include "entity_global.h"
24
25#include "RBox.h"
26#include "REntityData.h"
27#include "RVector.h"
28#include "RXLine.h"
29
30class RDocument;
31class RLine;
32class RRefPoint;
33class RPolyline;
34
44
45 friend class RXLineEntity;
46
47protected:
48 RXLineData(RDocument* document, const RXLineData& data);
49
50public:
51 RXLineData();
52 RXLineData(const RXLine& line);
53 RXLineData(const RVector& basePoint, const RVector& dir);
54
55 virtual RS::EntityType getType() const {
56 return RS::EntityXLine;
57 }
59 return *this;
60 }
61
62 bool isValid() const {
63 return RXLine::isValid();
64 }
65 virtual QList<RVector> getEndPoints(const RBox& queryBox = RDEFAULT_RBOX, QList<RObject::Id>* subEntityIds = NULL) const {
66 return REntityData::getEndPoints(queryBox, subEntityIds);
67 }
68 virtual void setZ(double z) {
69 RXLine::setZ(z);
70 }
71 virtual void to2D() {
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 RXLine::move(offset);
106 }
107 virtual bool rotate(double rotation, const RVector& center = RDEFAULT_RVECTOR) {
108 return RXLine::rotate(rotation, center);
109 }
110 virtual bool scale(const RVector& scaleFactors, const RVector& center = RDEFAULT_RVECTOR) {
111 return RXLine::scale(scaleFactors, center);
112 }
113 virtual bool mirror(const RLine& axis) {
114 return RXLine::mirror(axis);
115 }
116 virtual bool mirror(const RVector& axis1, const RVector& axis2) {
117 return REntityData::mirror(axis1, axis2);
118 }
119 virtual bool flipHorizontal() {
121 }
122 virtual bool flipVertical() {
124 }
125 virtual bool stretch(const RPolyline& area, const RVector& offset) {
126 return RXLine::stretch(area, offset);
127 }
128
130 return RXLine::getBasePoint();
131 }
135 double getAngle() const {
136 return RXLine::getAngle();
137 }
138
139 bool hasFixedAngle() const {
140 return fixedAngle;
141 }
142
143 void setFixedAngle(bool on) {
144 fixedAngle = on;
145 }
146
147 bool reverse() {
148 return RXLine::reverse();
149 }
150
151 RS::Ending getTrimEnd(const RVector& trimPoint, const RVector& clickPoint) {
152 return RXLine::getTrimEnd(trimPoint, clickPoint);
153 }
154 bool trimStartPoint(const RVector& trimPoint, const RVector& clickPoint = RVector::invalid, bool extend = false) {
155 return RXLine::trimStartPoint(trimPoint, clickPoint, extend);
156 }
157 bool trimEndPoint(const RVector& trimPoint, const RVector& clickPoint = RVector::invalid, bool extend = false) {
158 return RXLine::trimEndPoint(trimPoint, clickPoint, extend);
159 }
160
161 RS::Side getSideOfPoint(const RVector& point) const {
162 return RXLine::getSideOfPoint(point);
163 }
164
165 virtual QList<RRefPoint> getReferencePoints(RS::ProjectionRenderingHint hint = RS::RenderTop) const;
166
167 virtual bool moveReferencePoint(const RVector& referencePoint, const RVector& targetPoint, Qt::KeyboardModifiers modifiers = Qt::NoModifier);
168
169 virtual RShape* castToShape() {
170 return this;
171 }
172
173 virtual QList<QSharedPointer<RShape> > getShapes(const RBox& queryBox = RDEFAULT_RBOX, bool ignoreComplex = false, bool segment = false, QList<RObject::Id>* entityIds = NULL) const {
174 Q_UNUSED(queryBox)
175 Q_UNUSED(ignoreComplex)
176 Q_UNUSED(segment)
177
178 return QList<QSharedPointer<RShape> >() <<
179 QSharedPointer<RShape>(new RXLine(*this));
180 }
181
182private:
184};
185
189Q_DECLARE_METATYPE(QSharedPointer<RXLineData>)
190
191#endif
#define RDEFAULT_RBOX
Definition RBox.h:35
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 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 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
Low-level mathematical representation of an open polyline or closed polyline (= polygon).
Definition RPolyline.h:50
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
@ EntityXLine
XLine.
Definition RS.h:250
ProjectionRenderingHint
Sets the current rendering hint for exports.
Definition RS.h:293
@ RenderTop
Definition RS.h:294
Side
Side used for side of a point relative to an entity (right hand or left hand side)
Definition RS.h:313
Ending
Entity ending.
Definition RS.h:323
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
static const RVector invalid
invalid vector
Definition RVector.h:335
Stores and manages all data that defines the geometry and appearance of an infinite line (xline) enti...
Definition RXLineData.h:43
virtual double getDistanceTo(const RVector &point, bool limited=true, double range=0.0, bool draft=false, double strictRange=RMAXDOUBLE) const
Definition RXLineData.h:98
virtual QList< RVector > getMiddlePoints(const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition RXLineData.h:77
bool trimStartPoint(const RVector &trimPoint, const RVector &clickPoint=RVector::invalid, bool extend=false)
Definition RXLineData.h:154
RS::Ending getTrimEnd(const RVector &trimPoint, const RVector &clickPoint)
Definition RXLineData.h:151
virtual bool scale(const RVector &scaleFactors, const RVector &center=RDEFAULT_RVECTOR)
Definition RXLineData.h:110
RVector getBasePoint() const
Definition RXLineData.h:129
virtual void to2D()
Definition RXLineData.h:71
virtual bool mirror(const RLine &axis)
Definition RXLineData.h:113
virtual bool rotate(double rotation, const RVector &center=RDEFAULT_RVECTOR)
Definition RXLineData.h:107
bool isValid() const
Definition RXLineData.h:62
virtual bool move(const RVector &offset)
Moves this entity by the given offset.
Definition RXLineData.h:104
virtual bool mirror(const RVector &axis1, const RVector &axis2)
Definition RXLineData.h:116
virtual QList< RVector > getCenterPoints(const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition RXLineData.h:80
RS::Side getSideOfPoint(const RVector &point) const
Definition RXLineData.h:161
RXLine getXLine()
Definition RXLineData.h:58
virtual RShape * castToShape()
Definition RXLineData.h:169
virtual QList< RVector > getArcReferencePoints(const RBox &queryBox=RDEFAULT_RBOX) const
Definition RXLineData.h:83
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 RXLineData.h:89
bool reverse()
Definition RXLineData.h:147
virtual QList< RVector > getPointsWithDistanceToEnd(double distance, int from=RS::FromAny, const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition RXLineData.h:86
bool trimEndPoint(const RVector &trimPoint, const RVector &clickPoint=RVector::invalid, bool extend=false)
Definition RXLineData.h:157
virtual bool stretch(const RPolyline &area, const RVector &offset)
Stretches the end points of this entity that are inside area by offset.
Definition RXLineData.h:125
virtual bool intersectsWith(const RShape &shape) const
Definition RXLineData.h:101
bool fixedAngle
Definition RXLineData.h:183
virtual QList< RVector > getIntersectionPoints(const RShape &shape, bool limited=true, const RBox &queryBox=RDEFAULT_RBOX, bool ignoreComplex=true) const
Definition RXLineData.h:92
virtual RVector getVectorTo(const RVector &point, bool limited=true, double strictRange=RMAXDOUBLE) const
Definition RXLineData.h:95
virtual bool flipVertical()
Definition RXLineData.h:122
virtual QList< QSharedPointer< RShape > > getShapes(const RBox &queryBox=RDEFAULT_RBOX, bool ignoreComplex=false, bool segment=false, QList< RObject::Id > *entityIds=NULL) const
Definition RXLineData.h:173
void setFixedAngle(bool on)
Definition RXLineData.h:143
double getAngle() const
Definition RXLineData.h:135
virtual QList< RVector > getEndPoints(const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition RXLineData.h:65
bool hasFixedAngle() const
Definition RXLineData.h:139
virtual RS::EntityType getType() const
Definition RXLineData.h:55
virtual void setZ(double z)
Definition RXLineData.h:68
virtual RBox getBoundingBox(bool ignoreEmpty=false) const
Definition RXLineData.h:74
virtual bool flipHorizontal()
Definition RXLineData.h:119
RVector getDirectionVector() const
Definition RXLineData.h:132
Infinite line entity.
Definition RXLineEntity.h:38
Low-level mathematical representation of an infinite line.
Definition RXLine.h:42
virtual bool mirror(const RLine &axis)
Definition RXLine.cpp:260
virtual void setZ(double z)
Definition RXLine.cpp:61
virtual RS::Ending getTrimEnd(const RVector &trimPoint, const RVector &clickPoint)
Definition RXLine.cpp:130
virtual bool scale(const RVector &scaleFactors, const RVector &center=RDEFAULT_RVECTOR)
Definition RXLine.cpp:254
virtual RS::Side getSideOfPoint(const RVector &point) const
Definition RXLine.cpp:95
RXLine()
Copyright (c) 2011-2018 by Andrew Mustun.
Definition RXLine.cpp:29
virtual bool stretch(const RPolyline &area, const RVector &offset)
Definition RXLine.cpp:276
virtual bool rotate(double rotation, const RVector &center=RDEFAULT_RVECTOR)
Definition RXLine.cpp:245
virtual bool move(const RVector &offset)
Definition RXLine.cpp:237
virtual bool reverse()
Definition RXLine.cpp:268
virtual bool trimStartPoint(const RVector &trimPoint, const RVector &clickPoint=RVector::invalid, bool extend=false)
Definition RXLine.cpp:107
double getAngle() const
Definition RXLine.cpp:74
RVector getBasePoint() const
Definition RXLine.cpp:147
RVector getDirectionVector() const
Definition RXLine.cpp:163
virtual bool trimEndPoint(const RVector &trimPoint, const RVector &clickPoint=RVector::invalid, bool extend=false)
Definition RXLine.cpp:118
#define QCADENTITY_EXPORT
Definition entity_global.h:10
#define NULL
Definition opennurbs_system.h:256