Files
envi-code/SourceCode/Code2026/tg_shs/shs_pipebase/THImpHvacTee.h
T
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

477 lines
26 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 暖三通实现类
//
// 三通示意图(一般类型, 其他类型详见管件类型.doc):
//
// 水平放置: 侧面垂直放置:
// ┏━━━━━━━━━━━━━━━━┓ ┏━━━━━┓
// ┃ ┃ ┃ ③ ┃
// ┃ ┃ ┃ ┃
// ④①━━━━━━━━━━━━━━━━②⑤ ┃ ① ┃
// ┃ ┃ ┃ ┃ ┃
// ┃ ┃ ┃ ┃ ┃
// ┗━━━━━┓ ┃ ┏━━━━┛ ┣━━━━━┫
// ┃ ┃ ┃ ┃ ┃
// ┃ ┃ ┃ ┃ ┃
// ┃ ┃ ┃ ┃ ┃
// ┃ ┃ ┃ ┃ ┃
// ┗━━③━━┛ ┗━━②━━┛
// ⑥ ④
//
// 水平放置夹点说明:
// ①②③: 三通移动点
// ④⑤⑥: 三通命令点,用于引出新管线
// 垂直放置夹点说明:
// ①②: 三通移动点
// ③④: 三通命令点,用于引出新管线
#if !defined(__THIMPHVACTEE_H__)
#define __THIMPHVACTEE_H__
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "TImpSpecFitting.h"
class THImpHvacTee : public TImpSpecFitting
{
public:
THImpHvacTee();
virtual ~THImpHvacTee();
protected:
//{{AFX_ARX_METHODS(TDbPipeBase)
virtual AcGeVector3d normal() const;
virtual void GetKindName(CString& sName);
virtual int GetInterfaceCount() const;
virtual BOOL GetInterface(int nIndex,TInterface& pipeInterface) const;
virtual BOOL GetInterface(const AcGePoint3d& ptConnect,TInterface& pipeInterface) const;
virtual BOOL HasInterface(const AcGePoint3d& ptConnect,const AcGeVector3d& vtDir);
virtual BOOL SetInterfaceRelation(const AcGePoint3d& ptConnect,const AcDbObjectId& idConnect);
virtual BOOL RemoveInterfaceRelation(const AcGePoint3d& ptConnect,const AcDbObjectId& idConnect);
virtual BOOL NotifyInterfaceToModify(const TInterfaceModifyMsg& iModiMsg,TInterfaceModifyMsgs& iModiMsgs);
virtual Acad::ErrorStatus transformBy(const AcGeMatrix3d& xform);
virtual TDb::Position ExplainGripIndex(int nIndex) const;
virtual Acad::ErrorStatus getStretchPoints(AcGePoint3dArray& stretchPoints) const;
virtual Acad::ErrorStatus getGripPoints(AcGePoint3dArray& gripPoints, AcDbIntArray& osnapModes,
AcDbIntArray& geomIds) const;
virtual Acad::ErrorStatus getOsnapPoints(AcDb::OsnapMode osnapMode, INT_PTR gsSelectionMark,
const AcGePoint3d& pickPoint, const AcGePoint3d& lastPoint,
const AcGeMatrix3d& viewXform, AcGePoint3dArray& snapPoints, AcDbIntArray& geomIds) const;
virtual Acad::ErrorStatus moveStretchPointsAt(const AcDbIntArray& indices, const AcGeVector3d& offset);
virtual Acad::ErrorStatus moveGripPointsAt(const AcDbIntArray& indices, const AcGeVector3d& offset);
virtual Acad::ErrorStatus ExplodeOrDraw3d(XExplodeDraw &mode) const;
virtual Acad::ErrorStatus ExplodeOrDraw2d(XExplodeDraw &mode) const;
virtual AcDbPolyline* MakePolyCurve() const;
virtual BOOL MakeCurves(TComplexCurve& cplCurve) const;
virtual BOOL GetCurvesInSide(TComplexCurve& compCurve) const;
virtual BOOL MakePolyCurveFaces(AcDbVoidPtrArray& arFaces);
virtual Acad::ErrorStatus getClassID(CLSID* pClsid) const;
virtual BOOL OPMInfo(LPCTSTR pszName, TDb::OPMInfo* pInfo);
virtual void GetTips(CMapStringToString& mapLable2Tip) const;
virtual void list() const;
virtual BOOL IsValid(TDbXDataMap* pXMap);
virtual BOOL IsValidConst(TDbXDataMap* pXMap) const; // add by hh 2011-01-17 判断是否允许绘制3D图
// add by zh 2013-8-15 防止CAD2010 “pu”命令清除系统三通
virtual Acad::ErrorStatus getEndParam(double& x0) const;
virtual Acad::ErrorStatus getDistAtParam(double param, double& dist) const;
//}}AFX_ARX_METHODS
public:
// 找出一条直线上数组点中,位于坐标两端的索引
// void GetEndPointIndex(const AcGePoint3dArray &ptArr, int &nIndex1, int &nIndex2) const;
//获取三维的壳对象
virtual int GetXBaseShell(TXShell& xShell);
//获取体的范围方块
virtual int GetBodyBox(AcDbExtents& ext);
// add by hh 2010-12-27 导出XML
// virtual CString GetXml() const;
virtual CString GetXml(const AcGeMatrix3d& mat) const;
// add by 2011.01.30 剖切功能 注意 GetSection内不应将std::vector<TObjSectionRecord>参数清空
virtual bool GetSection(const AcDbFace &face, const AcGeVector3d &vtPlaneSecDir,
std::vector<TObjSectionRecord> &sectionRecord, AcDbVoidPtrArray& arFillPtrs) const;
// 剖切用,返回Z坐标最高、最低点
virtual Acad::ErrorStatus GetExtents(TADSGePoint3d &ptLow, TADSGePoint3d &ptUp) const;
// add by hh 2014-08-06 支持管件与水管遮挡
virtual Acad::ErrorStatus GetClipBoundary(TGGePoly2D& poly)const;
virtual bool IsMeClip() const;
virtual bool IsClipMe(const TEntityBase* pEnt=NULL)const;//ok是否被裁剪
private:
// 获取斜接的圆形口二维关键点
BOOL GetInclineCirPts(AcGePoint3dArray &arPts) const;
// 获取倾斜的斜接三通圆形口在投影面上的二维关键点
BOOL GetInclineCirPts2d(AcGePoint3dArray &arPts) const;
// 获取投影椭圆上的点集
void GetArcPoint(AcDbPolyline &polyLine, AcGePoint3dArray &ptArcArr) const;
/*
承插及普通的圆形口二维关键点12个关键点
//
// 0━━━━━━━━━━━━━━━━━5
// ┃ ┃
// ┃ ┃
// 1━━━━━━━━12━━━━━━━4
// ┃ ┃ ┃
// ┃ 11 ┃
// 2━━━━━9 ┃ 10━━━━3
// ┃ ┃ ┃
// ┃ ┃ ┃
// ┃ ┃ ┃
// ┃ ┃ ┃
// 6━━7━━━8
//
*/
// 获取承插及普通的圆形口二维关键点
BOOL GetInsertCirPts(AcGePoint3dArray &arPts) const;
// 获取承插及普通的圆形口在消隐面上的关键点
BOOL GetInsertCirPtsOnHidePlan(AcGePoint3dArray &arPts) const;
// 求交点
BOOL GetIntersectWith(AcGePoint3d &pt1,AcGePoint3d &pt2,AcGeVector3d &vt1,AcGeVector3d &vt2,AcGePoint3d &ptIntersect) const;
BOOL GetIntersectWith(AcGePoint3d &pt1,AcGePoint3d &pt2,AcGePoint3d &pt3,AcGePoint3d &pt4,AcGePoint3d &ptIntersect) const;
// 获取接口尺寸数据type,size,size1
BOOL GetInterfaceSizeData(int nIndex, TInterface& pipeInterface) const;
// 是否水平放置
BOOL IsHorzAlignment() const;
// 是否侧面垂直放置
BOOL IsSideVertAlignment() const;
// 是否正面垂直放置
BOOL IsFaceVertAlignment() const;
// 是否是单线风管
BOOL IsSingleLine() const;
// 是否绘制中心线
BOOL IsBaseLine() const;
// 是否倾斜放置
BOOL IsInclineAlignment() const;
// 是否倾斜垂直放置(可处理斜接三通正面垂直情况)
BOOL IsIncVertAlignment() const;
// 三管向量
AcGeVector3d StartVect() const;
AcGeVector3d EndVect() const;
AcGeVector3d BranVect() const;
// 获取标准基准投影面,2D相关绘制不在此面上的点都投影到此面上
AcGePlane GetStdPrjPlan(const AcGePoint3d &ptOnPlan) const;
// 辅助添加点函数,减少程序行数
int AutoAppendPt(TComplexCurve &cplCurve, TCurveElement &cplEle, AcGePoint3d &ptS,
AcGePoint3d &ptMid, AcGePoint3d &ptE) const;
int AutoAppendPt(TComplexCurve &cplCurve, TCurveElement &cplEle, AcGePoint3d &ptS,
AcGePoint3d &ptMid, AcGePoint3d &ptE, double dWidth) const;
/*
得到大部分矩形截面三通10关键点
不适合类型,返回FALSE, 稍有变化的情况予以说明
//
// 0━━━━━━━━━8━━━━━━━7
// ┃ ┃
// ┃ ┃
// ━━━━━━━━━━━━━━━━━
// ┃ ┃ ┃
// ┃ ┃ ┃
// 1━━━━━2 ┃ 5━━━━6
// ┃ ┃ ┃
// ┃ ┃ ┃
// ┃ ┃ ┃
// ┃ ┃ ┃
// 3━━━━━4
//
*/
// 获取三通关键的9个点,在中截面上,标高同首尾实际点,不适合类类型返回FALSE
BOOL GetSectMidKeyPt(AcGePoint3dArray &ptArr, BOOL bDefault = FALSE) const;
// 在GetRectMidKeyPt中调用的工具函数,获取截面图形中弧段上的点并修正弧段开始点
BOOL GetPtOnLowArc(const AcGePoint3d& ptOnPort1, AcGePoint3d& ptExtend1, const double dPortSize1,
const AcGePoint3d& ptOnPort2, AcGePoint3d& ptExtend2, const double dPortSize2,
const double dCR, AcGePoint3d& ptOnCurve) const;
// 获取截面三通上下两面关键的18个点,上下各9个一一对应 bDefault=TRUE为3D模式
BOOL GetTwoSideKeyPt(AcGePoint3dArray &pptUpArr, AcGePoint3dArray &pptDownArr, BOOL bDefault = FALSE) const;
// 获取三通上下两面接口所在的6个点
BOOL GetInterfaceKeyPt(AcGePoint3dArray &ptUpArr, AcGePoint3dArray &ptDownArr) const;
// 获取中心点,即中心线/单线模式三条管线交点
AcGePoint3d GetCenterPt() const;
// 求给出的直线的两点求交点
Adesk::Boolean GetIntersectPointByPts( AcGePoint3d ptL1Sta, AcGePoint3d ptL1End,
AcGePoint3d ptL2Sta, AcGePoint3d ptL2End, AcGePoint3d &ptInersect ) const;
// 绘制阀门
void DrawValve(TComplexCurve& cplCurve, AcGePoint3d ptStart) const;
// 夹点移动消息处理
BOOL OnMoveGripPointMsgNotify(const TInterfaceModifyMsg& iModiMsg, TInterfaceModifyMsgs& iModiMsgs);
// 对象移动消息处理
BOOL OnTransformMsgNotify(const TInterfaceModifyMsg& iModiMsg, TInterfaceModifyMsgs& iModiMsgs);
// 尺寸调整消息处理
BOOL OnSizeMsgNotify(const TInterfaceModifyMsg& iModiMsg, TInterfaceModifyMsgs& iModiMsgs);
// 移动夹点处理
Acad::ErrorStatus MoveTransGripPointsAt(TDb::Position ePos, const AcGeVector3d& offset, BOOL bAutoWork);
// 命令夹点处理
Acad::ErrorStatus MoveCommandGripPointsAt(TDb::Position ePos, const AcGeVector3d& offset);
//////////////////////////////////////////////////////////////////////////
// 3D 矩形截面绘制子函数
BOOL ExplodeOrDrawSpecial3d(XExplodeDraw &mode) const; // 不规则的三通的绘制 add by hh 2011-01-11
void ExplodeOrDrawOrthoRect3d(XExplodeDraw &mode) const; // 普通
void ExplodeOrDrawInsertRect3d(XExplodeDraw &mode) const; // 承插
void ExplodeOrDrawInclineRect3d(XExplodeDraw &mode) const; // 斜接
void ExplodeOrDrawYShapeRect3d(XExplodeDraw &mode) const; // Y型
void ExplodeOrDrawVShapeRect3d(XExplodeDraw &mode) const; // V型
void ExplodeOrDrawTShapeRect3d(XExplodeDraw &mode) const; // T型
void ExplodeOrDrawArcuateRect3d(XExplodeDraw &mode) const; // 圆角
void ExplodeOrDrawArcuateIntubRect3d(XExplodeDraw &mode) const; // 插管圆角
// 工具函数,仅在3d矩形截面绘制子函数中调用
void DepartArcByAngle(const AcGePoint3d& ptStart, const AcGePoint3d& ptOnCurve,
const AcGePoint3d& ptEnd, double dAng, AcGePoint3dArray& arptPtsOnCur,
const AcGeVector3d& vtNormal, int iNum = 0) const;
int FixPtsData(AcGePoint3dArray& arpt, int iPos, double dAng, const AcGeVector3d& vtNormal) const;
// 3D 圆形截面绘制子函数
void ExplodeOrDrawOrthoCircle3d(XExplodeDraw &mode) const;
void ExplodeOrDrawInsertCircle3d(XExplodeDraw &mode) const;
void ExplodeOrDrawInclineCircle3d(XExplodeDraw &mode) const;
void ExplodeOrDrawYShapeCircle3d(XExplodeDraw &mode) const;
void ExplodeOrDrawVShapeCircle3d(XExplodeDraw &mode) const;
void ExplodeOrDrawTShapeCircle3d(XExplodeDraw &mode) const;
void ExplodeOrDrawArcuateCircle3d(XExplodeDraw &mode) const;
//////////////////////////////////////////////////////////////////////////
// 2D Curve绘制,分散函数控制. nOutOrIn: 0:外围 1:内部线
BOOL CusTomMakeCurves( TComplexCurve& cplCurve, const int &nOutOrIn) const;
// 矩形截面 2D Curve绘制
BOOL MakeOrthoRect2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // 普通
BOOL MakeInsertRect2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // 承插
BOOL MakeInsertIntubRect2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // 承插(插管式)
BOOL MakeInclineRect2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // 斜接
BOOL MakeYShapeRect2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // Y型
BOOL MakeVShapeRect2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // V型
BOOL MakeTShapeRect2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // T型
BOOL MakeArcuateRect2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // 圆角
BOOL MakeArcuateIntubRect2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // 圆角(插管式)
// 各种矩形截面三通 水平放置方式下2DCurve绘制, bIntub:是否插管式
BOOL MakeOrthoRectHoriz2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // 普通
BOOL MakeInsertRectHoriz2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn, BOOL bIntub = FALSE) const; // 承插
BOOL MakeInclineRectHoriz2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // 斜接
BOOL MakeYShapeRectHoriz2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // Y型
BOOL MakeVShapeRectHoriz2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // V型
BOOL MakeTShapeRectHoriz2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // T型
BOOL MakeArcuateRectHoriz2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn, BOOL bIntub = FALSE) const; // 圆角
// 矩形截面三通 侧面垂直放置方式下2DCurve绘制, 基本相同,暂用一个函数(内部区分),
BOOL MakeRectSideVert2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // 所有样式
// 矩形截面三通 正面垂直放置方式下2DCurve绘制 基本相同,暂用一个函数(内部区分)
BOOL MakeRectFaceVert2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn, BOOL bIntub = FALSE) const; // 所有样式
// 圆形截面 2D Curve绘制, 圆形各中放置方式基本没有相同画法的,所以一一列出
BOOL MakeOrthoCircle2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // 普通
BOOL MakeInsertCircle2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // 承插
BOOL MakeInclineCircle2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // 斜接
BOOL MakeYShapeCircle2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // Y型
BOOL MakeVShapeCircle2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // V型
// 圆形截面三通 水平放置方式下2DCurve绘制
BOOL MakeOrthoCircleHoriz2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // 普通
BOOL MakeInsertCircleHoriz2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // 承插
BOOL MakeInclineCircleHoriz2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const;// 斜接
BOOL MakeYShapeCircleHoriz2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // Y型
BOOL MakeVShapeCircleHoriz2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // V型
// 圆形截面三通 侧面垂直放置方式下2DCurve绘制
BOOL MakeOrthoCircleSideVert2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // 普通
BOOL MakeInsertCircleSideVert2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // 承插
BOOL MakeInclineCircleSideVert2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // 斜接
BOOL MakeYShapeCircleSideVert2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // Y型
BOOL MakeVShapeCircleSideVert2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // V型
// 圆形截面三通 正面垂直放置方式下2DCurve绘制
BOOL MakeOrthoCircleFaceVert2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // 普通
BOOL MakeInsertCircleFaceVert2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // 承插
BOOL MakeInclineCircleFaceVert2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // 斜接
BOOL MakeYShapeCircleFaceVert2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // Y型
BOOL MakeVShapeCircleFaceVert2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // V型
// 圆形截面三通 倾斜放置方式下2DCurve绘制Lixl
BOOL MakeOrthoCircleIncline2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // 普通
BOOL MakeInclineCircleInc2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn) const; // 斜接
// 得到圆形截面三通,倾斜放置,三通3个端口投影椭圆的内轮廓线到cplCurve,供所有三通绘制各端口投影椭圆端线
BOOL GetAllIncCircleEndEdge2DCurves(TComplexCurve& cplCurve, const int &nOutOrIn,
BOOL bDrawSta = TRUE, BOOL bDrawEnd = TRUE, BOOL bDrawBran = TRUE) const;
// 得到圆形截面三通,倾斜放置,三通3个端口投影椭圆的外轮廓线,供所有圆形倾斜三通使用
BOOL GetAllIncCirclePolyCurves(AcDbPolyline& StaPLine, AcDbPolyline& EndPLine, AcDbPolyline& BranPLine) const;
// 竖直三通:俯视看去,支管和主管边界相交,这种情况下,支管可能遮挡主管,主管可能遮挡支管,需重新计算
// 是否需要为倾斜三通构建所有曲线
BOOL IsNeedMakeAllCurves(AcGePoint3dArray& arPtJudge) const;
// 构建倾斜三通投影后的所有曲线,用arPts中的点构造直线段,函数中计算弧线段,所有曲线段必须可以形成闭合曲线
BOOL MakeAllBoundaryCurve(AcGePoint3dArray& arPts, TDPtrList<TGGeCurveSegment>& segComs) const;
// 得到各个端口投影下来的椭圆面(椭圆面向外)
BOOL GetEllipseFaces(AcDbVoidPtrArray& arFaces) const;
//////////////////////////////////////////////////////////////////////////
// 2D PolyCurve外轮廓线绘制(只返回外轮廓AcDbPolyLine用于处理遮挡)
// 矩形截面 PolyCurve绘制
AcDbPolyline* MakeOrthoRectPolyCurves() const; // 普通
AcDbPolyline* MakeInsertRectPolyCurves() const; // 承插
AcDbPolyline* MakeInclineRectPolyCurves() const; // 斜接
AcDbPolyline* MakeYShapeRectPolyCurves() const; // Y型
AcDbPolyline* MakeVShapeRectPolyCurves() const; // V型
AcDbPolyline* MakeTShapeRectPolyCurves() const; // T型
AcDbPolyline* MakeArcuateRectPolyCurves() const; // 圆角
// 各种矩形截面三通 水平放置方式下PolyCurve绘制
AcDbPolyline* MakeOrthoRectHorizPolyCurves() const; // 普通
AcDbPolyline* MakeInsertRectHorizPolyCurves() const; // 承插
AcDbPolyline* MakeInclineRectHorizPolyCurves() const; // 斜接
AcDbPolyline* MakeYShapeRectHorizPolyCurves() const; // Y型
AcDbPolyline* MakeVShapeRectHorizPolyCurves() const; // V型
AcDbPolyline* MakeTShapeRectHorizPolyCurves() const; // T型
AcDbPolyline* MakeArcuateRectHorizPolyCurves() const; // 圆角
// 工具函数,获取三点确定的弧线的膨胀率
double GetBulge(const AcGePoint3d& ptStart, const AcGePoint3d& ptOnCur,
const AcGePoint3d& ptEnd, const AcGeVector3d& vtNormal) const;
// 矩形截面三通 侧面垂直放置方式下各种样式PolyCurve绘制, 基本相同,暂用一个函数(内部区分)
AcDbPolyline* MakeRectSideVertPolyCurves() const; // 所有样式
// 矩形截面三通 正面垂直放置方式下各种样式PolyCurve绘制 基本相同,暂用一个函数(内部区分)
AcDbPolyline* MakeRectFaceVertPolyCurves() const; // 所有样式
// 圆形截面 Poly Curve绘制, 圆形各中放置方式基本没有相同画法的,所以一一列出
AcDbPolyline* MakeOrthoCirclePolyCurves() const; // 普通
AcDbPolyline* MakeInsertCirclePolyCurves() const; // 承插
AcDbPolyline* MakeInclineCirclePolyCurves() const; // 斜接
AcDbPolyline* MakeYShapeCirclePolyCurves() const; // Y型
AcDbPolyline* MakeVShapeCirclePolyCurves() const; // V型
// 圆形截面三通 水平放置方式下PolyCurve绘制
AcDbPolyline* MakeOrthoCircleHorizPolyCurves() const; // 普通
AcDbPolyline* MakeInsertCircleHorizPolyCurves() const; // 承插
AcDbPolyline* MakeInclineCircleHorizPolyCurves() const; // 斜接
AcDbPolyline* MakeYShapeCircleHorizPolyCurves() const; // Y型
AcDbPolyline* MakeVShapeCircleHorizPolyCurves() const; // V型
// 圆形截面三通 侧面垂直放置方式下PolyCurve绘制
AcDbPolyline* MakeOrthoCircleSideVertPolyCurves() const; // 普通
AcDbPolyline* MakeInsertCircleSideVertPolyCurves() const; // 承插
AcDbPolyline* MakeInclineCircleSideVertPolyCurves() const; // 斜接
AcDbPolyline* MakeYShapeCircleSideVertPolyCurves() const; // Y型
AcDbPolyline* MakeVShapeCircleSideVertPolyCurves() const; // V型
// 圆形截面三通 正面垂直放置方式下PolyCurve绘制
AcDbPolyline* MakeOrthoCircleFaceVertPolyCurves() const; // 普通
AcDbPolyline* MakeInsertCircleFaceVertPolyCurves() const; // 承插
AcDbPolyline* MakeInclineCircleFaceVertPolyCurves() const; // 斜接
AcDbPolyline* MakeYShapeCircleFaceVertPolyCurves() const; // Y型
AcDbPolyline* MakeVShapeCircleFaceVertPolyCurves() const; // V型
// 圆形截面三通 倾斜放置方式下PolyCurve绘制
AcDbPolyline* MakeInsertCircleInclinePolyCurves() const; // 普通
AcDbPolyline* MakeInclineCircleIncPolyCurves() const; // 斜接
//////////////////////////////////////////////////////////////////////////
// 3DFaces遮挡面绘制, 返回其遮挡作用的各个3Dface面
// 矩形截面 3DFaces绘制
BOOL MakeOrthoRectCurveFaces(AcDbVoidPtrArray& arFaces) const; // 普通
BOOL MakeInsertRectCurveFaces(AcDbVoidPtrArray& arFaces) const; // 承插
BOOL MakeInclineRectCurveFaces(AcDbVoidPtrArray& arFaces) const; // 斜接
BOOL MakeYShapeRectCurveFaces(AcDbVoidPtrArray& arFaces) const; // Y型
BOOL MakeVShapeRectCurveFaces(AcDbVoidPtrArray& arFaces) const; // V型
BOOL MakeTShapeRectCurveFaces(AcDbVoidPtrArray& arFaces) const; // T型
BOOL MakeArcuateRectCurveFaces(AcDbVoidPtrArray& arFaces) const; // 圆角
// 各种矩形截面三通 水平放置方式下3DFaces绘制
BOOL MakeOrthoRectHorizCurveFaces(AcDbVoidPtrArray& arFaces) const; // 普通
BOOL MakeInsertRectHorizCurveFaces(AcDbVoidPtrArray& arFaces) const; // 承插
BOOL MakeInclineRectHorizCurveFaces(AcDbVoidPtrArray& arFaces) const; // 斜接
BOOL MakeYShapeRectHorizCurveFaces(AcDbVoidPtrArray& arFaces) const; // Y型
BOOL MakeVShapeRectHorizCurveFaces(AcDbVoidPtrArray& arFaces) const; // V型
BOOL MakeTShapeRectHorizCurveFaces(AcDbVoidPtrArray& arFaces) const; // T型
BOOL MakeArcuateRectHorizCurveFaces(AcDbVoidPtrArray& arFaces) const; // 圆角
// 矩形截面三通 侧面垂直放置方式下各种样式3DFaces绘制, 基本相同,暂用一个函数(内部区分)
BOOL MakeRectSideVertCurveFaces(AcDbVoidPtrArray& arFaces) const; // 所有样式
// 矩形截面三通 正面垂直放置方式下各种样式3DFaces绘制 基本相同,暂用一个函数(内部区分)
BOOL MakeRectFaceVertCurveFaces(AcDbVoidPtrArray& arFaces) const; // 所有样式
// 圆形截面3DFaces绘制, 圆形各中放置方式基本没有相同画法的,所以一一列出
BOOL MakeOrthoCircleCurveFaces(AcDbVoidPtrArray& arFaces) const; // 普通
BOOL MakeInsertCircleCurveFaces(AcDbVoidPtrArray& arFaces) const; // 承插
BOOL MakeInclineCircleCurveFaces(AcDbVoidPtrArray& arFaces) const; // 斜接
BOOL MakeYShapeCircleCurveFaces(AcDbVoidPtrArray& arFaces) const; // Y型
BOOL MakeVShapeCircleCurveFaces(AcDbVoidPtrArray& arFaces) const; // V型
// 圆形截面三通 水平放置方式下3DFaces绘制
BOOL MakeOrthoCircleHorizCurveFaces(AcDbVoidPtrArray& arFaces) const; // 普通
BOOL MakeInsertCircleHorizCurveFaces(AcDbVoidPtrArray& arFaces) const; // 承插
BOOL MakeInclineCircleHorizCurveFaces(AcDbVoidPtrArray& arFaces) const; // 斜接
BOOL MakeYShapeCircleHorizCurveFaces(AcDbVoidPtrArray& arFaces) const; // Y型
BOOL MakeVShapeCircleHorizCurveFaces(AcDbVoidPtrArray& arFaces) const; // V型
// 圆形截面三通 侧面垂直放置方式下3DFaces绘制
BOOL MakeOrthoCircleSideVertCurveFaces(AcDbVoidPtrArray& arFaces) const; // 普通
BOOL MakeInsertCircleSideVertCurveFaces(AcDbVoidPtrArray& arFaces) const; // 承插
BOOL MakeInclineCircleSideVertCurveFaces(AcDbVoidPtrArray& arFaces) const; // 斜接
BOOL MakeYShapeCircleSideVertCurveFaces(AcDbVoidPtrArray& arFaces) const; // Y型
BOOL MakeVShapeCircleSideVertCurveFaces(AcDbVoidPtrArray& arFaces) const; // V型
// 圆形截面三通 正面垂直放置方式下3DFaces绘制
BOOL MakeOrthoCircleFaceVertCurveFaces(AcDbVoidPtrArray& arFaces) const; // 普通
BOOL MakeInsertCircleFaceVertCurveFaces(AcDbVoidPtrArray& arFaces) const; // 承插
BOOL MakeInclineCircleFaceVertCurveFaces(AcDbVoidPtrArray& arFaces) const; // 斜接
BOOL MakeYShapeCircleFaceVertCurveFaces(AcDbVoidPtrArray& arFaces) const; // Y型
BOOL MakeVShapeCircleFaceVertCurveFaces(AcDbVoidPtrArray& arFaces) const; // V型
// 圆形截面三通 倾斜放置方式下3DFaces绘制
BOOL MakeInsertCircleFaceInclineCurveFaces(AcDbVoidPtrArray& arFaces) const;// 普通
BOOL MakeInclineCircleIncCurveFaces(AcDbVoidPtrArray& arFaces) const; // 斜接
//wlw v型算点函数
BOOL GetVShapeCirclePts(AcGePoint3dArray &ptArr) const;
void GetArcPoint(AcDbPolyline &polyLine, AcGePoint3dArray &ptArcArr);
// 根据全局设置获取线宽
double GetEdgeLineWidth() const;
double GetCentLineWidth() const;
double GetEndLineWidth() const;
// 根据全局设置获取图层id
AcDbObjectId GetCentLayer() const;
AcDbObjectId GetEndLayer() const;
// 拖拽管件,支持转向等操作
Acad::ErrorStatus MoveGripRandom(TDb::Position ePos, const AcGeVector3d& offset );
// 判断消息是不是重复的
BOOL IsOverlapMessage(const TInterfaceModifyMsg& iModiMsg);
// 删除所连接各法兰
void DealFlange();
void DealFlange(AcDbObjectId idFlange);
BOOL MoveDuctEnd(AcGePoint3d ptFrom, AcGePoint3d ptTo, AcDbObjectId idDuctd);
// 在主管及尾管端绘制法兰
void DrawFlange();
void DrawFlange(int nIndex, TDbHvacFitting* pFlange);
// 生成3D轮廓PL线 iFlag: 1 顶面 2 底面 3 背面 4 左拐角 5右拐角
BOOL Make3DOutline(TGGePoly2D& poly, int iFlag) const;
BOOL MakeRect3DOutline(TGGePoly2D& poly, int iFlag) const; // 方形
BOOL MakeCirc3DOutline(TGGePoly2D& poly, int iFlag) const; // 圆形
AcGeTol m_tol;
};
#endif // !defined(__THIMPHVACTEE_H__)