123 lines
4.6 KiB
C++
123 lines
4.6 KiB
C++
// 暖通变径实现类
|
|
//
|
|
// ┏━━━━━━━━━━━┓ ┏━┳━━━┳━┓
|
|
// ┃ ┃ ┃ ┃ ③┃ ┃
|
|
// ③①━━____ ┃ ┃ ┃ ① ┃ ┃
|
|
// ┃ ~~~~___ ┃ ┃ ┃ ┃ ┃
|
|
// ┗___ ~~~ ━②④ ┃ ┗━②━┛ ┃
|
|
// ~~~___ ┃ ┃ / \ ┃
|
|
// ~~__ ┃ ┃ / \ ┃
|
|
// ~~__ ┃ ┃/ \┃
|
|
// ~~┛ ┗━━━━━━━┛
|
|
//
|
|
// 夹点说明:
|
|
// ①: 变径左端点,移动点
|
|
// ②: 变径右端点,移动点
|
|
// ③: 左端命令激活点/上下命令激活点
|
|
// ④: 右端命令激活点
|
|
|
|
|
|
#if !defined(__THIMPHVACREDUCER_H__)
|
|
#define __THIMPHVACREDUCER_H__
|
|
|
|
#include "AecComplexCurveDraw.h"
|
|
#include "AecDbObjXDataMap.h"
|
|
#include "AecDbEntityBase.h"
|
|
|
|
class ImpHvacReducer
|
|
{
|
|
public:
|
|
ImpHvacReducer();
|
|
virtual ~ImpHvacReducer();
|
|
|
|
Acad::ErrorStatus Draw3d(AcGiDraw &mode) const;
|
|
Acad::ErrorStatus Draw2d(AcGiDraw &mode) const;
|
|
|
|
bool GetInterface(AcArray<AecInterface>& arInfs) const;
|
|
|
|
Acad::ErrorStatus transformBy(const AcGeMatrix3d& xform);
|
|
AecEqui::Position ExplainGripIndex(int nIndex) const;
|
|
|
|
AcGeVector3d normal() const;
|
|
void list() const;
|
|
|
|
void Move3DBuffer(AcDbVoidPtrArray& ar3DBuffer) const;
|
|
bool Has3DBuffer() const;
|
|
|
|
protected:
|
|
|
|
BOOL MakeCurves(AecComplexCurve& cplCurve) const;
|
|
BOOL GetCurvesInSide(AecComplexCurve& compCurve) const;
|
|
|
|
private:
|
|
// 变径是否水平放置
|
|
BOOL IsHorzAlignment() const;
|
|
// 变径是否垂直放置
|
|
BOOL IsVertAlignment() const;
|
|
// 变径是否倾斜放置
|
|
BOOL IsInclineAlignment() const;
|
|
// 是否是单线变径
|
|
BOOL IsSingleLine() const;
|
|
// 返回两侧端面法向,起始侧面向外
|
|
AcGeVector3d GetSectNormal() const;
|
|
|
|
// 绘制三维图形
|
|
void ExplodeRect2Rect3d(AcGiDraw& mode) const; // 方对方
|
|
void ExplodeRect2Cir3d(AcGiDraw& mode, BOOL bStartIsRound = FALSE) const; // 方对圆
|
|
void ExplodeCir2Rect3d(AcGiDraw& mode) const; // 圆对方
|
|
void ExplodeCir2Cir3d(AcGiDraw& mode) const; // 圆对圆
|
|
|
|
// 倾斜变径2D绘制
|
|
BOOL MakeIncCir2Cir2DCurves(AecComplexCurve& cplCurve, int &nType) const; // 圆对圆
|
|
|
|
// 水平构建二维图形 nType:外轮廓还是内部线, 0:外轮廓, 1内部线
|
|
BOOL MakeRect2Rect2DCurves(AecComplexCurve& cplCurve, int &nType) const; // 方对方
|
|
BOOL MakeRect2Cir2DCurves(AecComplexCurve& cplCurve, int &nType, BOOL bStartIsRound = FALSE) const; // 方对圆
|
|
BOOL MakeCir2Rect2DCurves(AecComplexCurve& cplCurve, int &nType) const; // 圆对方
|
|
BOOL MakeCir2Cir2DCurves(AecComplexCurve& cplCurve, int &nType) const; // 圆对圆
|
|
|
|
// 垂直构建二维图形 nType:外轮廓还是内部线, 0:外轮廓, 1内部线
|
|
BOOL MakeRect2Rect2DCurvesVer(AecComplexCurve& cplCurve, int &nType) const; // 方对方
|
|
BOOL MakeRect2Cir2DCurvesVer(AecComplexCurve& cplCurve, int &nType, BOOL bStartIsRound = FALSE) const; // 方对圆
|
|
BOOL MakeCir2Rect2DCurvesVer(AecComplexCurve& cplCurve, int &nType) const; // 圆对方
|
|
BOOL MakeCir2Cir2DCurvesVer(AecComplexCurve& cplCurve, int &nType) const; // 圆对圆
|
|
|
|
// 获得外轮廓点
|
|
void GetOutVertex(AcGePoint3dArray& arPoint, ESection eStart, ESection eEnd) const;
|
|
void GetOutVertex2(AcGePoint3dArray& arPoint, bool bGetStartVertex) const;
|
|
|
|
// 获取边线、中线,端线宽
|
|
double GetEdgeLineWidth() const;
|
|
double GetCentLineWidth() const;
|
|
double GetEndLineWidth() const;
|
|
|
|
// 法兰出头边,现在法兰单独连接,不需要了。
|
|
double GetPlusEdge() const;
|
|
|
|
// vtEnd:末向量, dOffset::偏心距离, dPlus:法兰边
|
|
AcGePoint3d GetEndPtAuto();
|
|
// 角度法获取末点 dAngle:变径两边形成的角度
|
|
AcGePoint3d GetEndPtByangle();
|
|
// 长度法获取末点 dLen:变径在末端法向上的距离长度
|
|
AcGePoint3d GetEndPtByLen();
|
|
// 获取两端最大尺寸差
|
|
double GetMaxSizeSub();
|
|
|
|
BOOL GetInterfaceSizeData(int nIndex, AecInterface& inf) const;
|
|
|
|
BOOL DrawMesh(AcGiDraw &mode,const Adesk::UInt32 rows,const Adesk::UInt32 columns,const AcGePoint3d* pVertexList) const;
|
|
BOOL DrawShell(AcGiDraw &mode,const Adesk::UInt32 nbVertex,const AcGePoint3d* pVertexList,const Adesk::UInt32 faceListSize,const Adesk::Int32* pFaceList) const;
|
|
|
|
public:
|
|
|
|
AecDbObjXDataMap* m_pXDataMap;
|
|
AecDbEntityBase* m_pOwnerEnt;
|
|
AcDbObjectId m_idDashLayer;
|
|
AcDbObjectId m_idCenterLayer;
|
|
AcDbObjectId m_idDoubleLayer;
|
|
AcDbObjectId m_idDoubleLnType;
|
|
mutable AcDbVoidPtrArray m_ar3DDrableBufPtrs_;//临时缓存
|
|
};
|
|
|
|
#endif // !defined(__THIMPHVACREDUCER_H__)
|