QCAD Application Framework
CAD Application Development and Automation.
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
RDimensionData.h
Go to the documentation of this file.
1 #ifndef RDIMENSIONDATA_H
2 #define RDIMENSIONDATA_H
3 
4 #include "RDocument.h"
5 #include "REntityData.h"
6 #include "RTextData.h"
7 #include "RVector.h"
8 
17 class RDimensionData: public REntityData {
18  friend class RDimensionEntity;
19 
20 protected:
22 
23 public:
30  double lineSpacingFactor,
31  const QString& text,
32  const QString& fontName,
33  double angle);
34 
35  virtual RBox getBoundingBox() const;
36 
37  virtual bool isValid() const;
38 
39  void setDefinitionPoint(const RVector& p) {
40  definitionPoint = p;
41  update();
42  }
43 
45  return definitionPoint;
46  }
47 
48  void setText(const QString& t) {
49  text = t;
50  update();
51  }
52 
53  QString getText() const {
54  return text;
55  }
56 
57  void setUpperTolerance(const QString& t) {
58  upperTolerance = t;
59  }
60 
61  void setLowerTolerance(const QString& t) {
62  lowerTolerance = t;
63  }
64 
65  void setTextPosition(const RVector& p) {
68  update();
69  }
70 
72  if (textPositionSide.isValid()) {
73  return textPositionSide;
74  }
75  else {
76  return textPositionCenter;
77  }
78  }
79 
80  void setFontName(const QString& fn) {
81  fontName = fn;
82  update();
83  }
84 
85  QString getFontName() const {
86  return fontName;
87  }
88 
89  virtual double getDistanceTo(const RVector& point, bool limited = true, double range = 0.0, bool draft = false) const;
90  virtual bool intersectsWith(const RShape& shape) const;
91 
92  virtual QList<RVector> getReferencePoints(
94 
95  virtual bool moveReferencePoint(const RVector& referencePoint,
96  const RVector& targetPoint);
97 
98  virtual bool move(const RVector& offset);
99  virtual bool rotate(double rotation, const RVector& center);
100  virtual bool scale(const RVector& scaleFactors, const RVector& center);
101  virtual bool mirror(const RLine& axis);
102 
103  double getDimexo() const;
104  double getDimexe() const;
105  double getDimasz() const;
106  double getDimgap() const;
107  double getDimtxt() const;
108  bool useArchTick() const;
109  bool hasCustomTextPosition() const;
110  void setCustomTextPosition(bool on);
111 
112  QList<QSharedPointer<RShape> > getDimensionLineShapes(
113  const RVector& p1, const RVector& p2,
114  bool arrow1, bool arrow2) const;
115  virtual QList<QSharedPointer<RShape> > getArrow(
116  const RVector& position, double direction) const;
117  RTextData& getTextData() const;
118  void initTextData() const;
119  virtual void updateTextData() const;
120  virtual QString getMeasurement(bool resolveAutoMeasurement = true) const;
121  virtual QString getAutoMeasurement() const = 0;
122  QString formatLabel(double distance) const;
123  QString formatAngleLabel(double angle) const;
124  //virtual void updateFromTextPosition() = 0;
125 
126  virtual void update() const;
127 
128 protected:
147  QString text;
149  QString upperTolerance;
151  QString lowerTolerance;
153  QString fontName;
154 
155  mutable double defaultAngle;
157  double angle;
158 
159  mutable bool dirty;
161  mutable RBox boundingBox;
162  mutable double dimLineLength;
163 
165  mutable bool autoTextPos;
166 };
167 
169 Q_DECLARE_METATYPE(QSharedPointer<RDimensionData>)
170 
171 #endif