QCAD Application Framework
CAD Application Development and Automation.
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
RDwgServices.h
Go to the documentation of this file.
1 #ifndef RDWGSERVICES_H
2 #define RDWGSERVICES_H
3 
4 #include <QString>
5 #include <QRegExp>
6 
7 // must be before any other ODA includes:
8 #include "OdaCommon.h"
9 
10 #include "Db2dVertex.h"
11 #include "Db3dPolyline.h"
12 #include "Db3dPolylineVertex.h"
13 #include "DbAbstractViewTableRecord.h"
14 #include "DbAlignedDimension.h"
15 #include "DbArc.h"
16 #include "DbArcAlignedText.h"
17 #include "DbAttribute.h"
18 #include "DbBlockReference.h"
19 #include "DbBlockTable.h"
20 #include "DbBlockTableRecord.h"
21 #include "DbCircle.h"
22 #include "DbEllipse.h"
23 #include "DbCurve.h"
24 #include "DbDatabase.h"
25 #include "DbDatabase.h"
26 #include "DbDiametricDimension.h"
27 #include "DbDictionary.h"
28 #include "DbDimAssoc.h"
29 #include "Db2LineAngularDimension.h"
30 #include "Db3PointAngularDimension.h"
31 #include "DbDimStyleTable.h"
32 #include "DbDimStyleTableRecord.h"
33 #include "DbEntity.h"
34 #include "DbFiler.h"
35 #include "DbLayerTable.h"
36 #include "DbHatch.h"
37 #include "DbLayerTableRecord.h"
38 #include "DbLayout.h"
39 #include "DbLeader.h"
40 #include "DbLine.h"
41 #include "DbLinetypeTable.h"
42 #include "DbLinetypeTableRecord.h"
43 #include "DbMaterial.h"
44 #include "DbMlineStyle.h"
45 #include "DbMText.h"
46 #include "DbOle2Frame.h"
47 #include "DbOrdinateDimension.h"
48 #include "DbPlaceHolder.h"
49 #include "DbPolyline.h"
50 #include "DbPoint.h"
51 #include "DbRadialDimension.h"
52 #include "DbRasterImageDef.h"
53 #include "DbRasterImage.h"
54 #include "DbRegAppTable.h"
55 #include "DbRegAppTableRecord.h"
56 #include "DbRotatedDimension.h"
57 #include "DbSolid.h"
58 #include "DbSpline.h"
59 #include "DbSubentId.h"
60 #include "DbText.h"
61 #include "DbTextStyleTable.h"
62 #include "DbTextStyleTableRecord.h"
63 #include "DbUCSTable.h"
64 #include "DbUCSTableRecord.h"
65 #include "DbUnitsFormatter.h"
66 #include "DbViewport.h"
67 #include "DbViewportTable.h"
68 #include "DbViewportTableRecord.h"
69 #include "DbViewTable.h"
70 #include "DbViewTableRecord.h"
71 #include "DbXrecord.h"
72 #include "diagnostics.h"
73 #include "ExHostAppServices.h"
74 #include "ExSystemServices.h"
75 #include "FdField.h"
76 #include "Ge/Ge.h"
77 #include "Ge/GeCircArc2d.h"
78 #include "Ge/GeCurve2d.h"
79 #include "Ge/GeEllipArc2d.h"
80 #include "Ge/GeEllipArc3d.h"
81 #include "Ge/GeExtents3d.h"
82 #include "Ge/GeLine2d.h"
83 #include "Ge/GeLineSeg2d.h"
84 #include "Ge/GeNurbCurve2d.h"
85 #include "Ge/GeScale2d.h"
86 #include "Ge/GeScale3d.h"
87 #include "Gi/GiGeometry.h"
88 #include "Gi/Gi.h"
89 #include "Gi/GiPolyline.h"
90 #include "Gi/GiRasterImage.h"
91 #include "Gi/GiTextStyle.h"
92 #include "Gs/Gs.h"
93 #include "Ge/GeKnotVector.h"
94 #include "OdCharMapper.h"
95 #include "OdFileBuf.h"
96 #include "OdError.h"
97 #include "OdErrorContext.h"
98 #include "RxDynamicModule.h"
99 #include "RxObject.h"
100 #include "RxObjectImpl.h"
101 #include "TextDefs.h"
102 
103 #include "RColor.h"
104 #include "RDebug.h"
105 #include "RLineweight.h"
106 #include "RVector.h"
107 
108 class RCircle;
109 class REllipse;
110 
111 
112 
119 class RDwgServices : public ExSystemServices, public ExHostAppServices {
120 public:
121  RDwgServices();
122 
123  virtual OdString getPreferableFont(const OdString& fontName, OdFontType fontType);
124 
125  virtual OdString findFile(const OdString& odFileName,
126  OdDbBaseDatabase* pDb = 0,
127  FindFileHint hint = kDefault);
128 
129  static bool init(RDwgServices& svcs);
130  static void uninit();
131 
132  static OdDb::LineWeight toOdDbLineWeight(RLineweight::Lineweight lw);
133  static OdCmColor toOdCmColor(const RColor& v) ;
134  static OdGeVector2d toOdGeVector2d(const RVector& v) ;
135  static OdGeVector3d toOdGeVector3d(const RVector& v) ;
136  static OdGePoint3d toOdGePoint3d(const RVector& v) ;
137  static OdGeScale3d toOdGeScale3d(const RVector& v);
138  static OdGePoint2d toOdGePoint2d(const RVector& v);
139  static OdGePoint2dArray toOdGePoint2dArray(const QList<RVector>& v);
140  static OdGePoint3dArray toOdGePoint3dArray(const QList<RVector>& v);
141  static OdGeKnotVector toOdGeKnotVector(const QList<double>& v);
142  static OdGeDoubleArray toOdGeDoubleArray(const QList<double>& v);
143  static OdString toOdString(const QString& str, bool escape);
144  static OdGiRasterImage::Units toOdRasterUnit(const RS::Unit unit);
145 
146  static RS::DwgVersion toRDwgVersion(OdDb::DwgVersion v);
147  static QString toVersionString(OdDb::DwgVersion v);
148  static RColor toRColor(const OdCmColor& v);
149  static RVector toRVector(const OdGePoint3d& v);
150  static RVector toRVector(const OdGeScale3d& v);
151  static RVector toRVector(const OdGePoint2d& v);
152  static RVector toRVector(const OdGeVector3d& v);
153  static RVector toRVector(const OdGeVector2d& v);
154  static QList<RVector> toRVectorList(const OdGePoint2dArray& v);
155  static QList<RVector> toRVectorList(const OdGePoint3dArray& v);
156  static QList<double> toDoubleList(const OdGeKnotVector& v);
157  static RS::HAlign toHAlign(OdDb::TextHorzMode m);
158  static RS::VAlign toVAlign(OdDb::TextVertMode m);
159  static RS::TextLineSpacingStyle toLineSpacingStyle(OdDb::LineSpacingStyle s);
160  static QString toQString(const OdString& str) ;
161  static void printErrorStackTrace(const OdError& odError);
162 
163  static QString fixFontName(const QString& fontName, bool qcad2Compatibility);
164 
165  static void initOdCircle(OdDbCirclePtr odCircle, const RCircle& circle);
166  static void initOdEllipse(OdDbEllipsePtr odEllipse, const REllipse& ellipse);
167 
168  static bool isMirroredX(OdDbEntityPtr odEntity);
169 
170  void aborted() {
171  stop();
172  }
173 
174 protected:
175  ODRX_USING_HEAP_OPERATORS(ExSystemServices);
176 
177  void setLimit(int l);
178  void meterProgress();
179 
180  void start() {}
181  void stop();
182 
183 private:
184 
185 #ifdef _MSC_VER
186 
192  bool getPassword(const OdString& dwgName, bool /*isXref*/, OdPassword& password);
193 #endif
194 
195 private:
197  int progress;
198  static bool initialized;
199 };
200 
204 void rsDwgAssert(const char* expression, const char* fileName, int nLineNo);
205 
206 
207 #endif