Files
envi-code/SourceCode/Code2026/tg_shs/inc/TArch/TGGeVisibilityPoly2D.h
T

88 lines
3.8 KiB
C++
Raw Normal View History

2026-10-04 00:04:20 +08:00
//------------------------------------------------------------------------+
2026-09-28 15:28:50 +08:00
// Copyright (C), 1998-2011, Beijing Tangent Software Co. Ltd.
2026-10-04 00:04:20 +08:00
// = FileName : TGGeVisibilityPoly2D类
2026-09-28 15:28:50 +08:00
// = Version : ver1.0
// = Author : xlc
// = CreateDate : 2011-04-13
2026-10-04 00:04:20 +08:00
// = Description: 具有可见性属性的poly2d类声明
2026-09-28 15:28:50 +08:00
// = Maintainers:
//
//------------------------------------------------------------------------+
#ifndef _TGGEVISIBILITYPOLY2D_H_
#define _TGGEVISIBILITYPOLY2D_H_
#ifndef _TGGEPOLY2D_H_
#include "TGGePoly2D.h"
#endif
#ifdef _TDPTRLIST_H_
#include "TDPtrList.h"
#endif
class TARCH_EXP TGGeVisibilityPoly2D : public TGGePoly2D
{
public:
TGGeVisibilityPoly2D();
TGGeVisibilityPoly2D(const TGGeVisibilityPoly2D & src);
virtual ~TGGeVisibilityPoly2D();
virtual void Reset();
virtual bool SetAcDbCurve(AcDbCurve* pCurve);
2026-10-04 00:04:20 +08:00
// 获取索引nIndex对应的线段
2026-09-28 15:28:50 +08:00
virtual int Nth(int nIndex, TGGeLine &xline, TGGeArc &xarc, AcDb::Visibility *pVal = NULL) const;
virtual int Nth(int nIndex, TGGeCurveSegment & cvCurve, AcDb::Visibility *pVal = NULL) const;
virtual int Nth(int nIndex, TGGeDirectionCurve &curve, AcDb::Visibility *pVal = NULL) const;
2026-10-04 00:04:20 +08:00
// 反向重置对象
2026-09-28 15:28:50 +08:00
virtual int Reverse();
2026-10-04 00:04:20 +08:00
// 删除重复点,当bUnionCurve为真时,合并可见性相同的共线的直线或共圆的弧
2026-09-28 15:28:50 +08:00
virtual int Compress(bool bUnionCurve = true);
2026-10-04 00:04:20 +08:00
// 根据可见性,整体绘制对象,并设置其图层
2026-09-28 15:28:50 +08:00
virtual int Make(LPCTSTR szLay = NULL) const;
2026-10-04 00:04:20 +08:00
// 根据可见性,将各段分别绘制,并设置其图层
2026-09-28 15:28:50 +08:00
virtual int MakeSegments(LPCTSTR szLay = NULL) const;
2026-10-04 00:04:20 +08:00
// 根据可见性,绘制索引nIndex所在线段,并设置其图层
2026-09-28 15:28:50 +08:00
virtual int MakeSegment(int nIndex, LPCTSTR szLay = NULL) const;
virtual void TransformBy(const AcGeMatrix3d &mat);
2026-10-04 00:04:20 +08:00
// 删除索引对应的顶点,凸度值,可见性
2026-09-28 15:28:50 +08:00
virtual void RemoveNode(long nIndex);
2026-10-04 00:04:20 +08:00
// nIndex为点链表的索引,当nIndex < Length() - 1 时 将点pt插入到索引nIndex之后,并设置其凸度值dBulge和可见性eVal;
// 否则直接将点插入链表末尾,并设置其凸度值dBulge和可见性eVal
2026-09-28 15:28:50 +08:00
virtual void InsertNodeAt(int nIndex, const TADSGePoint3d &pt, double dBulge = 0.0, AcDb::Visibility eVal = AcDb::kVisible);
2026-10-04 00:04:20 +08:00
// 当ptOn为线上的点时,进行以下处理:1.ptOn为线的顶点时,直接修改该点的可见性;2.ptOn不为线的顶点时,将点插入到对象中,并设置其可见性
2026-09-28 15:28:50 +08:00
virtual void InsertNodeAt(const TADSGePoint3d &ptOn, AcDb::Visibility eVal = AcDb::kVisible);
2026-10-04 00:04:20 +08:00
// 设置两点间线段的可见性(两点必须都在线上)
2026-09-28 15:28:50 +08:00
void InsertNodeAt(const TADSGePoint3d &ptOn1, const TADSGePoint3d &ptOn2,AcDb::Visibility eVal = AcDb::kInvisible);
2026-10-04 00:04:20 +08:00
// 添加顶点,设置其凸度值和可见性
2026-09-28 15:28:50 +08:00
virtual void AppendNode(const TADSGePoint3d &pt, ads_real dBulge = 0.0, AcDb::Visibility eVal = AcDb::kVisible);
TGGeVisibilityPoly2D& operator = (const TGGeVisibilityPoly2D &src);
2026-10-04 00:04:20 +08:00
// add by xlc on 110427 获得poly离pt点近的一端指向poly内的方向
2026-09-28 15:28:50 +08:00
bool GetIDirection(AcGePoint3d pt, double& dDir);
2026-10-04 00:04:20 +08:00
// 设置整体的可见性
2026-09-28 15:28:50 +08:00
void SetVisible(AcDb::Visibility dNewVal);
2026-10-04 00:04:20 +08:00
// 根据索引nIndex,设置某一段线的可见性
2026-09-28 15:28:50 +08:00
void SetVisibleAt(int nIndex, AcDb::Visibility dNewVal);
2026-10-04 00:04:20 +08:00
// 当ptOn为对象的顶点时,设置其所在线段的可见性
2026-09-28 15:28:50 +08:00
void SetVisibleAt(const TADSGePoint3d& ptOn, AcDb::Visibility dNewVal);
2026-10-04 00:04:20 +08:00
// 设置索引范围nFrom至nTo的线段的可见性(nFrom <= nTo)
2026-09-28 15:28:50 +08:00
void SetVisibleAt(int nFrom, int nTo, AcDb::Visibility dNewVal);
AcDb::Visibility GetVisibleAt(int nIndex)const;
AcDb::Visibility GetVisibleAt(const TADSGePoint3d& ptOn)const;
int SetVisibilities( TDPtrList<AcDb::Visibility> &arnVisibility );
int GetVisibilities( TDPtrList<AcDb::Visibility> &arnVisibility );
TDPtrList<AcDb::Visibility>& GetVisibilities();
private:
TDPtrList<AcDb::Visibility> m_arnVisibility;
};
#endif