QCAD
Open Source 2D CAD
Loading...
Searching...
No Matches
RDxfImporter.h
Go to the documentation of this file.
1
20#ifndef RDXFIMPORTER_H
21#define RDXFIMPORTER_H
22
23#include "dxf_global.h"
24
26
27#include "RDxfServices.h"
28#include "RFileImporter.h"
29#include "RHatchData.h"
30#include "RLeaderData.h"
31#include "RPolyline.h"
32#include "RSpline.h"
33
34class RDimensionData;
35class RMessageHandler;
37class RTextBasedData;
38
39
45public:
46 RDxfTextStyle() : bold(false), italic(false) {}
47
48 QString font;
49 bool bold;
50 bool italic;
51};
52
53
60public:
61 RDxfImporter(RDocument& document,
62 RMessageHandler* messageHandler = NULL, RProgressHandler* progressHandler = NULL);
63 virtual ~RDxfImporter();
64
65 virtual bool importFile(const QString& fileName, const QString& nameFilter, const QVariantMap& params = RDEFAULT_QVARIANTMAP);
66
67 virtual void processCodeValuePair(unsigned int groupCode, const std::string& groupValue);
68
69private:
70 // Methods from DL_CreationInterface:
71 virtual void addLayer(const DL_LayerData& data);
72 virtual void addLinetype(const DL_LinetypeData& data);
73 virtual void addLinetypeDash(double length);
74 virtual void addBlock(const DL_BlockData& data);
75 virtual void endBlock();
76 virtual void addPoint(const DL_PointData& data);
77 virtual void addLine(const DL_LineData& data);
78 virtual void addXLine(const DL_XLineData& data);
79 virtual void addRay(const DL_RayData& data);
80 virtual void addArc(const DL_ArcData& data);
81 virtual void addEllipse(const DL_EllipseData& data);
82 virtual void addCircle(const DL_CircleData& data);
83 virtual void addPolyline(const DL_PolylineData& data);
84 virtual void addVertex(const DL_VertexData& data);
85 virtual void endEntity();
86 virtual void endSection();
87 virtual void addSpline(const DL_SplineData& data);
88 virtual void addControlPoint(const DL_ControlPointData& data);
89 virtual void addFitPoint(const DL_FitPointData& data);
90 virtual void addKnot(const DL_KnotData& data);
91 virtual void addInsert(const DL_InsertData& data);
92 virtual void addSolid(const DL_SolidData& data);
93 virtual void addTrace(const DL_TraceData& data);
94 virtual void addTextStyle(const DL_StyleData& data);
95 virtual void addMTextChunk(const std::string& text);
96 virtual void addMText(const DL_MTextData& data);
97 RTextBasedData getTextBasedData(const DL_TextData& data);
98 virtual void addText(const DL_TextData& data);
99 virtual void addArcAlignedText(const DL_ArcAlignedTextData& data);
100 virtual void addAttribute(const DL_AttributeData& data);
101 virtual RDimensionData convDimensionData(const DL_DimensionData& data);
102 virtual void addDimAlign(const DL_DimensionData& data, const DL_DimAlignedData& edata);
103 virtual void addDimLinear(const DL_DimensionData& data, const DL_DimLinearData& edata);
104 virtual void addDimRadial(const DL_DimensionData& data, const DL_DimRadialData& edata);
105 virtual void addDimDiametric(const DL_DimensionData& data, const DL_DimDiametricData& edata);
106 virtual void addDimAngular(const DL_DimensionData& data, const DL_DimAngular2LData& edata);
107 virtual void addDimAngular3P(const DL_DimensionData& data, const DL_DimAngular3PData& edata);
108 virtual void addDimOrdinate(const DL_DimensionData& data, const DL_DimOrdinateData& edata);
109 virtual void addLeader(const DL_LeaderData &data);
110 virtual void addLeaderVertex(const DL_LeaderVertexData &data);
111 virtual void addHatch(const DL_HatchData& data);
112 virtual void addHatchLoop(const DL_HatchLoopData& data);
113 virtual void addHatchEdge(const DL_HatchEdgeData& data);
114 virtual void addImage(const DL_ImageData &data);
115 virtual void linkImage(const DL_ImageDefData &data);
116
117 virtual void addXRecord(const std::string& handle);
118 virtual void addXRecordString(int code, const std::string& value);
119 virtual void addXRecordReal(int code, double value);
120 virtual void addXRecordInt(int code, int value);
121 virtual void addXRecordBool(int code, bool value);
122
123 virtual void addXDataApp(const std::string& appId);
124 virtual void addXDataString(int code, const std::string& value);
125 virtual void addXDataReal(int code, double value);
126 virtual void addXDataInt(int code, int value);
127
128 virtual void addDictionary(const DL_DictionaryData& data);
129 virtual void addDictionaryEntry(const DL_DictionaryEntryData& data);
130
131 virtual void setVariableVector(const std::string& key, double v1, double v2, double v3, int code);
132 virtual void setVariableString(const std::string& key, const std::string& value, int code);
133 virtual void setVariableInt(const std::string& key, int value, int code);
134 virtual void setVariableDouble(const std::string& key, double value, int code);
135
136 static QString decode(const QString& str);
137
138private:
139 static QString getEncoding(const QString& str);
140
141 void importEntity(QSharedPointer<REntity> entity);
142
143 QString getXDataString(const QString& appId, int code, int pos=0);
144 int getXDataInt(const QString& appId, int code, int pos=0);
145
146private:
147 QString fileName;
149 // list of locked layers. layers are locked after importing all entities:
150 QStringList lockedLayers;
151
158 QByteArray mtext;
160 QMultiMap<int, RObject::Id> images;
161 // pattern for linetype
162 QList<double> pattern;
163
164 // Current app id for XData:
165 QString xDataAppId;
166 // AppID -> list of code / value pairs
169 bool inDict;
170 // Dictionary handles -> names
172 QString variableKey;
173};
174
177
178#endif
#define RDEFAULT_QVARIANTMAP
Definition RDocumentInterface.h:41
Q_DECLARE_METATYPE(RMath *)
An abstract adapter class for receiving DXF events when a DXF file is being read.
Definition dl_creationadapter.h:39
Definition RDebug.h:38
Base class for dimension entity data classes.
Definition RDimensionData.h:44
A graphics document contains and owns entities, layers, user coordinate systems, variables,...
Definition RDocument.h:78
Importer for the DXF format, based on the dxflib library.
Definition RDxfImporter.h:59
QString fileName
Definition RDxfImporter.h:147
QString variableKey
Definition RDxfImporter.h:172
QList< double > pattern
Definition RDxfImporter.h:162
RPolyline polyline
Definition RDxfImporter.h:152
QStringList lockedLayers
Definition RDxfImporter.h:150
RDxfServices dxfServices
Definition RDxfImporter.h:148
RSpline spline
Definition RDxfImporter.h:154
bool inDict
Definition RDxfImporter.h:169
bool leaderArrowHead
Definition RDxfImporter.h:156
RLeaderData leader
Definition RDxfImporter.h:155
QByteArray mtext
Definition RDxfImporter.h:158
QMap< QString, QList< QPair< int, QVariant > > > xData
Definition RDxfImporter.h:167
RHatchData hatch
Definition RDxfImporter.h:157
QMap< QString, RDxfTextStyle > textStyles
Definition RDxfImporter.h:159
bool polylinePlineGen
Definition RDxfImporter.h:153
QString xDataAppId
Definition RDxfImporter.h:165
QMultiMap< int, RObject::Id > images
Definition RDxfImporter.h:160
QString qcadDictHandle
Definition RDxfImporter.h:168
QMap< QString, QString > qcadDict
Definition RDxfImporter.h:171
DXF support tools, mainly for QCAD 2 DXF imports.
Definition RDxfServices.h:46
Represents a text style.
Definition RDxfImporter.h:44
RDxfTextStyle()
Definition RDxfImporter.h:46
bool bold
Definition RDxfImporter.h:49
bool italic
Definition RDxfImporter.h:50
QString font
Definition RDxfImporter.h:48
Base class for file importers.
Definition RFileImporter.h:41
Stores and manages all data that defines the geometry and appearance of a hatch or solid fill entity.
Definition RHatchData.h:51
Leader entity data class.
Definition RLeaderData.h:42
Copyright (c) 2011-2018 by Andrew Mustun.
Definition RMessageHandler.h:33
Low-level mathematical representation of an open polyline or closed polyline (= polygon).
Definition RPolyline.h:50
Copyright (c) 2011-2018 by Andrew Mustun.
Definition RProgressHandler.h:33
Low-level mathematical representation of a spline.
Definition RSpline.h:59
Stores and manages all data that defines the geometry and appearance of a text based entity (text,...
Definition RTextBasedData.h:68
#define QCADDXF_EXPORT
Definition dxf_global.h:10
void addSpline(void points, void closed)
Adds a spline to the drawing.
Definition simple_create.js:15
void addPolyline(void points, void closed, void relative)
Adds a polyline to the drawing.
Definition simple_create.js:79
void addArc(void center, void radius, void startAngle, void endAngle, void reversed)
Adds an arc to the drawing.
Definition simple_create.js:109
void addXLine(void startPoint, void directionVector)
Adds an infinite line to the drawing.
Definition simple_create.js:164
void addCircle(void center, void radius)
Adds a circle to the drawing.
Definition simple_create.js:150
void addPoint(void position)
Adds a point to the drawing.
Definition simple_create.js:210
void addLayer(void name, void colorName, void linetypeName, void lineWeight)
Adds a layer to the drawing.
Definition simple_create.js:138
void addLine(void startPoint, void endPoint)
Adds a line to the drawing.
Definition simple_create.js:198
#define NULL
Definition opennurbs_system.h:256
#define false
Definition opennurbs_system.h:252
Arc Aligned Text Data.
Definition dl_entities.h:870
Arc Data.
Definition dl_entities.h:315
Block attribute data.
Definition dl_entities.h:950
Block Data.
Definition dl_entities.h:59
Circle Data.
Definition dl_entities.h:352
Spline control point data.
Definition dl_entities.h:575
Dictionary data.
Definition dl_entities.h:1799
Dictionary entry data.
Definition dl_entities.h:1809
Aligned Dimension Data.
Definition dl_entities.h:1102
Angular Dimension Data.
Definition dl_entities.h:1243
Angular Dimension Data (3 points version).
Definition dl_entities.h:1303
Diametric Dimension Data.
Definition dl_entities.h:1214
Linear (rotated) Dimension Data.
Definition dl_entities.h:1139
Ordinate Dimension Data.
Definition dl_entities.h:1352
Radial Dimension Data.
Definition dl_entities.h:1185
Generic Dimension Data.
Definition dl_entities.h:990
Ellipse Data.
Definition dl_entities.h:622
Spline fit point data.
Definition dl_entities.h:602
Hatch data.
Definition dl_entities.h:1470
Hatch edge data.
Definition dl_entities.h:1539
Hatch boundary path (loop) data.
Definition dl_entities.h:1517
Image Data.
Definition dl_entities.h:1709
Image Definition Data.
Definition dl_entities.h:1775
Insert Data.
Definition dl_entities.h:669
Spline knot data.
Definition dl_entities.h:556
Layer Data.
Definition dl_entities.h:36
Leader (arrow).
Definition dl_entities.h:1395
Leader Vertex Data.
Definition dl_entities.h:1446
Line Data.
Definition dl_entities.h:221
Line Type Data.
Definition dl_entities.h:90
MText Data.
Definition dl_entities.h:719
Point Data.
Definition dl_entities.h:197
Polyline Data.
Definition dl_entities.h:382
Ray Data.
Definition dl_entities.h:284
Spline Data.
Definition dl_entities.h:511
Text style data.
Definition dl_entities.h:130
Text Data.
Definition dl_entities.h:800
Trace Data / solid data / 3d face data.
Definition dl_entities.h:444
Vertex Data.
Definition dl_entities.h:416
XLine Data.
Definition dl_entities.h:255
Definition inftrees.h:24