#ifndef _TCOVERRELEATIONMANAGER_H__ #define _TCOVERRELEATIONMANAGER_H__ #if _MSC_VER > 1000 #pragma once #endif class TDbInterfacesObj; class TCoverReleationManager { public: TCoverReleationManager(); virtual ~TCoverReleationManager(); // 更新遮挡显示 BOOL UpdateCoverDisplay(AcDbObjectIdArray& arIds); // 更新遮挡显示 BOOL UpdateCoverDisplay(TDbInterfacesObj* pObj); // 更新遮挡显示 BOOL UpdateCoverDisplay(AcDbObjectId& id); // 排序支持 typedef struct PtOnCrItem { AcGePoint3d m_ptGeOn; AcDbCurve * m_pCurve; } PTONCRITEM,* PPTONCRITEM; protected: // 选择影响遮挡的实体 [ssget] BOOL SelectEntityByExt(TDbInterfacesObj* pObj,AcDbObjectIdArray& arIDs); // 提取两条曲线的遮挡曲线段 BOOL CoverIntersectWith(TComplexCurve& extThisComplex,TComplexCurve& extOtherComplex, TComplexCurve& extThisCovered,TComplexCurve& extOtherCovered, AcDbVoidPtrArray& arThisFaces,AcDbVoidPtrArray& arOtherFaces, BOOL bThisCoverByOther = TRUE,BOOL bIsInsideCurves = FALSE); // 复杂图元 解释到 db 实体曲线 BOOL ComplexCurve2DbCurves(TComplexCurve& ext,AcDbVoidPtrArray& arThisCurs,AcDbIntArray& arGsMarks); // Z 方向投影排序点 BOOL SortPointsProjectZ(AcGePoint3dArray& points,AcDbCurve * pCurve); // void OrthProject2ThisPlane(AcGePoint3d& ptGeT,AcDbFace* pFace); }; #endif //_TCOVERRELEATIONMANAGER_H__