Files
envi-code/SourceCode/Code2026/Dimension/TImageDrawDCEx.h
T
2026-09-28 15:28:50 +08:00

90 lines
2.9 KiB
C++

#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<GePoly2D> &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);
};