QCAD
Open Source 2D CAD
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
RSplineEntity.h
Go to the documentation of this file.
1 
20 #ifndef RSPLINEENTITY_H
21 #define RSPLINEENTITY_H
22 
23 #include "entity_global.h"
24 
25 #include "REntity.h"
26 #include "RSplineData.h"
27 
28 class RDocument;
29 class RExporter;
30 
31 #ifndef RDEFAULT_MIN1
32 #define RDEFAULT_MIN1 -1
33 #endif
34 
43 
44 public:
55 
65 
67 
68 public:
69  RSplineEntity(RDocument* document, const RSplineData& data,
70  RObject::Id objectId = RObject::INVALID_ID);
71  virtual ~RSplineEntity();
72 
73  static void init();
74 
75  static QSet<RPropertyTypeId> getStaticPropertyTypeIds() {
77  }
78 
79  virtual RSplineEntity* clone() const {
80  return new RSplineEntity(*this);
81  }
82 
83  virtual RS::EntityType getType() const {
84  return RS::EntitySpline;
85  }
86 
87  bool setProperty(RPropertyTypeId propertyTypeId, const QVariant& value,
88  RTransaction* transaction=NULL);
89  QPair<QVariant, RPropertyAttributes> getProperty(
90  RPropertyTypeId& propertyTypeId,
91  bool humanReadable = false, bool noAttributes = false);
92 
93  virtual void exportEntity(RExporter& e, bool preview=false, bool forceSelected=false) const;
94 
95  virtual void setUndone(bool on) {
97  data.update();
98  }
99 
100  virtual RSplineData& getData() {
101  return data;
102  }
103 
104  virtual const RSplineData& getData() const {
105  return data;
106  }
107 
108  void setShape(const RSpline& s);
109 
110  bool isValid() const {
111  return data.isValid();
112  }
113 
114  int getDegree() const {
115  return data.getDegree();
116  }
117 
118  double getDirection1() const {
119  return data.getDirection1();
120  }
121 
122  double getDirection2() const {
123  return data.getDirection2();
124  }
125 
126  RS::Ending getTrimEnd(const RVector& coord,
127  const RVector& trimPoint) {
128  return data.getTrimEnd(coord, trimPoint);
129  }
130 
131  void trimStartPoint(const RVector& p) {
132  return data.trimStartPoint(p);
133  }
134  void trimEndPoint(const RVector& p) {
135  return data.trimEndPoint(p);
136  }
137 
139  return data.getTangentAtStart();
140  }
141 
143  return data.getTangentAtEnd();
144  }
145 
146  bool isClosed() const {
147  return data.isClosed();
148  }
149 
150  bool isPeriodic() const {
151  return data.isPeriodic();
152  }
153 
154  void appendControlPoint(const RVector& point) {
155  data.appendControlPoint(point);
156  }
157 
158  void setPeriodic(bool on) {
159  data.setPeriodic(on);
160  }
161 
162  QList<RVector> getControlPoints() const {
163  return data.getControlPoints();
164  }
165 
166  QList<RVector> getControlPointsWrapped() const {
167  return data.getControlPointsWrapped();
168  }
169 
170  int countControlPoints() const {
171  return data.countControlPoints();
172  }
173 
174  QList<RVector> getFitPoints() const {
175  return data.getFitPoints();
176  }
177 
178  bool hasFitPoints() const {
179  return data.hasFitPoints();
180  }
181 
182  QList<double> getKnotVector() const {
183  return data.getKnotVector();
184  }
185 
186  QList<double> getActualKnotVector() const {
187  return data.getActualKnotVector();
188  }
189 
190  QList<double> getWeights() const {
191  return data.getWeights();
192  }
193 
194  //RSpline getSubSpline(double d1, double d2) const {
195  // return data.getSubSpline(d1, d2);
196  //}
197 
198  double getLength() const {
199  return data.getLength();
200  }
201 
203  return data.getStartPoint();
204  }
205 
207  return data.getEndPoint();
208  }
209 
210  bool reverse() {
211  return data.reverse();
212  }
213 
214  virtual int getComplexity() const;
215 
216  QList<QSharedPointer<RShape> > getExploded(int segments = RDEFAULT_MIN1) const {
217  return data.getExploded(segments);
218  }
219 
220  /*
221  double getAngle() const {
222  return data.getAngle();
223  }
224 
225  double getDirection1() const {
226  return data.getDirection1();
227  }
228 
229  double getDirection2() const {
230  return data.getDirection2();
231  }
232 
233  RS::Side getSideOfPoint(const RVector& point) const {
234  return data.getSideOfPoint(point);
235  }
236  */
237 
238 protected:
239  virtual void print(QDebug dbg) const;
240 
241 protected:
243 };
244 
246 Q_DECLARE_METATYPE(QSharedPointer<RSplineEntity>)
247 Q_DECLARE_METATYPE(QSharedPointer<RSplineEntity>*)
248 
249 #endif