Files
envi-code/SourceCode/Code2026/tg_shs/inc/geo/TGGiDrawStreamBase.h
T

173 lines
4.0 KiB
C++
Raw Normal View History

2026-09-28 15:28:50 +08:00
//-----------------------------------------------------------------------------+
// 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<TGGeCurveSegment> &);
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