23 #ifndef HDWG_HELPER_H_
24 #define HDWG_HELPER_H_ 1
44 #include "BOpcodeShell.h"
60 #include "dbmleader.h"
68 #define _t(str) L##str
69 typedef unsigned int UINT;
78 struct AcDbMTextFragment;
85 class AcDbMInsertBlock;
89 class AcDbPolygonMesh;
98 void condition_string_for_segment_name(
char* zString);
99 void condition_string_for_segment_name(
wchar_t* zString);
100 void condition_string_for_user_options(
char* zString);
101 void condition_string_for_user_options(
wchar_t* zString);
102 void condition_string_for_special_characters(
wchar_t* zString);
105 void Get_Image_Rectangle_For_Shell(AcDbRasterImage* pEnt,
HPoint * Rect);
107 void InsertClipRegion(AcDbRasterImage* pEnt, BStreamFileToolkit * pBStreamtk = 0);
108 int GetImageFileName(AcDbRasterImageDef* ImageDef,
char * pFilePath,
char * pImageName) ;
110 int GetCameraForInitialView(
HCamera &camera , AcDbViewportTableRecord* pRecord);
114 void GetModelingMatrixForText(
float my_center[],
float my_path1[],
float my_norm1[],
float h_matrix_trans[]);
116 TK_Status WriteObject(BBaseOpcodeHandler * handler, BStreamFileToolkit * tk, FILE * fp,
char * buffer,
int size);
118 void get_layout_data(AcDbObjectId viewPortId,AcDbDatabase *pAcDbDatabase,
HPoint *ClipPoint,
float *matrix,
int *no_ClipPoint,AcCmEntityColor* entityColor,
bool * is_On);
120 void ConverToLower(
char * to_lower);
122 bool hio_dwg_check_file_exist(
const wchar_t * full_filepath);
124 BOOL insertClip(AcDbBlockReference * ref, BStreamFileToolkit * pBStreamtk = 0);
126 bool CheckForInvalidExtents(AcDbEntity * pEnt);
128 inline void extract_matrix(AcGeMatrix3d
const & in_mat,
float out_mat[16])
130 AcGeMatrix3d trans_matrix(in_mat);
131 trans_matrix.transposeIt();
132 for (
int i = 0; i < 4; i++)
134 for (
int j = 0; j < 4; j++)
136 out_mat[4 * i + j] = (float)trans_matrix(i, j);
145 #define HDWG_PI ((double)3.14159265358979323846)
146 #define HDWG_F_PI ((float)HDWG_PI)
147 #define H_MM_TO_POINTS 2.83465f
148 #define H_LWDEFAULT AcDb::kLnWt025;
149 #define HDWG_MATERIALS_LIBRARY_SEGMENT "DWG_MATERIALS_STYLE_LIBRARY"
150 #define HIODWG_SCRATCH_SEGMENT "/include library/dwg_scratch_segment"
152 #define GetBValueFromRGBM(rgbm) ((unsigned char)(rgbm))
153 #define GetGValueFromRGBM(rgbm) ((unsigned char)((unsigned long)(rgbm)>>8))
154 #define GetRValueFromRGBM(rgbm) ((unsigned char)((unsigned long)(rgbm)>>16))
155 #define GetMValueFromRGBM(rgbm) ((unsigned char)((unsigned long)(rgbm)>>24))
157 #define countof(array) sizeof(array)/sizeof(array[0])
158 #define nEntNames countof(EntityList)
161 #define MARKER_OPCODE_START_FILL -1
162 #define MARKER_OPCODE_RESTART_FILL -2
163 #define MARKER_OPCODE_END_FILL -3
164 #define MARKER_OPCODE_ELLIPSE -4
165 #define MARKER_OPCODE_CIRCULAR_ARC -5
166 #define MARKER_OPCODE_INFINITE_LINE -6
167 #define MARKER_OPCODE_INFINITE_RAY -7
168 #define MARKER_OPCODE_START_CONTRAST_COLOR -8
169 #define MARKER_OPCODE_START_NORMAL_COLOR -9
170 #define MARKER_OPCODE_START_RGB_COLOR -10
171 #define MARKER_OPCODE_START_INDEXED_COLOR -11
172 #define MARKER_OPCODE_TERMINATE 0
173 #define MARKER_OPCODE_POINT 1
174 #define MARKER_OPCODE_LINE_2 2
175 #define MARKER_OPCODE_LINE_3 3
176 #define MARKER_OPCODE_LINE_4 4
177 #define MARKER_OPCODE_LINE_5 5
178 #define MARKER_OPCODE_LINE_6 6
179 #define MARKER_OPCODE_LINE_7 7
180 #define MARKER_OPCODE_LINE_8 8
181 #define MARKER_OPCODE_LINE_9 9
182 #define MARKER_OPCODE_LINE_10 10
183 #define MARKER_OPCODE_LINE_11 11
184 #define MARKER_OPCODE_LINE_12 12
185 #define MARKER_OPCODE_LINE_13 13
188 const char PDMODE_4[] =
191 MARKER_OPCODE_LINE_2, 0, 0,
193 MARKER_OPCODE_TERMINATE
196 const char PDMODE_34[] =
199 MARKER_OPCODE_LINE_2, -100, 0,
201 MARKER_OPCODE_LINE_2, 0, -100,
203 MARKER_OPCODE_ELLIPSE, -60, -60, 60, 60,
205 MARKER_OPCODE_TERMINATE
208 const char PDMODE_35[] =
211 MARKER_OPCODE_LINE_2, -100, -100,
213 MARKER_OPCODE_LINE_2, -100, 100,
215 MARKER_OPCODE_ELLIPSE, -100, -100, 100, 100,
217 MARKER_OPCODE_TERMINATE
220 const char PDMODE_36[] =
223 MARKER_OPCODE_LINE_2, 0, 0,
225 MARKER_OPCODE_ELLIPSE, -100, -100, 100, 100,
227 MARKER_OPCODE_TERMINATE
230 const char PDMODE_66[] =
233 MARKER_OPCODE_LINE_2, -100, 0,
235 MARKER_OPCODE_LINE_2, 0, -100,
237 MARKER_OPCODE_LINE_5, -60, -60, -60, 60,
238 60, 60, 60, -60, -60, -60,
239 MARKER_OPCODE_TERMINATE
242 const char PDMODE_68[] =
245 MARKER_OPCODE_LINE_2, 0, 0,
247 MARKER_OPCODE_LINE_5, -100, -100, -100, 100,
248 100, 100, 100, -100,-100, -100,
249 MARKER_OPCODE_TERMINATE
252 const char PDMODE_96[] =
255 MARKER_OPCODE_ELLIPSE, -100, -100, 100, 100,
256 MARKER_OPCODE_LINE_5, -100, -100, -100, 100,
257 100, 100, 100, -100,-100, -100,
258 MARKER_OPCODE_POINT, 0, 0,
259 MARKER_OPCODE_TERMINATE
262 const char PDMODE_97[] =
265 MARKER_OPCODE_ELLIPSE, -100, -100, 100, 100,
266 MARKER_OPCODE_LINE_5, -100, -100, -100, 100,
267 100, 100, 100, -100,-100, -100,
268 MARKER_OPCODE_TERMINATE
271 const char PDMODE_98[] =
274 MARKER_OPCODE_LINE_2, -100, 0,
276 MARKER_OPCODE_LINE_2, 0, -100,
278 MARKER_OPCODE_LINE_5, -60, -60, -60, 60,
279 60, 60, 60, -60, -60, -60,
280 MARKER_OPCODE_ELLIPSE, -60, -60, 60, 60,
281 MARKER_OPCODE_TERMINATE
284 const char PDMODE_99[] =
287 MARKER_OPCODE_LINE_2, -100, -100,
289 MARKER_OPCODE_LINE_2, -100, 100,
291 MARKER_OPCODE_LINE_5, -100, -100, -100, 100,
292 100, 100, 100, -100, -100, -100,
293 MARKER_OPCODE_ELLIPSE, -100, -100, 100, 100,
294 MARKER_OPCODE_TERMINATE
297 const char PDMODE_100[] =
300 MARKER_OPCODE_ELLIPSE, -100, -100, 100, 100,
301 MARKER_OPCODE_LINE_2, 0, 0,
303 MARKER_OPCODE_LINE_5, -100, -100, -100, 100,
304 100, 100, 100, -100, -100, -100,
305 MARKER_OPCODE_ELLIPSE, -100, -100, 100, 100,
306 MARKER_OPCODE_TERMINATE
312 Adesk::Int16 iSymbolPDMODE;
314 const char *pSymbolDefinition;
315 unsigned int nSybolDefinitionSize;
321 0,
".", 0, 0, TKO_Marker_Dot,
322 2,
"+", 0, 0, TKO_Marker_Plus,
323 3,
"x", 0, 0, TKO_Marker_X,
324 4,
"PDMODE_4", PDMODE_4, countof(PDMODE_4), -1,
326 32,
"(.)", 0, 0, TKO_Marker_Circle_Dot,
327 33,
"O", 0, 0, TKO_Marker_Circle ,
328 34,
"PDMODE_34", PDMODE_34, countof(PDMODE_34), -1,
329 35,
"PDMODE_35", PDMODE_35, countof(PDMODE_35), -1,
330 36,
"PDMODE_36", PDMODE_36, countof(PDMODE_36), -1,
332 64,
"[.]", 0, 0, TKO_Marker_Box_Dot,
333 65,
"[]", 0, 0, TKO_Marker_Box,
334 66,
"PDMODE_66", PDMODE_66, countof(PDMODE_66), -1,
335 67,
"[x]", 0, 0, TKO_Marker_Box_X ,
336 68,
"PDMODE_68", PDMODE_68, countof(PDMODE_68), -1,
338 96,
"PDMODE_96", PDMODE_96, countof(PDMODE_96), -1,
339 97,
"PDMODE_97", PDMODE_97, countof(PDMODE_97), -1,
340 98,
"PDMODE_98", PDMODE_98, countof(PDMODE_98), -1,
341 99,
"PDMODE_99", PDMODE_99, countof(PDMODE_99), -1,
342 100,
"PDMODE_100", PDMODE_100, countof(PDMODE_100),-1
349 const wchar_t *pName;
350 void (* func)(AcDbEntity *);
356 L
"AcDbBlockReference", 0,
357 L
"AcDbMInsertBlock", 0,
360 L
"AcDbBlockTableRecord", 0,
368 L
"AcDbPolyFaceMesh", 0,
369 L
"AcDbPolygonMesh", 0,
370 L
"AcDbExtrudedSurface", 0,
377 L
"AcDb2dPolyline", 0,
378 L
"AcDb3dPolyline", 0,
390 L
"AcDb3dPolylineVertex", 0,
393 L
"AcDbPolyFaceMeshVertex", 0,
394 L
"AcDbPolygonMeshVertex", 0,
395 L
"AcDbBlockBegin", 0,
401 L
"AcDbRasterImage", 0,
402 L
"AcDbZombieEntity", 0,
403 L
"AcDbSequenceEnd", 0,
406 L
"AcDbFaceRecord", 0,
408 L
"AcDb2LineAngularDimension", 0,
409 L
"AcDb3PointAngularDimension", 0,
410 L
"AcDbAlignedDimension", 0,
411 L
"AcDbDiametricDimension", 0,
412 L
"AcDbOrdinateDimension", 0,
413 L
"AcDbRadialDimension", 0,
414 L
"AcDbRotatedDimension", 0,
415 L
"AcDbArcDimension", 0,
423 L
"AcDbAttributeDefinition", 0,
440 virtual void importAcDbMTextFragment(AcDbMTextFragment* pAcDbMTextFragment, AcDbMText* pOrigAcDbMText) = 0;
442 virtual Adesk::Boolean import_circle(
const AcGePoint3d& pt1,
443 const AcGePoint3d& pt2,
444 const AcGePoint3d& pt3,
445 AcDbEntity* pDatabaseEntity)
const = 0;
447 Adesk::Boolean import_circle(
const AcGePoint3d& center,
449 const AcGeVector3d& normal,
450 AcDbEntity* pDatabaseEntity
453 virtual Adesk::Boolean import_circular_arc(
const AcGePoint3d& center,
455 const AcGeVector3d& normal,
456 const AcGeVector3d& startVector,
457 const double sweepAngle,
458 const AcGiArcType arcType,
459 AcDbEntity* pDatabaseEntity
462 virtual Adesk::Boolean import_circular_arc(
const AcGePoint3d& start,
463 const AcGePoint3d& point,
464 const AcGePoint3d& end,
465 const AcGiArcType arcType,
466 AcDbEntity* pDatabaseEntity
469 virtual Adesk::Boolean import_polygon(
const Adesk::UInt32 nbPoints,
470 const AcGePoint3d* pVertexList,
471 AcDbEntity* pDatabaseEntity
474 virtual Adesk::Boolean import_polyline(
const Adesk::UInt32 nbPoints,
475 const AcGePoint3d* pVertexList,
476 const AcGeVector3d* pNormal,
477 Adesk::LongPtr lBaseSubEntMarker,
478 AcDbEntity* pDatabaseEntity)
const = 0;
480 virtual Adesk::Boolean import_pline(
const AcDbPolyline& lwBuf,
481 Adesk::UInt32 fromIndex,
482 Adesk::UInt32 numSegs,
483 AcDbEntity* pDatabaseEntity)
const = 0;
485 Adesk::Boolean import_polypoint(
const Adesk::UInt32 nbPoints,
486 const AcGePoint3d* pVertexList,
487 const AcGeVector3d* pNormal,
488 const Adesk::LongPtr * pSubEntMarkers,
489 AcDbEntity* pDatabaseEntity)
const
490 {
return Adesk::kFalse;};
492 virtual Adesk::Boolean import_mesh(
const Adesk::UInt32 rows,
493 const Adesk::UInt32 columns,
494 const AcGePoint3d* pVertexList,
495 const AcGiEdgeData* pEdgeData,
496 const AcGiFaceData* pFaceData,
497 const AcGiVertexData* pVertexData,
498 const bool bAutoGenerateNormals,
499 AcDbEntity* pDatabaseEntity
502 virtual Adesk::Boolean import_shell(
const Adesk::UInt32 nbVertex,
503 const AcGePoint3d* pVertexList,
504 const Adesk::UInt32 faceListSize,
505 const Adesk::Int32* pFaceList,
506 const AcGiEdgeData* pEdgeData,
507 const AcGiFaceData* pFaceData ,
508 const AcGiVertexData* pVertexData,
509 const struct resbuf* pResBuf,
510 const bool bAutoGenerateNormals,
511 AcDbEntity* pDatabaseEntity
514 virtual Adesk::Boolean import_text(
const AcGePoint3d& position,
515 const AcGeVector3d& normal,
516 const AcGeVector3d& direction,
519 const double oblique,
521 AcDbEntity* pDatabaseEntity
524 virtual Adesk::Boolean import_text(
const AcGePoint3d& position,
525 const AcGeVector3d& normal,
526 const AcGeVector3d& direction,
528 const Adesk::LongPtr length,
529 const Adesk::Boolean raw,
530 const AcGiTextStyle &pTextStyle,
531 AcDbEntity* pDatabaseEntity
534 virtual void pushModelTransform(AcGeMatrix3d
const & xMat) = 0;
535 virtual void popModelTransform() = 0;
538 double get_deviation()
const {
return m_Deviation; }
540 void set_deviation(
double dev ) { m_Deviation = dev; }
542 int get_num_isolines()
const {
return m_numIsolines; }
544 void setIs2dEntity(
bool val) { m_bIs2DEntity = val;}
550 void importAcDbPoint(AcDbPoint *pAcDbPoint);
551 void importAcDbMText(AcDbMText* pAcDbMText);
552 void importAcDbCircle(AcDbCircle* pAcDbCircle);
553 void importAcDbMaterial(AcDbMaterial *pAcDbMaterial);
555 bool shouldOverrideMaterial(AcDbMaterial * pAcDbMaterial);
556 bool hasValidRGBValues(AcCmEntityColor
const * in_color,
float & out_red,
float & out_green,
float & out_blue)
const;
558 virtual void importXdata(AcDbEntity *pEnt)=0;
559 virtual void importXdata(resbuf *pBuf) = 0;
560 void import_hyperlinks(AcDbEntity *pEnt);
561 virtual void attachDWGHandle(AcDbEntity *pEnt)=0;
563 virtual bool get_entity_rgb(AcDbEntity *pEnt,
const AcDbLayerTableRecord *pLayerTableRecord,
float& red,
float& green,
float& blue,
bool& is_by_block,
bool for_blk_ref=
false);
564 virtual void get_entity_transparency(AcDbEntity *pEnt,
const AcDbLayerTableRecord *pLayerTableRecord,
int &alpha_value,
bool& is_by_block );
565 virtual void get_entity_visibility(AcDbEntity *pEnt,
const AcDbLayerTableRecord *pLayerTableRecord,
bool& is_visible );
566 virtual void get_entity_line_weight(AcDbEntity *pEnt,
const AcDbLayerTableRecord *pLayerTableRecord,
float& ret_line_weight,
bool& is_by_block);
571 wchar_t* m_pDWGTextureDirectory;
572 bool m_bDrawWireframe;
576 bool m_bImportWireframeForBrep;
578 struct vlist_s* m_listRegAppNames;
579 struct vlist_s* m_listEntityType;
580 bool m_bAttachDWGHandles;
581 bool m_bAmIsolidHatch;
592 int m_nSolid3D_count;
594 int m_nPloyLine_count;
597 int m_nPloygon_count;
599 wchar_t const * m_fileName;
600 std::map<int, wchar_t*> layer_record;
601 std::map<int, wchar_t*> group_record;
602 std::map<int, wchar_t*> entity_record;
603 std::map<int, wchar_t*> block_ref_record;
604 std::vector<AcDbObjectId> m_VpIdCount;
606 struct vlist_s* m_listDWGLayouts;
607 bool m_bImportAllLayouts;
609 bool m_bIgnoreOffEntity;
610 double m_dGlobalScaleFactor;
613 bool m_bDWGInsertMeshesAsShells;
614 bool m_bDisableDWGDrawOrder;
630 isVisible = visibility;
636 mutable std::map<std::wstring, std::string> m_fontmap;
637 void populate_fontmap()
const;
644 destinationKey = dKey;
654 AcDbHandle dimensionHandle;
655 AcDbBlockTableRecord * dimensionBTR;
657 std::vector<dimensionData> m_dimensions;
658 virtual void recomputeAndImportDimensions(std::vector<dimensionData> * dimensionVector) = 0;
667 m_CurrentLayoutName = 0;
671 virtual void recomputeAndImportDimensions(std::vector<dimensionData> * dimensionVector);
676 virtual void importAcDbMTextFragment(AcDbMTextFragment* pAcDbMTextFragment, AcDbMText* pOrigAcDbMText);
677 virtual void importAcDbDimension(AcDbDimension* pAcDbDimension);
679 Adesk::Boolean import_circle(
const AcGePoint3d& pt1,
680 const AcGePoint3d& pt2,
681 const AcGePoint3d& pt3,
682 AcDbEntity* pDatabaseEntity)
const;
684 Adesk::Boolean import_circle(
const AcGePoint3d& center,
686 const AcGeVector3d& normal,
687 AcDbEntity* pDatabaseEntity
690 Adesk::Boolean import_circular_arc(
const AcGePoint3d& center,
692 const AcGeVector3d& normal,
693 const AcGeVector3d& startVector,
694 const double sweepAngle,
695 const AcGiArcType arcType,
696 AcDbEntity* pDatabaseEntity
699 Adesk::Boolean import_circular_arc(
const AcGePoint3d& start,
700 const AcGePoint3d& point,
701 const AcGePoint3d& end,
702 const AcGiArcType arcType,
703 AcDbEntity* pDatabaseEntity
706 Adesk::Boolean import_polygon(
const Adesk::UInt32 nbPoints,
707 const AcGePoint3d* pVertexList,
708 AcDbEntity* pDatabaseEntity
710 HC_KEY HDWG_3dgsImporter::extrude_pline(AcGePoint3dArray dwgPoints, AcGeVector3d normal,
double line_thickness)
const;
711 Adesk::Boolean import_polyline(
const Adesk::UInt32 nbPoints,
712 const AcGePoint3d* pVertexList,
713 const AcGeVector3d* pNormal,
714 Adesk::LongPtr lBaseSubEntMarker,
715 AcDbEntity* pDatabaseEntity)
const;
717 void import_extruded_pline(
const AcDbPolyline& lwBuf,
int i, AcDbEntity* pDatabaseEntity)
const;
718 void import_exploded_pline(
const AcDbPolyline& lwBuf,
int i, AcDbEntity* pDatabaseEntity)
const;
719 void import_fancy_pline(
const AcDbPolyline& lwBuf, AcDbEntity* pDatabaseEntity)
const;
721 Adesk::Boolean import_pline(
const AcDbPolyline& lwBuf,
722 Adesk::UInt32 fromIndex,
723 Adesk::UInt32 numSegs,
724 AcDbEntity* pDatabaseEntity)
const;
725 HC_KEY extrude_elliptical_arc (
727 const double thickness,
734 Adesk::Boolean import_polypoint(
const Adesk::UInt32 nbPoints,
735 const AcGePoint3d* pVertexList,
736 const AcGeVector3d* pNormal,
737 const Adesk::LongPtr * pSubEntMarkers,
738 AcDbEntity* pDatabaseEntity)
const
739 {
return Adesk::kFalse;};
741 Adesk::Boolean import_mesh(
const Adesk::UInt32 rows,
742 const Adesk::UInt32 columns,
743 const AcGePoint3d* pVertexList,
744 const AcGiEdgeData* pEdgeData,
745 const AcGiFaceData* pFaceData,
746 const AcGiVertexData* pVertexData,
747 const bool bAutoGenerateNormals,
748 AcDbEntity* pDatabaseEntity
751 Adesk::Boolean import_shell(
const Adesk::UInt32 nbVertex,
752 const AcGePoint3d* pVertexList,
753 const Adesk::UInt32 faceListSize,
754 const Adesk::Int32* pFaceList,
755 const AcGiEdgeData* pEdgeData,
756 const AcGiFaceData* pFaceData ,
757 const AcGiVertexData* pVertexData,
758 const struct resbuf* pResBuf,
759 const bool bAutoGenerateNormals,
760 AcDbEntity* pDatabaseEntity
763 Adesk::Boolean import_text(
const AcGePoint3d& position,
764 const AcGeVector3d& normal,
765 const AcGeVector3d& direction,
768 const double oblique,
770 AcDbEntity* pDatabaseEntity
773 Adesk::Boolean import_text(
const AcGePoint3d& position,
774 const AcGeVector3d& normal,
775 const AcGeVector3d& direction,
777 const Adesk::LongPtr length,
778 const Adesk::Boolean raw,
779 const AcGiTextStyle &pTextStyle,
780 AcDbEntity* pDatabaseEntity
783 HC_KEY import_text(
float my_center[],
786 wchar_t const * text,
787 const char* alignment
790 HC_KEY apply_transforms_and_insert_text(
float my_center[],
793 wchar_t const * text,
794 const char* alignment
797 void pushModelTransform(AcGeMatrix3d
const & xMat);
798 void popModelTransform();
802 void importAcDbEntity(AcDbEntity* pEnt,
HC_KEY parent_seg = INVALID_KEY,
bool for_blk_ref=
false);
803 void importAcDbEntity(AcDbEntity *pEnt,
const bool& draw_shaded,
804 HC_KEY parent_seg = INVALID_KEY,
bool for_blk_ref=
false);
806 void importAcDbBlockReference(AcDbBlockReference *pAcDbBlockReference,
HC_KEY parent_seg = INVALID_KEY,
int mib_col=0,
int mib_row=0);
807 void importAcDbMInsertBlock(AcDbMInsertBlock *pAcDbMInsertBlock,
HC_KEY parent_seg);
809 void importAcDbPoint(AcDbPoint *pAcDbPoint);
810 void importAcDbCircle(AcDbCircle* pAcDbCircle);
811 void importAcDbMaterial(AcDbMaterial *pAcDbMaterial, AcGiMapper mapper);
812 void importLBGEData();
813 void importAcDbLine(AcDbLine *pAcDbLine);
814 void importAcDb3dPolyline(AcDb3dPolyline *pAcDbPolyline);
815 void importAcDbXline(AcDbXline* pXline);
816 void importAcDbRay(AcDbRay* pRay);
817 void importAcDbViewport(AcDbViewport* pViewport);
818 void importAcDbRasterImage(AcDbRasterImage* pEnt);
819 void importAcDbMLeader(AcDbMLeader* pEnt);
820 void importAcDbLight(AcDbLight* pEnt);
822 void importAcDbTable(AcDbTable* pAcDbTable);
824 void importXdata(AcDbEntity *pEnt);
825 void importBlockTableRecord(AcDbBlockTableRecord* pRecord);
826 void attachDWGHandle(AcDbEntity *pEnt);
828 void get_entity_material_style(AcDbEntity* pEnt,
const AcDbLayerTableRecord *pLayerTableRecord,
HC_KEY& style_key);
830 virtual void importXdata(resbuf *pBuf);
831 void import_hyperlinks(AcDbEntity *pEnt);
832 void set_marker_settings(
const Adesk::Int16 db_pdmode,
const double db_pdsize );
834 void import_entity_linetype(AcDbEntity *pEnt,
const AcDbLayerTableRecord *pLayerTableRecord);
835 void import_entity_linetype(
const AcDbObjectId& pLinetypeId,
double linetype_scale);
836 void import_layout(AcDbDatabase *pAcDbDatabase);
837 void update_layout_list(AcDbDatabase* pAcDbDatabase);
838 void set_initial_view_for_model_space(AcDbDatabase* pAcDbDatabase);
839 void InsertMaskRegion(AcDbRasterImage* pEnt);
842 HC_KEY GetBlockTableRecordSegmentFromId(
const AcDbObjectId& blockTableRecordID,
bool& isNew);
843 HC_KEY GetBlockTableRecordSegmentForEntity(AcDbEntity *pEnt);
846 wchar_t* m_CurrentLayoutName;
847 std::map<void * , HC_KEY> m_Segments_map;
848 std::map<void * , HC_KEY>::const_iterator m_keymap_ieterator;
851 int m_nTotalEntities;
852 int m_nCurrentEntityCount;
853 void GetNoOfEntitiesForProgressBar(AcDbDatabase* pAcDbDatabase);
865 virtual void recomputeAndImportDimensions(std::vector<dimensionData> * dimensionVector);
869 BStreamFileToolkit *m_pBStreamtk;
870 char *m_pBStreamBuffer;
871 int m_nBStreamBuffSize;
872 int m_nBStreamBuffCount;
874 struct vhash_s * m_vhash_StyleSegName_IsPresentFlag;
875 struct vhash_s * m_vhash_SegName_IsPresentFlag;
882 virtual void importAcDbMTextFragment(AcDbMTextFragment* pAcDbMTextFragment, AcDbMText* pOrigAcDbMText);
883 virtual void importAcDbDimension(AcDbDimension* pAcDbDimension,
dimensionAttributes dimAtt);
884 void import_exploded_pline(
const AcDbPolyline& lwBuf,
int i, AcDbEntity* pDatabaseEntity)
const;
885 void import_extruded_pline(
const AcDbPolyline& lwBuf,
int i, AcDbEntity* pDatabaseEntity)
const;
886 void import_fancy_pline(
const AcDbPolyline& lwBuf, AcDbEntity* pDatabaseEntity)
const;
887 void extrude_pline(AcGePoint3dArray dwgPoints, AcGeVector3d normal,
double line_thickness)
const;
889 Adesk::Boolean import_circle(
const AcGePoint3d& pt1,
890 const AcGePoint3d& pt2,
891 const AcGePoint3d& pt3,
892 AcDbEntity* pDatabaseEntity)
const;
894 Adesk::Boolean import_circle(
const AcGePoint3d& center,
896 const AcGeVector3d& normal,
897 AcDbEntity* pDatabaseEntity
900 Adesk::Boolean import_circular_arc(
const AcGePoint3d& center,
902 const AcGeVector3d& normal,
903 const AcGeVector3d& startVector,
904 const double sweepAngle,
905 const AcGiArcType arcType,
906 AcDbEntity* pDatabaseEntity
909 Adesk::Boolean import_circular_arc(
const AcGePoint3d& start,
910 const AcGePoint3d& point,
911 const AcGePoint3d& end,
912 const AcGiArcType arcType,
913 AcDbEntity* pDatabaseEntity
916 Adesk::Boolean import_polygon(
const Adesk::UInt32 nbPoints,
917 const AcGePoint3d* pVertexList,
918 AcDbEntity* pDatabaseEntity
921 Adesk::Boolean import_polyline(
const Adesk::UInt32 nbPoints,
922 const AcGePoint3d* pVertexList,
923 const AcGeVector3d* pNormal,
924 Adesk::LongPtr lBaseSubEntMarker,
925 AcDbEntity* pDatabaseEntity)
const;
927 Adesk::Boolean import_pline(
const AcDbPolyline& lwBuf,
928 Adesk::UInt32 fromIndex,
929 Adesk::UInt32 numSegs,
930 AcDbEntity* pDatabaseEntity)
const;
932 Adesk::Boolean import_polypoint(
const Adesk::UInt32 nbPoints,
933 const AcGePoint3d* pVertexList,
934 const AcGeVector3d* pNormal,
935 const Adesk::LongPtr * pSubEntMarkers,
936 AcDbEntity* pDatabaseEntity)
const
937 {
return Adesk::kFalse;};
939 Adesk::Boolean import_mesh(
const Adesk::UInt32 rows,
940 const Adesk::UInt32 columns,
941 const AcGePoint3d* pVertexList,
942 const AcGiEdgeData* pEdgeData,
943 const AcGiFaceData* pFaceData,
944 const AcGiVertexData* pVertexData,
945 const bool bAutoGenerateNormals,
946 AcDbEntity* pDatabaseEntity
949 Adesk::Boolean import_shell(
const Adesk::UInt32 nbVertex,
950 const AcGePoint3d* pVertexList,
951 const Adesk::UInt32 faceListSize,
952 const Adesk::Int32* pFaceList,
953 const AcGiEdgeData* pEdgeData,
954 const AcGiFaceData* pFaceData ,
955 const AcGiVertexData* pVertexData,
956 const struct resbuf* pResBuf,
957 const bool bAutoGenerateNormals,
958 AcDbEntity* pDatabaseEntity
961 Adesk::Boolean import_text(
const AcGePoint3d& position,
962 const AcGeVector3d& normal,
963 const AcGeVector3d& direction,
966 const double oblique,
968 AcDbEntity* pDatabaseEntity
971 Adesk::Boolean import_text(
const AcGePoint3d& position,
972 const AcGeVector3d& normal,
973 const AcGeVector3d& direction,
975 const Adesk::LongPtr length,
976 const Adesk::Boolean raw,
977 const AcGiTextStyle &pTextStyle,
978 AcDbEntity* pDatabaseEntity
981 HC_KEY apply_transforms_and_insert_text(
float my_center[],
984 wchar_t const * text,
985 const int alignment)
const;
987 void pushModelTransform(AcGeMatrix3d
const & xMat);
988 void popModelTransform();
990 inline BOOL GetConnectivityCompression() {
return bConnectivityCompression; };
991 inline void SetConnectivityCompression(BOOL val) { bConnectivityCompression = val; }
992 inline BOOL GetVertexCompression() {
return bVertexCompression; }
993 inline void SetVertexCompression(BOOL val) { bVertexCompression = val; }
994 inline BOOL GetNormalCompression() {
return bNormalCompression; }
995 inline void SetNormalCompression(BOOL val) { bNormalCompression = val; }
996 inline BOOL GetImageCompression() {
return bImageCompression; }
997 inline void SetImageCompression(BOOL val) { bImageCompression = val; }
998 inline int GetVertexCompressionBits() {
return m_VertexCompressionBits; }
999 inline void SetVertexCompressionBits(
int val) { m_VertexCompressionBits = val; }
1000 inline int GetNormalCompressionBits() {
return m_NormalCompressionBits; }
1001 inline void SetNormalCompressionBits(
int val) { m_NormalCompressionBits = val; }
1002 inline int GetImageCompressionValue() {
return m_ImageCompressionValue; }
1003 inline void SetImageCompressionValue(
int val) { m_ImageCompressionValue = val; }
1008 void importAcDbEntity(AcDbEntity* pEnt, TK_Open_Segment* parent_seg = NULL,
bool for_blk_ref=
false,
dimensionAttributes * dAtt = 0);
1009 void importAcDbEntity(AcDbEntity *pEnt,
const bool& draw_shaded,
int entityType,
1010 TK_Open_Segment* parent_seg = NULL,
bool for_blk_ref=
false,
dimensionAttributes * dAtt = 0);
1013 void importBlockTable(AcDbBlockTable* pBlockTable);
1014 void importAcDbMInsertBlock(AcDbMInsertBlock *pAcDbMInsertBlock,TK_Open_Segment * Open_seg_handler);
1016 void importAcDbBlockReference(AcDbBlockReference *pAcDbBlockReference, TK_Open_Segment* Open_seg_handler = NULL,
1017 int mib_col = 0 ,
int mib_row = 0);
1019 void importAcDbPoint(AcDbPoint *pAcDbPoint);
1020 void importAcDbCircle(AcDbCircle* pAcDbCircle);
1021 void importAcDbMaterial(AcDbMaterial *pAcDbMaterial, AcGiMapper mapper);
1022 void importLBGEData();
1023 void importAcDbLine(AcDbLine *pAcDbLine);
1024 void importAcDbXline(AcDbXline* pXline);
1025 void importAcDb3dPolyline(AcDb3dPolyline *pAcDbPolyline);
1026 void importAcDbRay(AcDbRay* pRay);
1027 void importBlockTableRecord(AcDbBlockTableRecord* pRecord,
dimensionData * dData = 0);
1028 void importAcDbViewport(AcDbViewport* pViewport);
1029 void importAcDbRasterImage(AcDbRasterImage* pEnt);
1030 void importAcDbMLeader(AcDbMLeader* pEnt);
1031 void importAcDbLight(AcDbLight* pEnt);
1033 void importAcDbTable(AcDbTable* pAcDbTable);
1036 void importXdata(AcDbEntity *pEnt);
1037 void attachDWGHandle(AcDbEntity *pEnt);
1038 void get_entity_material_style(AcDbEntity* pEnt,
const AcDbLayerTableRecord *pLayerTableRecord, TK_Open_Segment* &parent_seg);
1039 TK_Open_Segment* GetBlockTableRecordSegmentFromId(
const AcDbObjectId& blockTableRecordID,
bool& isNew);
1040 TK_Open_Segment* GetBlockTableRecordSegmentForEntity(AcDbEntity *pEnt);
1044 virtual void importXdata(resbuf *pBuf);
1045 void import_hyperlinks(AcDbEntity *pEnt);
1046 void set_marker_settings(
const Adesk::Int16 db_pdmode,
const double db_pdsize );
1047 void import_entity_linetype(AcDbEntity *pEnt,
const AcDbLayerTableRecord *pLayerTableRecord);
1048 void import_entity_linetype(
const AcDbObjectId& pLinetypeId,
double linetype_scale);
1049 void InsertMaskRegion(AcDbRasterImage* pEnt);
1050 void import_layout(AcDbDatabase *pAcDbDatabase);
1051 void update_layout_list(AcDbDatabase* pAcDbDatabase);
1052 void set_initial_view_for_model_space(AcDbDatabase* pAcDbDatabase);
1054 BOOL bConnectivityCompression;
1055 BOOL bVertexCompression;
1056 BOOL bNormalCompression;
1057 BOOL bImageCompression;
1058 int m_VertexCompressionBits;
1059 int m_NormalCompressionBits;
1060 int m_ImageCompressionValue;
1061 bool m_bMergeEntityShells;
1062 time_t m_mtImportStart;
1063 wchar_t * m_pFileName;
1065 bool m_bScratchSegOpen;
1066 wchar_t *m_pXref_hsf_path;
1067 mutable bool m_bShellWithFaceColor;
1074 int STREAM_Open_Segment(TK_Open_Segment* open_seg_handler,
const char * segname)
const;
1075 int STREAM_Open_Segment(
const char * segname)
const;
1076 int STREAM_Close_Segment()
const;
1077 int STREAM_Set_Visibility(TKO_Geometry_Bits Geom_Bit,
bool ifOn)
const;
1078 int STREAM_Set_Heuristics(TKO_Heuristic_Bits Heuristic_Bit)
const;
1079 int STREAM_Write_Object(BBaseOpcodeHandler * handler)
const;
1080 static struct _stat m_MasterHsfFileTime;
1082 std::map<void * , const char *> m_Segments_map;
1083 std::map<void * ,const char *>::const_iterator m_iterator_segmap;
1102 virtual AcGiRegenType regenType()
const;
1103 virtual Adesk::Boolean regenAbort()
const;
1104 virtual AcGiSubEntityTraits& subEntityTraits()
const;
1105 virtual AcGiGeometry * rawGeometry()
const;
1106 virtual AcGiWorldGeometry& geometry()
const;
1107 virtual Adesk::Boolean isDragging()
const;
1108 virtual double deviation(
const AcGiDeviationType,
const AcGePoint3d&)
const;
1109 virtual Adesk::UInt32 numberOfIsolines()
const;
1110 virtual AcGiContext * context();
1112 void setDeviation(
double);
1113 void setRegenType(
const AcGiRegenType&);
1116 AcDbEntity* GetCurrentEntity()
const;
1120 AcGiSubEntityTraits* mpSubEntityTraits;
1121 AcGiWorldGeometry* mpWorldGeometry;
1122 AcGiContext* mpContext;
1123 AcGiRegenType mRegenType;
1126 AcDbEntity* m_pAcDbEntity;
1143 Adesk::Boolean isPsOut()
const;
1144 Adesk::Boolean isPlotGeneration()
const;
1145 AcDbDatabase * database()
const;
1146 bool isBoundaryClipping()
const;
1161 virtual Adesk::Boolean draw(AcGiDrawable*)
const;
1163 virtual Adesk::Boolean circle (
const AcGePoint3d& center,
1164 const double radius,
1165 const AcGeVector3d& normal
1168 virtual Adesk::Boolean circle (
const AcGePoint3d& pt1,
1169 const AcGePoint3d& pt2,
1170 const AcGePoint3d& pt3
1173 virtual Adesk::Boolean circularArc(
const AcGePoint3d& center,
1174 const double radius,
1175 const AcGeVector3d& normal,
1176 const AcGeVector3d& startVector,
1177 const double sweepAngle,
1178 const AcGiArcType arcType = kAcGiArcSimple
1181 virtual Adesk::Boolean circularArc(
const AcGePoint3d& start,
1182 const AcGePoint3d& point,
1183 const AcGePoint3d& end,
1184 const AcGiArcType arcType = kAcGiArcSimple
1187 virtual Adesk::Boolean polyline (
const Adesk::UInt32 nbPoints,
1188 const AcGePoint3d* pVertexList,
1189 const AcGeVector3d* pNormal = NULL,
1190 Adesk::LongPtr lBaseSubEntMarker = -1)
const;
1192 virtual Adesk::Boolean polyline(
const AcGiPolyline& polylineObj)
const ;
1194 virtual Adesk::Boolean polyPolyline (Adesk::UInt32 nbPolylines,
1195 const AcGiPolyline* pPolylines)
const;
1196 virtual Adesk::Boolean polyPolygon(
const Adesk::UInt32 numPolygonIndices,
1197 const Adesk::UInt32* numPolygonPositions,
1198 const AcGePoint3d* polygonPositions,
1199 const Adesk::UInt32* numPolygonPoints,
1200 const AcGePoint3d* polygonPoints,
1201 const AcCmEntityColor* outlineColors = NULL,
1202 const AcGiLineType* outlineTypes = NULL,
1203 const AcCmEntityColor* fillColors = NULL,
1204 const AcCmTransparency* fillOpacities = NULL)
const ;
1205 virtual Adesk::Boolean image(
const AcGiImageBGRA32& imageSource,
1206 const AcGePoint3d& position,
1207 const AcGeVector3d& u,
1208 const AcGeVector3d& v,
1209 TransparencyMode transparencyMode
1211 virtual Adesk::Boolean rowOfDots(
int count,
1212 const AcGePoint3d& start,
1213 const AcGeVector3d& step
1215 virtual Adesk::Boolean ellipticalArc(
const AcGePoint3d& center,
1216 const AcGeVector3d& normal,
1217 double majorAxisLength,
1218 double minorAxisLength,
1219 double startDegreeInRads,
1220 double endDegreeInRads,
1221 double tiltDegreeInRads,
1225 virtual Adesk::Boolean polypoint(
const Adesk::UInt32 nbPoints,
1226 const AcGePoint3d* pVertexList,
1227 const AcGeVector3d* pNormal = NULL,
1228 const Adesk::LongPtr * pSubEntMarkers = NULL)
const;
1230 virtual Adesk::Boolean polygon(
const Adesk::UInt32 nbPoints,
1231 const AcGePoint3d* pVertexList
1234 virtual Adesk::Boolean mesh (
const Adesk::UInt32 rows,
1235 const Adesk::UInt32 columns,
1236 const AcGePoint3d* pVertexList,
1237 const AcGiEdgeData* pEdgeData = NULL,
1238 const AcGiFaceData* pFaceData = NULL,
1239 const AcGiVertexData* pVertexData = NULL,
1240 const bool bAutoGenerateNormals =
true
1243 virtual Adesk::Boolean shell(
const Adesk::UInt32 nbVertex,
1244 const AcGePoint3d* pVertexList,
1245 const Adesk::UInt32 faceListSize,
1246 const Adesk::Int32* pFaceList,
1247 const AcGiEdgeData* pEdgeData = NULL,
1248 const AcGiFaceData* pFaceData = NULL,
1249 const AcGiVertexData* pVertexData = NULL,
1250 const struct resbuf* pResBuf = NULL,
1251 const bool bAutoGenerateNormals =
true
1255 virtual Adesk::Boolean text (
const AcGePoint3d& position,
1256 const AcGeVector3d& normal,
1257 const AcGeVector3d& direction,
1258 const double height,
1260 const double oblique,
1264 virtual Adesk::Boolean text(
const AcGePoint3d& position,
1265 const AcGeVector3d& normal,
1266 const AcGeVector3d& direction,
1268 const Adesk::Int32 length,
1269 const Adesk::Boolean raw,
1270 const AcGiTextStyle &pTextStyle
1274 virtual Adesk::Boolean xline (
const AcGePoint3d& one_xline_point,
1275 const AcGePoint3d& a_different_xline_point
1278 virtual Adesk::Boolean ray(
const AcGePoint3d& rays_starting_point,
1279 const AcGePoint3d& a_different_ray_point
1282 virtual Adesk::Boolean pline(
const AcDbPolyline& lwBuf,
1283 Adesk::UInt32 fromIndex = 0,
1284 Adesk::UInt32 numSegs = 0
1287 virtual void getModelToWorldTransform(AcGeMatrix3d &pMatrix)
const;
1288 virtual void getWorldToModelTransform(AcGeMatrix3d &pMatrix)
const;
1289 virtual void setExtents(AcGePoint3d *pNewExtents)
const;
1291 virtual Adesk::Boolean pushModelTransform(
const AcGeVector3d & vNormal);
1292 virtual Adesk::Boolean pushModelTransform(
const AcGeMatrix3d & xMat);
1293 virtual Adesk::Boolean popModelTransform();
1295 virtual Adesk::Boolean pushClipBoundary(AcGiClipBoundary * pBoundary);
1296 virtual void popClipBoundary();
1297 virtual AcGeMatrix3d pushPositionTransform (AcGiPositionTransformBehavior behavior,
const AcGePoint3d& offset);
1298 virtual AcGeMatrix3d pushPositionTransform (AcGiPositionTransformBehavior behavior,
const AcGePoint2d& offset);
1299 virtual AcGeMatrix3d pushScaleTransform (AcGiScaleTransformBehavior behavior,
const AcGePoint3d& extents);
1300 virtual AcGeMatrix3d pushScaleTransform (AcGiScaleTransformBehavior behavior,
const AcGePoint2d& extents);
1301 virtual AcGeMatrix3d pushOrientationTransform (AcGiOrientationTransformBehavior behavior);
1309 unsigned int m_uiOpenSegmentCount;
1324 virtual void setColor(
const Adesk::UInt16 color);
1325 virtual void setTrueColor(
const AcCmEntityColor& color);
1326 virtual void setLayer(
const AcDbObjectId layerId);
1327 virtual void setLineType(
const AcDbObjectId linetypeId);
1328 virtual void setSelectionMarker(
const Adesk::LongPtr markerId);
1329 virtual void setFillType(
const AcGiFillType fillType);
1330 virtual void setLineWeight(
const AcDb::LineWeight lw);
1331 virtual void setLineTypeScale(
double dScale = 1.0);
1334 virtual Adesk::UInt16 color()
const;
1335 virtual AcCmEntityColor trueColor()
const;
1336 virtual AcDbObjectId layerId()
const;
1337 virtual AcDbObjectId lineTypeId()
const;
1338 virtual AcGiFillType fillType()
const;
1339 virtual AcDb::LineWeight lineWeight()
const;
1340 virtual double lineTypeScale()
const;
1342 virtual void setThickness(
double dThickness);
1343 virtual double thickness()
const;
1347 Adesk::UInt16 mColorIndex;
1348 AcCmEntityColor mTrueColor;
1349 AcDbObjectId mLayerId;
1350 AcDbObjectId mLinetypeId;
1351 Adesk::LongPtr mMarkerId;
1352 AcGiFillType mFillType;
1353 AcDb::LineWeight mLineWeight;
1354 double mLineTypeScale;
1370 virtual AcGiViewport& viewport()
const;
1371 virtual AcGiViewportGeometry& geometry()
const;
1372 virtual Adesk::UInt32 sequenceNumber()
const;
1373 virtual Adesk::Boolean isValidId(
const Adesk::ULongPtr acgiId)
const;
1374 virtual AcDbObjectId viewportObjectId()
const;
1376 virtual AcGiRegenType regenType()
const ;
1377 virtual Adesk::Boolean regenAbort()
const {
return Adesk::kFalse;};
1378 virtual AcGiSubEntityTraits& subEntityTraits()
const ;
1379 virtual AcGiGeometry * rawGeometry()
const ;
1380 virtual Adesk::Boolean isDragging()
const {
return Adesk::kFalse;};
1384 virtual double deviation(
const AcGiDeviationType,
const AcGePoint3d&)
const {
return 0.00;};
1385 virtual Adesk::UInt32 numberOfIsolines()
const {
return 0;};
1387 virtual AcGiContext * context();
1390 AcDbEntity* GetCurrentEntity()
const;
1394 AcGiViewportGeometry* mpVpGeometry;
1395 AcDbObjectId mpObjId;
1397 AcGiSubEntityTraits* mpSubEntityTraits;
1398 AcGiContext* mpContext;
1399 AcGiRegenType mRegenType;
1402 AcDbEntity* m_pAcDbEntity;
1412 virtual Adesk::Boolean polylineEye(
const Adesk::UInt32 nbPoints,
1413 const AcGePoint3d* pPoints)
const ;
1414 virtual Adesk::Boolean polygonEye(
const Adesk::UInt32 nbPoints,
1415 const AcGePoint3d* pPoints)
const ;
1417 virtual Adesk::Boolean polylineDc(
const Adesk::UInt32 nbPoints,
1418 const AcGePoint3d* pPoints)
const;
1419 virtual Adesk::Boolean polygonDc(
const Adesk::UInt32 nbPoints,
1420 const AcGePoint3d* pPoints)
const ;
1423 virtual Adesk::Boolean rasterImageDc(
1424 const AcGePoint3d& origin,
1425 const AcGeVector3d& u,
1426 const AcGeVector3d& v,
1427 const AcGeMatrix2d& pixelToDc,
1428 AcDbObjectId entityId,
1429 AcGiImageOrg imageOrg,
1430 Adesk::UInt32 imageWidth,
1431 Adesk::UInt32 imageHeight,
1432 Adesk::Int16 imageColorDepth,
1433 Adesk::Boolean transparency,
1435 const AcGeVector3d& unrotatedU,
1436 const AcGiImageOrg origionalImageOrg,
1437 const AcGeMatrix2d& unrotatedPixelToDc,
1438 const Adesk::UInt32 unrotatedImageWidth,
1439 const Adesk::UInt32 unrotatedImageHeight
1442 virtual Adesk::Boolean ownerDrawDc(
1448 const OwnerDraw* pOwnerDraw
1451 virtual Adesk::Boolean ownerDraw3d(
1452 AcGePoint3d& minBounds,
1453 AcGePoint3d& maxBounds,
1454 OwnerDraw3d* pOwnerDraw
1460 virtual void getModelToWorldTransform(AcGeMatrix3d&)
const ;
1461 virtual void getWorldToModelTransform(AcGeMatrix3d&)
const ;
1463 virtual Adesk::Boolean pushModelTransform(
const AcGeVector3d & vNormal) ;
1464 virtual Adesk::Boolean pushModelTransform(
const AcGeMatrix3d & xMat) ;
1465 virtual Adesk::Boolean popModelTransform() ;
1467 virtual AcGeMatrix3d pushPositionTransform (AcGiPositionTransformBehavior behavior,
const AcGePoint3d& offset);
1468 virtual AcGeMatrix3d pushPositionTransform (AcGiPositionTransformBehavior behavior,
const AcGePoint2d& offset);
1469 virtual AcGeMatrix3d pushScaleTransform (AcGiScaleTransformBehavior behavior,
const AcGePoint3d& extents);
1470 virtual AcGeMatrix3d pushScaleTransform (AcGiScaleTransformBehavior behavior,
const AcGePoint2d& extents);
1471 virtual AcGeMatrix3d pushOrientationTransform (AcGiOrientationTransformBehavior behavior);
1476 virtual Adesk::Boolean circle(
const AcGePoint3d& center,
1477 const double radius,
1478 const AcGeVector3d& normal)
const ;
1480 virtual Adesk::Boolean circle(
const AcGePoint3d&,
const AcGePoint3d&,
1481 const AcGePoint3d&)
const ;
1483 virtual Adesk::Boolean circularArc(
const AcGePoint3d& center,
1484 const double radius,
1485 const AcGeVector3d& normal,
1486 const AcGeVector3d& startVector,
1487 const double sweepAngle,
1488 const AcGiArcType arcType = kAcGiArcSimple)
const ;
1490 virtual Adesk::Boolean circularArc(
const AcGePoint3d& start,
1491 const AcGePoint3d& point,
1492 const AcGePoint3d& end,
1493 const AcGiArcType arcType = kAcGiArcSimple)
const ;
1495 virtual Adesk::Boolean polyline(
const Adesk::UInt32 nbPoints,
1496 const AcGePoint3d* pVertexList,
1497 const AcGeVector3d* pNormal = NULL,
1498 Adesk::LongPtr lBaseSubEntMarker = -1)
const ;
1500 virtual Adesk::Boolean polyline(
const AcGiPolyline& polylineObj)
const {
return Adesk::kTrue;}
1502 virtual Adesk::Boolean polyPolyline (Adesk::UInt32 nbPolylines,
1503 const AcGiPolyline* pPolylines)
const {
return Adesk::kTrue;}
1504 virtual Adesk::Boolean polyPolygon(
const Adesk::UInt32 numPolygonIndices,
1505 const Adesk::UInt32* numPolygonPositions,
1506 const AcGePoint3d* polygonPositions,
1507 const Adesk::UInt32* numPolygonPoints,
1508 const AcGePoint3d* polygonPoints,
1509 const AcCmEntityColor* outlineColors = NULL,
1510 const AcGiLineType* outlineTypes = NULL,
1511 const AcCmEntityColor* fillColors = NULL,
1512 const AcCmTransparency* fillOpacities = NULL)
const {
return Adesk::kTrue;}
1513 virtual Adesk::Boolean image(
const AcGiImageBGRA32& imageSource,
1514 const AcGePoint3d& position,
1515 const AcGeVector3d& u,
1516 const AcGeVector3d& v,
1517 TransparencyMode transparencyMode = kTransparency8Bit
1518 )
const {
return Adesk::kTrue;}
1519 virtual Adesk::Boolean rowOfDots(
int count,
1520 const AcGePoint3d& start,
1521 const AcGeVector3d& step
1522 )
const {
return Adesk::kTrue;}
1523 virtual Adesk::Boolean ellipticalArc(
const AcGePoint3d& center,
1524 const AcGeVector3d& normal,
1525 double majorAxisLength,
1526 double minorAxisLength,
1527 double startDegreeInRads,
1528 double endDegreeInRads,
1529 double tiltDegreeInRads,
1530 AcGiArcType arcType = kAcGiArcSimple
1531 )
const {
return Adesk::kTrue;}
1533 virtual Adesk::Boolean polygon(
const Adesk::UInt32 nbPoints,
1534 const AcGePoint3d* pVertexList)
const ;
1536 virtual Adesk::Boolean mesh(
const Adesk::UInt32 rows,
1537 const Adesk::UInt32 columns,
1538 const AcGePoint3d* pVertexList,
1539 const AcGiEdgeData* pEdgeData = NULL,
1540 const AcGiFaceData* pFaceData = NULL,
1541 const AcGiVertexData* pVertexData = NULL,
1542 const bool bAutoGenerateNormals =
true
1545 virtual Adesk::Boolean shell(
const Adesk::UInt32 nbVertex,
1546 const AcGePoint3d* pVertexList,
1547 const Adesk::UInt32 faceListSize,
1548 const Adesk::Int32* pFaceList,
1549 const AcGiEdgeData* pEdgeData = NULL,
1550 const AcGiFaceData* pFaceData = NULL,
1551 const AcGiVertexData* pVertexData = NULL,
1552 const struct resbuf* pResBuf = NULL,
1553 const bool bAutoGenerateNormals =
true
1556 virtual Adesk::Boolean text(
const AcGePoint3d& position,
1557 const AcGeVector3d& normal,
1558 const AcGeVector3d& direction,
1559 const double height,
1561 const double oblique,
1562 const ACHAR* pMsg)
const ;
1564 virtual Adesk::Boolean text(
const AcGePoint3d& position,
1565 const AcGeVector3d& normal,
1566 const AcGeVector3d& direction,
1568 const Adesk::Int32 length,
1569 const Adesk::Boolean raw,
1570 const AcGiTextStyle &pTextStyle
1573 virtual Adesk::Boolean xline(
const AcGePoint3d&,
1574 const AcGePoint3d&)
const ;
1576 virtual Adesk::Boolean ray(
const AcGePoint3d&,
1577 const AcGePoint3d&)
const ;
1579 virtual Adesk::Boolean pline(
const AcDbPolyline& lwBuf,
1580 Adesk::UInt32 fromIndex = 0,
1581 Adesk::UInt32 numSegs = 0
1584 virtual Adesk::Boolean draw(AcGiDrawable*)
const ;
1586 virtual Adesk::Boolean pushClipBoundary(AcGiClipBoundary * pBoundary);
1587 virtual void popClipBoundary() ;
1594 unsigned int m_uiOpenSegmentCount;
1600 ACRX_DECLARE_MEMBERS(AcGiViewport);
1604 virtual void getModelToEyeTransform(AcGeMatrix3d& mx)
const;
1605 virtual void getEyeToModelTransform(AcGeMatrix3d& mx)
const;
1606 virtual void getWorldToEyeTransform(AcGeMatrix3d& mx)
const;
1607 virtual void getEyeToWorldTransform(AcGeMatrix3d& mx)
const;
1609 virtual Adesk::Boolean isPerspective()
const;
1610 virtual Adesk::Boolean doPerspective(AcGePoint3d&)
const;
1611 virtual Adesk::Boolean doInversePerspective(AcGePoint3d&)
const;
1613 virtual void getNumPixelsInUnitSquare(
const AcGePoint3d& givenWorldpt,
1614 AcGePoint2d& pixelArea,
1615 bool includePerspective =
true)
const;
1617 virtual void getCameraLocation(AcGePoint3d& location)
const;
1618 virtual void getCameraTarget(AcGePoint3d& target)
const;
1619 virtual void getCameraUpVector(AcGeVector3d& upVector)
const;
1621 virtual Adesk::ULongPtr viewportId()
const;
1622 virtual Adesk::Int16 acadWindowId()
const;
1623 virtual void getViewportDcCorners(AcGePoint2d& lower_left,
1624 AcGePoint2d& upper_right)
const;
1626 virtual Adesk::Boolean getFrontAndBackClipValues(Adesk::Boolean& clip_front,
1627 Adesk::Boolean& clip_back,
1629 double& back)
const;
1630 virtual double linetypeScaleMultiplier()
const;
1631 virtual double linetypeGenerationCriteria()
const;
1633 virtual AcGeVector3d viewDir()
const;
1637 AcGePoint3d cameraTarget;
1638 AcGePoint3d cameraLocation;
1639 AcGeVector3d cameraUpVector;
1647 m_pRecord = pRecord;
1652 bool GetNextEntity(AcDbEntity *& pOutEnt);
1654 int CheckDrawOrderAndSetVisibility(AcDbEntity * pEnt, TK_Open_Segment * include_seg_handler,
HDWG_BStreamImporter * importer);
1658 AcDbBlockTableRecord * m_pRecord;
1659 AcDbSortentsTable * m_pObj;
1660 AcDbObjectIdArray objArray;
1662 AcDbBlockTableRecordIterator * m_pRecordIter;
1666 wchar_t * h_dwg_wcsdup(
wchar_t const *
const wcs);
1669 inline int HDWG_BStreamImporter::STREAM_Open_Segment(TK_Open_Segment* open_seg_handler,
const char * seg_name)
const
1672 open_seg_handler->SetSegment(seg_name);
1673 TK_Status hdwg_status = WriteObject(open_seg_handler,m_pBStreamtk, m_pHSFFile, m_pBStreamBuffer, m_nBStreamBuffSize);
1674 H_ASSERT(hdwg_status == TK_Normal);
1678 inline int HDWG_BStreamImporter::STREAM_Open_Segment(
const char * seg_name)
const
1681 TK_Open_Segment* open_seg_handler =
new TK_Open_Segment;
1682 open_seg_handler->SetSegment(seg_name);
1683 TK_Status hdwg_status = WriteObject(open_seg_handler,m_pBStreamtk, m_pHSFFile, m_pBStreamBuffer, m_nBStreamBuffSize);
1684 H_ASSERT(hdwg_status == TK_Normal);
1685 delete open_seg_handler;
1690 inline int HDWG_BStreamImporter:: STREAM_Close_Segment()
const
1692 TK_Close_Segment *close_seg_handler =
new TK_Close_Segment;
1693 TK_Status hdwg_status = WriteObject(close_seg_handler, m_pBStreamtk, m_pHSFFile, m_pBStreamBuffer, m_nBStreamBuffSize);
1694 H_ASSERT(hdwg_status == TK_Normal);
1695 delete close_seg_handler;
1700 inline int HDWG_BStreamImporter:: STREAM_Set_Visibility(TKO_Geometry_Bits Geom_Bit,
bool ifOn)
const
1703 TK_Visibility *vis_handler =
new TK_Visibility();
1704 vis_handler->SetGeometry(Geom_Bit);
1706 vis_handler->SetValue(1);
1708 vis_handler->SetValue(0);
1709 TK_Status hdwg_status = WriteObject(vis_handler, m_pBStreamtk, m_pHSFFile, m_pBStreamBuffer, m_nBStreamBuffSize);
1710 H_ASSERT(hdwg_status == TK_Normal);
1716 inline int HDWG_BStreamImporter:: STREAM_Set_Heuristics(TKO_Heuristic_Bits Heuristic_Bit)
const
1719 TK_Heuristics* heuristic_handler =
new TK_Heuristics;
1720 heuristic_handler->SetMask( Heuristic_Bit);
1721 heuristic_handler->SetValue( Heuristic_Bit);
1722 TK_Status hdwg_status = WriteObject(heuristic_handler, m_pBStreamtk, m_pHSFFile, m_pBStreamBuffer, m_nBStreamBuffSize);
1723 H_ASSERT(hdwg_status == TK_Normal);
1724 delete heuristic_handler;
1728 inline int HDWG_BStreamImporter:: STREAM_Write_Object(BBaseOpcodeHandler * handler)
const
1730 TK_Status hdwg_status = WriteObject(handler, m_pBStreamtk, m_pHSFFile, m_pBStreamBuffer, m_nBStreamBuffSize);
1731 H_ASSERT(hdwg_status == TK_Normal);
Definition: HDWGHelper.h:310
Definition: HDWGHelper.h:1093
Definition: HDWGHelper.h:1315
Definition: HDWGHelper.h:616
Definition: HIOUtilityDWG.h:46
Definition: HDWGHelper.h:430
The HCamera class is the data type of a HOOPS Camera Attribute.
Definition: HUtility.h:537
Definition: HDWGHelper.h:1597
Definition: HIOUtilityDWG.h:120
Definition: HDWGHelper.h:640
Definition: HDWGHelper.h:347
Definition: HDWGHelper.h:859
Definition: HDWGHelper.h:1363
Definition: HDWGHelper.h:662
The HPoint class is the data type of a three-dimensional point.
Definition: HGlobals.h:121
Definition: HDWGHelper.h:1135
A header file containing the HIO classes for passing to HBaseView::FileInput and HBaseView::FileOutpu...
Definition: HDWGHelper.h:1152
Definition: HDWGHelper.h:1406
Definition: HDWGHelper.h:1642