12 #pragma warning (disable: 4996) // standard string functions considered unsafe
14 #include "MrDwgWorldDraw.h"
15 #include "MrDwgViewportDraw.h"
29 #define MTEXT_EXPLODE_FRAGMENTS 1
31 #ifdef MTEXT_EXPLODE_FRAGMENTS
32 struct AcDbMTextFragment;
41 virtual void importDatabase(AcDbDatabase *pDatabase);
44 std::map<std::wstring, std::string> m_fontmap;
46 HC_KEY entityInsertionSegment;
57 std::set<std::wstring> m_xrefList;
64 std::map<AcDbHandle, HC_KEY> m_recordKeyMap;
65 std::multimap<HC_KEY, AcDbHandle> m_referenceKeyMap;
68 std::vector<HC_KEY> m_clips;
75 std::map<AcDbHandle, HC_KEY> m_layerKeyMap;
83 std::map<AcDbHandle, std::vector<viewportData> > m_viewportMap;
85 std::stringstream m_main_color_map;
92 destinationKey = dKey;
100 AcDbHandle dimensionHandle;
101 AcDbBlockTableRecord * dimensionBTR;
103 std::vector<dimensionData> m_dimensions;
105 void recomputeAndImportDimensions(std::vector<dimensionData> * dimensionVector);
106 void restyleAndImportMText(
mTextData * mtext_info);
107 void populate_fontmap();
112 void importUnknownEntity(AcDbEntity * pEnt);
114 virtual void progress(
double percentComplete)
const;
115 virtual void importDwfInfo(AcDbDatabase *pDatabase);
117 friend void importAcDb2LineAngularDimension(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
118 friend void importAcDb2dVertex(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
119 friend void importAcDb3PointAngularDimension(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
120 friend void importAcDb2dPolyline(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
121 friend void importAcDb3dPolyline(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
122 friend void importAcDb3dPolylineVertex(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
123 friend void importAcDb3dSolid(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
124 friend void importAcDbAlignedDimension(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
125 friend void importAcDbArc(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
126 friend void importAcDbAttribute(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
127 friend void importAcDbAttributeDefinition(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
128 friend void importAcDbBlockBegin(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
129 friend void importAcDbBlockEnd(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
130 friend void importAcDbBlockReference(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
131 friend void importAcDbBody(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
132 friend void importAcDbCircle(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
133 friend void importAcDbCurve(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
134 friend void importAcDbDiametricDimension(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
135 friend void importAcDbDimension(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
136 friend void importAcDbEllipse(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
137 friend void importAcDbFace(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
138 friend void importAcDbFaceRecord(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
139 friend void importAcDbFcf(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
140 friend void importAcDbFrame(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
141 friend void importAcDbHatch(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
142 friend void importAcDbLeader(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
143 friend void importAcDbLine(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
144 friend void importAcDbMInsertBlock(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
145 friend void importAcDbMText(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
146 #ifdef MTEXT_EXPLODE_FRAGMENTS
147 friend static int callback_AcDbMTextFragments(AcDbMTextFragment *frag,
void *param);
149 friend void importAcDbMline(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
150 friend void importAcDbOle2Frame(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
151 friend void importAcDbOleFrame(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
152 friend void importAcDbOrdinateDimension(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
153 friend void importAcDbPoint(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
154 friend void importAcDbPolyFaceMesh(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
155 friend void importAcDbPolyFaceMeshVertex(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
156 friend void importAcDbPolygonMesh(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
157 friend void importAcDbPolygonMeshVertex(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
158 friend void importAcDbPolyline(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
159 friend void importAcDbProxyEntity(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
160 friend void importAcDbRadialDimension(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
161 friend void importAcDbRasterImage(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
162 friend void importAcDbRay(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
163 friend void importAcDbRegion(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
164 friend void importAcDbRotatedDimension(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
165 friend void importAcDbSequenceEnd(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
166 friend void importAcDbShape(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
167 friend void importAcDbSolid(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
168 friend void importAcDbSpline(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
169 friend void importAcDbTable(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
170 friend void importAcDbText(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
171 friend void importAcDbTrace(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
172 friend void importAcDbVertex(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
173 friend void importAcDbViewport(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
174 friend void importAcDbWipeout(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
175 friend void importAcDbXline(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
176 friend void importAcDbZombieEntity(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
179 virtual void importAcDb2LineAngularDimension(AcDbEntity *pEnt);
180 virtual void importAcDb2dVertex(AcDbEntity *pEnt);
181 virtual void importAcDb3PointAngularDimension(AcDbEntity *pEnt);
182 virtual void importAcDb2dPolyline(AcDbEntity *pEnt);
183 virtual void importAcDb3dPolyline(AcDbEntity *pEnt);
184 virtual void importAcDb3dPolylineVertex(AcDbEntity *pEnt);
185 virtual void importAcDb3dSolid(AcDbEntity *pEnt);
186 virtual void importAcDbAlignedDimension(AcDbEntity *pEnt);
187 virtual void importAcDbArc(AcDbEntity *pEnt);
188 virtual void importAcDbAttribute(AcDbEntity *pEnt);
189 virtual void importAcDbAttributeDefinition(AcDbEntity *pEnt);
190 virtual void importAcDbBlockBegin(AcDbEntity *pEnt);
191 virtual void importAcDbBlockEnd(AcDbEntity *pEnt);
192 virtual void importAcDbBlockReference(AcDbEntity *pEnt);
193 virtual void importAcDbBody(AcDbEntity *pEnt);
194 virtual void importAcDbCircle(AcDbEntity *pEnt);
195 virtual void importAcDbCurve(AcDbEntity *pEnt);
196 virtual void importAcDbDiametricDimension(AcDbEntity *pEnt);
197 virtual void importAcDbDimension(AcDbEntity *pEnt);
198 virtual void importAcDbEllipse(AcDbEntity *pEnt);
199 virtual void importAcDbFace(AcDbEntity *pEnt);
200 virtual void importAcDbFaceRecord(AcDbEntity *pEnt);
201 virtual void importAcDbFcf(AcDbEntity *pEnt);
202 virtual void importAcDbFrame(AcDbEntity *pEnt);
203 virtual void importAcDbHatch(AcDbEntity *pEnt);
204 virtual void importAcDbLeader(AcDbEntity *pEnt);
205 virtual void importAcDbLine(AcDbEntity *pEnt);
206 virtual void importAcDbMInsertBlock(AcDbEntity *pEnt);
207 virtual void importAcDbMText(AcDbEntity *pEnt);
208 #ifdef MTEXT_EXPLODE_FRAGMENTS
209 virtual void importAcDbMTextFragment(AcDbMTextFragment* pAcDbMTextFragment, AcDbEntity* pEnt);
211 virtual void importAcDbMline(AcDbEntity *pEnt);
212 virtual void importAcDbOle2Frame(AcDbEntity *pEnt);
213 virtual void importAcDbOleFrame(AcDbEntity *pEnt);
214 virtual void importAcDbOrdinateDimension(AcDbEntity *pEnt);
215 virtual void importAcDbPoint(AcDbEntity *pEnt);
216 virtual void importAcDbPolyFaceMesh(AcDbEntity *pEnt);
217 virtual void importAcDbPolyFaceMeshVertex(AcDbEntity *pEnt);
218 virtual void importAcDbPolygonMesh(AcDbEntity *pEnt);
219 virtual void importAcDbPolygonMeshVertex(AcDbEntity *pEnt);
220 virtual void importAcDbPolyline(AcDbEntity *pEnt);
221 virtual void importAcDbProxyEntity(AcDbEntity *pEnt);
222 virtual void importAcDbRadialDimension(AcDbEntity *pEnt);
223 virtual void importAcDbRasterImage(AcDbEntity *pEnt);
224 virtual void importAcDbRay(AcDbEntity *pEnt);
225 virtual void importAcDbRegion(AcDbEntity *pEnt);
226 virtual void importAcDbRotatedDimension(AcDbEntity *pEnt);
227 virtual void importAcDbSequenceEnd(AcDbEntity *pEnt);
228 virtual void importAcDbShape(AcDbEntity *pEnt);
229 virtual void importAcDbSolid(AcDbEntity *pEnt);
230 virtual void importAcDbSpline(AcDbEntity *pEnt);
231 virtual void importAcDbTable(AcDbEntity *pEnt);
232 virtual void importAcDbText(AcDbEntity *pEnt);
233 virtual void importAcDbTrace(AcDbEntity *pEnt);
234 virtual void importAcDbVertex(AcDbEntity *pEnt);
235 virtual void importAcDbViewport(AcDbEntity *pEnt);
236 virtual void importAcDbWipeout(AcDbEntity *pEnt);
237 virtual void importAcDbXline(AcDbEntity *pEnt);
238 virtual void importAcDbZombieEntity(AcDbEntity *pEnt);
240 virtual void linkDimension(AcDbDimension * pDim);
242 virtual void DrawEntity(AcDbEntity *pEnt, AcGiRegenType regenType);
244 virtual HC_KEY GetBlockTableRecordSegKey(AcDbBlockTableRecord *pRecord);
245 virtual HC_KEY GetAttrStateSegKey(AcDbEntity *pEnt,
bool is_zombie_entity =
false);
246 virtual HC_KEY GetLayoutSegKey(ACHAR *layoutName);
247 virtual HC_KEY GetLayerSegKey(ACHAR *layoutName);
249 virtual void importXdata(AcDbEntity *pEnt);
250 virtual bool importEntity(AcDbEntity *pEnt);
251 void importEntityFromHandle(AcDbHandle handle);
252 virtual void importBlockTable(AcDbBlockTable *pBlockTable);
253 virtual void importViewportTable(AcDbViewportTable *pViewportTable);
255 virtual void importLayerTable(AcDbLayerTable *pLayerTable);
256 virtual bool applyEntityLinetype(AcDbEntity *pEnt);
257 virtual bool importLinetypeAndApply(AcDbLinetypeTableRecord *pLinetypeRecord,
double scale);
263 AcDbObjectId linetypeId;
266 typedef std::vector<mLineStyleDefComponent> mLineStyleDef;
267 std::map<AcDbHandle, mLineStyleDef> m_MlineStyles;
269 virtual void importMlineStyleDictionary(AcDbDictionary *pDictionary);
271 bool m_skip_unreferenced_blocks;
Definition: MrDwgReader.h:259
Definition: MrDwgReader.h:35
Definition: MrDwgReader.h:88
Definition: MrDwgReader.h:78