#pragma once #include //包含头文件 using namespace std; //块对象类,存放DXF的块对线,包括世界坐标、缩放比例、线、圆等对象 //线对象 class Point2D32f { public: float x; float y; Point2D32f() { x=0.0; y=0.0; } Point2D32f(float fx,float fy) { x=fx; y=fy; } }; class Point3D32f { public: float x; float y; float z; Point3D32f() { x = 0.0; y = 0.0; z = 0.0; } Point3D32f(float fx,float fy,float fz) { x=fx; y=fy; z =fz; } }; class Point3DW32f { public: float x; float y; float z; float w; Point3DW32f() { x = 0.0; y = 0.0; z = 0.0; w =0.0; } Point3DW32f(float fx,float fy,float fz,float fw) { x=fx; y=fy; z =fz; w =fw; } }; class DXFText { public: /*! X Coordinate of insertion point. */ double ipx; /*! Y Coordinate of insertion point. */ double ipy; /*! Z Coordinate of insertion point. */ double ipz; /*! X Coordinate of alignment point. */ double apx; /*! Y Coordinate of alignment point. */ double apy; /*! Z Coordinate of alignment point. */ double apz; /*! Text height */ double height; /*! Relative X scale factor. */ double xScaleFactor; /*! 0 = default, 2 = Backwards, 4 = Upside down */ int textGenerationFlags; /** * Horizontal justification. * * 0 = Left (default), 1 = Center, 2 = Right, * 3 = Aligned, 4 = Middle, 5 = Fit * For 3, 4, 5 the vertical alignment has to be 0. */ int hJustification; /** * Vertical justification. * * 0 = Baseline (default), 1 = Bottom, 2 = Middle, 3= Top */ int vJustification; /*! Text string. */ std::string text; /*! Style (font). */ std::string style; /*! Rotation angle of dimension text away from default orientation. */ double angle; }; class DXFMText { public: /*! X Coordinate of insertion point. */ double ipx; /*! Y Coordinate of insertion point. */ double ipy; /*! Z Coordinate of insertion point. */ double ipz; /*! X Coordinate of X direction vector. */ double dirx; /*! Y Coordinate of X direction vector. */ double diry; /*! Z Coordinate of X direction vector. */ double dirz; /*! Text height */ double height; /*! Width of the text box. */ double width; /** * Attachment point. * * 1 = Top left, 2 = Top center, 3 = Top right, * 4 = Middle left, 5 = Middle center, 6 = Middle right, * 7 = Bottom left, 8 = Bottom center, 9 = Bottom right */ int attachmentPoint; /** * Drawing direction. * * 1 = left to right, 3 = top to bottom, 5 = by style */ int drawingDirection; /** * Line spacing style. * * 1 = at least, 2 = exact */ int lineSpacingStyle; /** * Line spacing factor. 0.25 .. 4.0 */ double lineSpacingFactor; /*! Text string. */ std::string text; /*! Style string. */ std::string style; /*! Rotation angle. */ double angle; }; class DXFLine { public: Point2D32f beginpoint; Point2D32f endpoint; }; //圆对象 class DXFCircle { public: Point2D32f centerpoint; double radius; }; //多线实体对象 class DXFPolyLineEntities { public: vector vertex;//顶点 bool isclose;//闭合标志位 }; //圆弧对象对象 class DXFArc { public: Point2D32f centerpoint; double radius; double bangle;//起点角度 double eangle;//终点角度 }; class Spline { public: unsigned int degree; /*! Number of knots. */ unsigned int nKnots; /*! Number of control points. */ unsigned int nControl; /*! Number of fit points. */ unsigned int nFit; /*! Flags */ int flags; double tangentStartX; double tangentStartY; double tangentStartZ; double tangentEndX; double tangentEndY; double tangentEndZ; vector knotLst; vector fitPntLst; vector ctrPntLst; }; class BlockObj { public: BlockObj() { sx = 1; sy = 1; sz = 1; ipx = 0; ipy = 0; ipz = 0; line.clear(); } ~BlockObj(){} //块名称 string name; //缩放比例 double sx; double sy; double sz; //用户坐标系相在世界坐标系中的位置 double ipx; double ipy; double ipz; vector line; vector circle; vector polylineentities; vector arc; vector splineLst; vector textLst; vector mtextLst; bool drawflag; };