//-----------------------------------------------------------------------------+ // Copyright (C), 1998-2007, Beijing Tangent Software Co. Ltd. // = FileName : TGGiDrawStreamBase 类 // = Version : ver2.0 // = Author : wlw // = CreateDate : 2002-09-09 // = Description: TGGiDrawStreamBase 声明 // = Maintainers: // //-----------------------------------------------------------------------------+ #ifndef _TGGIDRAWSTREAMBASE_H_ #define _TGGIDRAWSTREAMBASE_H_ #ifndef _TGGEPOLY2D_H_ #include "TGGePoly2D.h" #endif #ifndef _TADSGEPOINT3D_H_ #include "TADSGePoint3d.h" #endif #ifndef _TGGECURVESEGMENT_H_ #include "TGGeCurveSegment.h" #endif #ifndef _TADSGEPOINTLIST_H_ #include "TADSGePointList.h" #endif #ifndef _TGGE3DFACE_H_ #include "TGGe3DFace.h" #endif #ifndef _TENTITYSET_H_ #include "TEntitySet.h" #endif #ifndef _TGGELINE_H_ #include "TGGeLine.h" #endif #ifndef _TGGEARC_H_ #include "TGGeArc.h" #endif #ifndef _TGGECIRCLE_H_ #include "TGGeCircle.h" #endif #ifndef _TGGEHATCH_H_ #include "TGGeHatch.h" #endif #ifndef _TGGERECTANGLE_H_ #include "TGGeRectAngle.h" #endif #ifndef _TGGESOLID_H_ #include "TGGeSolid.h" #endif #ifndef _TGGESOLIDCURVE_H_ #include "TGGeSolidCurve.h" #endif #ifndef _TGGICLIPBOUNDARY_H_ #include "TGGiClipBoundary.h" #endif #ifndef _TACDBBLOCKREFDATA_H_ #include "TAcDbBlockRefData.h" #endif #ifndef _TDPTRLIST_H_ #include "TDPtrList.h" #endif // 设备流 // 用来存储几何 class GEOAPI TGGiDrawStreamBase { public: friend class TGGiPushDrawStream; TGGiDrawStreamBase(); virtual ~TGGiDrawStreamBase(); virtual void PushClip(const TGGePoly2D& poly,int flag = 0); virtual void PopClip(); virtual void DrawXPoint(const TADSGePoint3d&); virtual void DrawXCurve(const TGGeCurveSegment&curve,double nThick = 0) = 0; virtual void DrawXPoly(const TGGePoly2D&,double nThick = 0); virtual void DrawXPoints(const TADSGePointList&pts); virtual void DrawX3DFace(const TGGe3DFace&); virtual void DrawXEntity(const TEntitySet&); virtual void DrawSolid(const TGGePoly2D &polyOutline); virtual void DrawHatch(const TGGePoly2D &polyOutline, const TCHAR *pszPattern, double nScale); virtual void DrawHatchEx(const TGGePoly2D &polyOutline, const TCHAR *pszPattern, double nScale,double rotation); virtual void DrawHatchEx(const TGGeHatch &hatch); virtual void DrawEntity(const AcDbEntity& ent)const; virtual void DrawBlock(const AcDbBlockTableRecord &blockRec, const TADSGePoint3d &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 TADSGePointList &pts); TGGiDrawStreamBase & operator << (const TGGe3DFace &face); TGGiDrawStreamBase & operator << (const TEntitySet &e); public://带裁剪 TGGiDrawStreamBase & operator << (const TADSGePoint3d &pt); TGGiDrawStreamBase & operator << (const TGGeCurveSegment &seg); TGGiDrawStreamBase & operator << (const TGGeLine &l); TGGiDrawStreamBase & operator << (const TGGeArc &arc); TGGiDrawStreamBase & operator << (const TGGeCircle &cir); TGGiDrawStreamBase & operator << (const TDPtrList &); TGGiDrawStreamBase & operator << (const TGGePoly2D &poly); TGGiDrawStreamBase & operator << (const TGGeRectAngle &box); TGGiDrawStreamBase & operator << (const TGGeHatch &hatch); TGGiDrawStreamBase & operator << (const TGGeSolid &solid); TGGiDrawStreamBase & operator << (const TGGeSolidCurve &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) }; #endif