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:
54 
64 
66 
67 public:
68  RSplineEntity(RDocument* document, const RSplineData& data,
69  RObject::Id objectId = RObject::INVALID_ID);
70  virtual ~RSplineEntity();
71 
72  static void init();
73 
74  static QSet<RPropertyTypeId> getStaticPropertyTypeIds() {
76  }
77 
78  virtual RSplineEntity* clone() const {
79  return new RSplineEntity(*this);
80  }
81 
82  virtual RS::EntityType getType() const {
83  return RS::EntitySpline;
84  }
85 
86  bool setProperty(RPropertyTypeId propertyTypeId, const QVariant& value,
87  RTransaction* transaction=NULL);
88  QPair<QVariant, RPropertyAttributes> getProperty(
89  RPropertyTypeId& propertyTypeId,
90  bool humanReadable = false, bool noAttributes = false);
91 
92  virtual void exportEntity(RExporter& e, bool preview=false) const;
93 
94  virtual void setUndone(bool on) {
96  data.update();
97  }
98 
99  virtual RSplineData& getData() {
100  return data;
101  }
102 
103  virtual const RSplineData& getData() const {
104  return data;
105  }
106 
107  void setShape(const RSpline& s);
108 
109  bool isValid() const {
110  return data.isValid();
111  }
112 
113  int getDegree() const {
114  return data.getDegree();
115  }
116 
117  double getDirection1() const {
118  return data.getDirection1();
119  }
120 
121  double getDirection2() const {
122  return data.getDirection2();
123  }
124 
125  RS::Ending getTrimEnd(const RVector& coord,
126  const RVector& trimPoint) {
127  return data.getTrimEnd(coord, trimPoint);
128  }
129 
130  void trimStartPoint(const RVector& p) {
131  return data.trimStartPoint(p);
132  }
133  void trimEndPoint(const RVector& p) {
134  return data.trimEndPoint(p);
135  }
136 
138  return data.getTangentAtStart();
139  }
140 
142  return data.getTangentAtEnd();
143  }
144 
145  bool isClosed() const {
146  return data.isClosed();
147  }
148 
149  bool isPeriodic() const {
150  return data.isPeriodic();
151  }
152 
153  void appendControlPoint(const RVector& point) {
154  data.appendControlPoint(point);
155  }
156 
157  void setPeriodic(bool on) {
158  data.setPeriodic(on);
159  }
160 
161  QList<RVector> getControlPoints() const {
162  return data.getControlPoints();
163  }
164 
165  QList<RVector> getControlPointsWrapped() const {
166  return data.getControlPointsWrapped();
167  }
168 
169  int countControlPoints() const {
170  return data.countControlPoints();
171  }
172 
173  QList<RVector> getFitPoints() const {
174  return data.getFitPoints();
175  }
176 
177  bool hasFitPoints() const {
178  return data.hasFitPoints();
179  }
180 
181  QList<double> getKnotVector() const {
182  return data.getKnotVector();
183  }
184 
185  QList<double> getActualKnotVector() const {
186  return data.getActualKnotVector();
187  }
188 
189  QList<double> getWeights() const {
190  return data.getWeights();
191  }
192 
193  //RSpline getSubSpline(double d1, double d2) const {
194  // return data.getSubSpline(d1, d2);
195  //}
196 
197  double getLength() const {
198  return data.getLength();
199  }
200 
202  return data.getStartPoint();
203  }
204 
206  return data.getEndPoint();
207  }
208 
209  bool reverse() {
210  return data.reverse();
211  }
212 
213  virtual int getComplexity() const;
214 
215  QList<QSharedPointer<RShape> > getExploded(int segments = RDEFAULT_MIN1) const {
216  return data.getExploded(segments);
217  }
218 
219  /*
220  double getAngle() const {
221  return data.getAngle();
222  }
223 
224  double getDirection1() const {
225  return data.getDirection1();
226  }
227 
228  double getDirection2() const {
229  return data.getDirection2();
230  }
231 
232  RS::Side getSideOfPoint(const RVector& point) const {
233  return data.getSideOfPoint(point);
234  }
235  */
236 
237 protected:
238  virtual void print(QDebug dbg) const;
239 
240 protected:
242 };
243 
245 Q_DECLARE_METATYPE(QSharedPointer<RSplineEntity>)
246 Q_DECLARE_METATYPE(QSharedPointer<RSplineEntity>*)
247 
248 #endif