#pragma once #include "superlist.h" #include "TImageDrawDC.h" #include "TGGiExplodeDrawBase.h" #include "ADSGePoint3d.h" #include "GeLine.h" #include "GeCircle.h" #include "GeArc.h" #include "GePoly2D.h" #include "Ge3DFace.h" class TImageDrawDCEx: public TImageDrawDC, public TGGiExplodeDrawBase { public: TImageDrawDCEx(CDC *pDC, const CRect &rect, COLORREF bkcolor = RGB(0,0,0)); TImageDrawDCEx(); virtual ~TImageDrawDCEx(); virtual BOOL IsFullExplode() const; virtual void DrawText(const TCHAR *pszContent = NULL); // derived from TGGiExplodeDrawBase virtual void DrawLine(const GeLine &ln, double nThickness = 0.0); virtual void DrawArc(const GeArc &ar, double nThickness = 0.0); virtual void DrawCircle(const GeCircle &cir, double nThickness = 0.0); //对指定的封闭区域填充 virtual void DrawSolid(const GePoly2D &polyOutline); virtual void DrawHatch(const GePoly2D &polyOutline, const TCHAR *pszPattern, double nScale); virtual void DrawHatchEx(const GePoly2D &polyOutline, const TCHAR *pszPattern, double nScale,double rotation); // 3D Draw // 根据给定的边界和凸起方向, 绘制三维外壳 virtual void DrawMesh(const GePoly2D &polyOut, const TVector3D &vtOffset); // 显示分别连接两个区域的边缘构成的侧面 virtual void DrawMesh(const GePoly2D &polyRegion1, const GePoly2D &polyRegion2); virtual void DrawMesh( const Adesk::UInt32 rows, const Adesk::UInt32 columns, const AcGePoint3d* pVertexList, const AcGiEdgeData* pEdgeData = NULL); // 根据给定的内外边界, 绘制三维外壳, 已经对区域进行离散 virtual void DrawShell(const GePoly2D &polyOut, const PtrList &lstPolyIn); virtual void DrawShell( Adesk::UInt32 nbVertex, const AcGePoint3d* pVertexList, Adesk::UInt32 faceListSize, const Adesk::Int32* pFaceList, const AcGiEdgeData* pEdgeData = NULL); virtual void DrawBody(const GePoly2D &polySrc, const TVector3D &vtOffset); virtual void DrawBody(const GePoly2D &polyOut, const GePoly2D &polyIn, const TVector3D &vtOffset); virtual void DrawFace(const Ge3DFace &face); virtual void DrawBlock(const AcDbBlockTableRecord &blockRec, const ADSGePoint3d &ptInsert, const AcGeScale3d &scales, double nRot, BOOL bMakeBlock); virtual void DrawXCurve(const GeCurveSegment& curve); virtual void DrawXLine(const GeLine& line); virtual void DrawXArc(const GeArc& arc); virtual void DrawXCircle(const GeCircle& cir); virtual void DrawX3DFace(const Ge3DFace&face); virtual void SetColor(Adesk::UInt16 nColor); virtual Adesk::UInt16 GetColor() const; virtual const TCHAR * Desc(); void Reset(); AcDbObjectId GetLayerId() const; Acad::ErrorStatus SetLayer(const AcDbObjectId &id); Acad::ErrorStatus SetLayer(const TCHAR *pszLay); Acad::ErrorStatus SetLineType(const TCHAR *pltype); Acad::ErrorStatus SetMaterial(const TCHAR *sMaterial); static const TCHAR * Descriptor(); protected: Adesk::UInt16 m_nFrontColor; void Draw(const ADSGePointList &pts); };