12 #pragma warning (disable: 4996) // standard string functions considered unsafe 14 #include "MrDwgWorldDraw.h" 15 #include "MrDwgViewportDraw.h" 28 #include <dbmaterial.h> 31 #define MTEXT_EXPLODE_FRAGMENTS 1 33 #ifdef MTEXT_EXPLODE_FRAGMENTS 34 struct AcDbMTextFragment;
40 MrDwgReader(
bool skip_unreferenced_blocks,
int attribute_precision_mode,
wchar_t * texture_directory);
43 virtual void importDatabase(AcDbDatabase *pDatabase);
46 std::map<std::wstring, std::string> m_fontmap;
48 HC_KEY entityInsertionSegment;
53 int m_attributePrecisionMode;
56 bool m_generatedDouble;
66 std::set<std::wstring> m_xrefList;
73 std::map<AcDbHandle, HC_KEY> m_recordKeyMap;
74 std::multimap<HC_KEY, AcDbHandle> m_referenceKeyMap;
77 std::vector<HC_KEY> m_clips;
84 std::map<AcDbHandle, HC_KEY> m_layerKeyMap;
89 HC_KEY viewportSegmentKey;
92 std::map<AcDbHandle, std::vector<viewportData> > m_viewportMap;
94 std::stringstream m_main_color_map;
99 dimensionData(HC_KEY dKey, HC_KEY sKey, AcDbHandle h, AcDbBlockTableRecord * btr)
101 destinationKey = dKey;
107 HC_KEY destinationKey;
109 AcDbHandle dimensionHandle;
110 AcDbBlockTableRecord * dimensionBTR;
112 std::vector<dimensionData> m_dimensions;
114 void recomputeAndImportDimensions(std::vector<dimensionData> * dimensionVector);
115 void restyleAndImportMText(
mTextData * mtext_info);
116 void populate_fontmap();
121 void importUnknownEntity(AcDbEntity * pEnt);
123 virtual void progress(
double percentComplete)
const;
124 virtual void importDwfInfo(AcDbDatabase *pDatabase);
126 friend void importAcDb2LineAngularDimension(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
127 friend void importAcDb2dVertex(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
128 friend void importAcDb3PointAngularDimension(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
129 friend void importAcDb2dPolyline(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
130 friend void importAcDb3dPolyline(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
131 friend void importAcDb3dPolylineVertex(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
132 friend void importAcDb3dSolid(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
133 friend void importAcDbAlignedDimension(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
134 friend void importAcDbArc(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
135 friend void importAcDbAttribute(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
136 friend void importAcDbAttributeDefinition(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
137 friend void importAcDbBlockBegin(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
138 friend void importAcDbBlockEnd(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
139 friend void importAcDbBlockReference(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
140 friend void importAcDbBody(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
141 friend void importAcDbCircle(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
142 friend void importAcDbCurve(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
143 friend void importAcDbDiametricDimension(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
144 friend void importAcDbDimension(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
145 friend void importAcDbEllipse(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
146 friend void importAcDbFace(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
147 friend void importAcDbFaceRecord(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
148 friend void importAcDbFcf(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
149 friend void importAcDbFrame(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
150 friend void importAcDbHatch(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
151 friend void importAcDbLeader(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
152 friend void importAcDbLine(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
153 friend void importAcDbMInsertBlock(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
154 friend void importAcDbMText(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
155 #ifdef MTEXT_EXPLODE_FRAGMENTS 156 friend static int callback_AcDbMTextFragments(AcDbMTextFragment *frag,
void *param);
158 friend void importAcDbMline(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
159 friend void importAcDbOle2Frame(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
160 friend void importAcDbOleFrame(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
161 friend void importAcDbOrdinateDimension(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
162 friend void importAcDbPoint(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
163 friend void importAcDbPolyFaceMesh(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
164 friend void importAcDbPolyFaceMeshVertex(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
165 friend void importAcDbPolygonMesh(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
166 friend void importAcDbPolygonMeshVertex(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
167 friend void importAcDbPolyline(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
168 friend void importAcDbProxyEntity(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
169 friend void importAcDbRadialDimension(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
170 friend void importAcDbRasterImage(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
171 friend void importAcDbRay(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
172 friend void importAcDbRegion(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
173 friend void importAcDbRotatedDimension(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
174 friend void importAcDbSequenceEnd(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
175 friend void importAcDbShape(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
176 friend void importAcDbSolid(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
177 friend void importAcDbSpline(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
178 friend void importAcDbTable(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
179 friend void importAcDbText(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
180 friend void importAcDbTrace(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
181 friend void importAcDbVertex(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
182 friend void importAcDbViewport(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
183 friend void importAcDbWipeout(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
184 friend void importAcDbXline(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
185 friend void importAcDbZombieEntity(
MrDwgReader * mrDwgReader, AcDbEntity *pEnt);
188 virtual void importAcDb2LineAngularDimension(AcDbEntity *pEnt);
189 virtual void importAcDb2dVertex(AcDbEntity *pEnt);
190 virtual void importAcDb3PointAngularDimension(AcDbEntity *pEnt);
191 virtual void importAcDb2dPolyline(AcDbEntity *pEnt);
192 virtual void importAcDb3dPolyline(AcDbEntity *pEnt);
193 virtual void importAcDb3dPolylineVertex(AcDbEntity *pEnt);
194 virtual void importAcDb3dSolid(AcDbEntity *pEnt);
195 virtual void importAcDbAlignedDimension(AcDbEntity *pEnt);
196 virtual void importAcDbArc(AcDbEntity *pEnt);
197 virtual void importAcDbAttribute(AcDbEntity *pEnt);
198 virtual void importAcDbAttributeDefinition(AcDbEntity *pEnt);
199 virtual void importAcDbBlockBegin(AcDbEntity *pEnt);
200 virtual void importAcDbBlockEnd(AcDbEntity *pEnt);
201 virtual void importAcDbBlockReference(AcDbEntity *pEnt);
202 virtual void importAcDbBody(AcDbEntity *pEnt);
203 virtual void importAcDbCircle(AcDbEntity *pEnt);
204 virtual void importAcDbCurve(AcDbEntity *pEnt);
205 virtual void importAcDbDiametricDimension(AcDbEntity *pEnt);
206 virtual void importAcDbDimension(AcDbEntity *pEnt);
207 virtual void importAcDbEllipse(AcDbEntity *pEnt);
208 virtual void importAcDbFace(AcDbEntity *pEnt);
209 virtual void importAcDbFaceRecord(AcDbEntity *pEnt);
210 virtual void importAcDbFcf(AcDbEntity *pEnt);
211 virtual void importAcDbFrame(AcDbEntity *pEnt);
212 virtual void importAcDbHatch(AcDbEntity *pEnt);
213 virtual void importAcDbLeader(AcDbEntity *pEnt);
214 virtual void importAcDbLine(AcDbEntity *pEnt);
215 virtual void importAcDbMInsertBlock(AcDbEntity *pEnt);
216 virtual void importAcDbMText(AcDbEntity *pEnt);
217 #ifdef MTEXT_EXPLODE_FRAGMENTS 218 virtual void importAcDbMTextFragment(AcDbMTextFragment* pAcDbMTextFragment, AcDbEntity* pEnt);
220 virtual void importAcDbMline(AcDbEntity *pEnt);
221 virtual void importAcDbOle2Frame(AcDbEntity *pEnt);
222 virtual void importAcDbOleFrame(AcDbEntity *pEnt);
223 virtual void importAcDbOrdinateDimension(AcDbEntity *pEnt);
224 virtual void importAcDbPoint(AcDbEntity *pEnt);
225 virtual void importAcDbPolyFaceMesh(AcDbEntity *pEnt);
226 virtual void importAcDbPolyFaceMeshVertex(AcDbEntity *pEnt);
227 virtual void importAcDbPolygonMesh(AcDbEntity *pEnt);
228 virtual void importAcDbPolygonMeshVertex(AcDbEntity *pEnt);
229 virtual void importAcDbPolyline(AcDbEntity *pEnt);
230 virtual void importAcDbProxyEntity(AcDbEntity *pEnt);
231 virtual void importAcDbRadialDimension(AcDbEntity *pEnt);
232 virtual void importAcDbRasterImage(AcDbEntity *pEnt);
233 virtual void importAcDbRay(AcDbEntity *pEnt);
234 virtual void importAcDbRegion(AcDbEntity *pEnt);
235 virtual void importAcDbRotatedDimension(AcDbEntity *pEnt);
236 virtual void importAcDbSequenceEnd(AcDbEntity *pEnt);
237 virtual void importAcDbShape(AcDbEntity *pEnt);
238 virtual void importAcDbSolid(AcDbEntity *pEnt);
239 virtual void importAcDbSpline(AcDbEntity *pEnt);
240 virtual void importAcDbTable(AcDbEntity *pEnt);
241 virtual void importAcDbText(AcDbEntity *pEnt);
242 virtual void importAcDbTrace(AcDbEntity *pEnt);
243 virtual void importAcDbVertex(AcDbEntity *pEnt);
244 virtual void importAcDbViewport(AcDbEntity *pEnt);
245 virtual void importAcDbWipeout(AcDbEntity *pEnt);
246 virtual void importAcDbXline(AcDbEntity *pEnt);
247 virtual void importAcDbZombieEntity(AcDbEntity *pEnt);
249 virtual void linkDimension(AcDbDimension * pDim);
251 virtual void DrawEntity(AcDbEntity *pEnt, AcGiRegenType regenType);
253 virtual HC_KEY GetBlockTableRecordSegKey(AcDbBlockTableRecord *pRecord);
254 virtual HC_KEY GetAttrStateSegKey(AcDbEntity *pEnt,
bool is_zombie_entity =
false);
255 void ProcessMaterial(AcDbMaterial * material, AcGiMapper * material_mapper);
256 bool RecursiveFileSearch(
const wchar_t * in_file_name,
const wchar_t * in_file_path,
wchar_t * out_file_found_path);
257 virtual HC_KEY GetLayoutSegKey(ACHAR *layoutName);
258 virtual HC_KEY GetLayerSegKey(ACHAR *layoutName);
260 virtual void importXdata(AcDbEntity *pEnt);
261 virtual bool importEntity(AcDbEntity *pEnt);
262 void importEntityFromHandle(AcDbHandle handle);
263 virtual void importBlockTable(AcDbBlockTable *pBlockTable);
264 virtual void importViewportTable(AcDbViewportTable *pViewportTable);
266 virtual void importLayerTable(AcDbLayerTable *pLayerTable);
267 virtual bool applyEntityLinetype(AcDbEntity *pEnt);
268 virtual bool importLinetypeAndApply(AcDbLinetypeTableRecord *pLinetypeRecord,
double scale);
274 AcDbObjectId linetypeId;
277 typedef std::vector<mLineStyleDefComponent> mLineStyleDef;
278 std::map<AcDbHandle, mLineStyleDef> m_MlineStyles;
280 virtual void importMlineStyleDictionary(AcDbDictionary *pDictionary);
282 bool m_skip_unreferenced_blocks;
283 wchar_t m_texture_directory[4096];
Definition: MrDwgReader.h:270
Definition: MrDwgReader.h:37
Definition: MrDwgReader.h:97
Definition: MrDwgReader.h:87