#pragma once #include "GePoly2D.h" #include "ADSGePoint3d.h" #include "GeCurveSegment.h" #include "ADSGePointList.h" #include "Ge3DFace.h" #include "EntitySet.h" #include "GeLine.h" #include "GeArc.h" #include "GeCircle.h" #include "GeHatch.h" #include "GeRectAngle.h" #include "GeSolid.h" #include "GeSolidCurve.h" #include "GiClipBoundary.h" #include "TAcDbBlockRefData.h" #include "superlist.h" // 设备流 // 用来存储几何 class TGGiDrawStreamBase { public: friend class TGGiPushDrawStream; TGGiDrawStreamBase(); virtual ~TGGiDrawStreamBase(); virtual void PushClip(const GePoly2D& poly,int flag = 0); virtual void PopClip(); virtual void DrawXPoint(const ADSGePoint3d&); virtual void DrawXCurve(const GeCurveSegment&curve,double nThick = 0) = 0; virtual void DrawXPoly(const GePoly2D&,double nThick = 0); virtual void DrawXPoints(const ADSGePointList&pts); virtual void DrawX3DFace(const Ge3DFace&); virtual void DrawXEntity(const EntitySet&); 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); virtual void DrawHatchEx(const GeHatch &hatch); virtual void DrawEntity(const AcDbEntity& ent)const; virtual void DrawBlock(const AcDbBlockTableRecord &blockRec, const ADSGePoint3d &ptInsert,const AcGeScale3d &scales, double nRot, BOOL bMakeBlock); virtual const TCHAR * Desc(); virtual Adesk::Boolean IsDragging() const; // add by xlc on 100714 TArch8.5 bool GetClipFlg(); void SetClipFlg(bool bTrue); TGGiDrawStreamBase & operator << (const ADSGePointList &pts); TGGiDrawStreamBase & operator << (const Ge3DFace &face); TGGiDrawStreamBase & operator << (const EntitySet &e); public://带裁剪 TGGiDrawStreamBase & operator << (const ADSGePoint3d &pt); TGGiDrawStreamBase & operator << (const GeCurveSegment &seg); TGGiDrawStreamBase & operator << (const GeLine &l); TGGiDrawStreamBase & operator << (const GeArc &arc); TGGiDrawStreamBase & operator << (const GeCircle &cir); TGGiDrawStreamBase & operator << (const PtrList &); TGGiDrawStreamBase & operator << (const GePoly2D &poly); TGGiDrawStreamBase & operator << (const GeRectAngle &box); TGGiDrawStreamBase & operator << (const GeHatch &hatch); TGGiDrawStreamBase & operator << (const GeSolid &solid); TGGiDrawStreamBase & operator << (const GeSolidCurve &curve); TGGiDrawStreamBase & operator << (const TAcDbBlockRefData& block); TGGiDrawStreamBase & operator << (const AcDbEntity&ent); protected: bool HasClip()const; void DeleteAll(); protected: CPtrArray m_lstClip; //所有裁剪物性 // add by xlc on 100714 解决门窗和柱加粗时墙体缺口问题时添加TArch8.5 // 裁剪输出时,可能会有裁剪边界是不想裁剪的,此时可以在绘制时临时设置为false直接输出,用后记得恢复为true bool m_bClip; //是否裁剪输出(默认为true) };