476 lines
24 KiB
C++
476 lines
24 KiB
C++
// 暖三通实现类
|
||||
|
|
//
|
|||
|
|
// 三通示意图(一般类型, 其他类型详见管件类型.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> §ionRecord, 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__)
|