Files
envi-code/SourceCode/Code2026/tg_shs/shs_pipebase/THImpHvacDuct.h
T

378 lines
16 KiB
C++
Raw Normal View History

2026-10-04 00:04:20 +08:00
// 暖通风管实现类
2026-09-28 15:28:50 +08:00
//
2026-10-04 00:04:20 +08:00
// 直风管示意图:
// 水平管: ⑩━━⑾ 垂直矩形/扁圆管: 垂直圆管:
// / ⑤
// ┏━━━━/ ━━⑨━━━━━━┓ ┏━━⑥━━┓ /~~~~~\
// ┃ / ──→ ┃ ┃ ② ┃ / ②\
// ⑥②━━━④━━━①━━━━━━③⑦ ④ ① ③ | ① ③
// ┃ ┃ ┃ ┃ \ /
// ┗━━━━━━━⑧━━━━━━┛ ┗━━⑤━━┛ \_____/
2026-09-28 15:28:50 +08:00
//
2026-10-04 00:04:20 +08:00
// 单线: ⑧━━⑨ 垂直矩形/扁圆管/垂直圆管:
2026-09-28 15:28:50 +08:00
// /
2026-10-04 00:04:20 +08:00
// / ⑤ ②
// ⑥②━━━④━━━①━━━━━━③⑦ ①
2026-09-28 15:28:50 +08:00
//
//
2026-10-04 00:04:20 +08:00
// 软风管示意图:
// 水平管: ⑩━━⑾ 垂直矩形/扁圆管: 垂直圆管:
2026-09-28 15:28:50 +08:00
// /
2026-10-04 00:04:20 +08:00
// ┏━━━━/ ━━⑨━━━━━━┓ ┏━━⑥━━┓ /~~~~~\
// ┃ / ──→ ┃ ┃ ② ┃ / ②\
// ⑥②━━━④━⑤━①━━━━━━③⑦ ④ ① ③ | ① ③
// ┃ ┃ ┃ ┃ \ /
// ┗━━━━━━━⑧━━━━━━┛ ┗━━⑤━━┛ \_____/
2026-09-28 15:28:50 +08:00
//
2026-10-04 00:04:20 +08:00
// 单线: ⑧━━⑨ 垂直矩形/扁圆管/垂直圆管:
2026-09-28 15:28:50 +08:00
// /
2026-10-04 00:04:20 +08:00
// / ②
// ⑥②━━━④━⑤━①━━━━━━③⑦ ①
2026-09-28 15:28:50 +08:00
//
//
2026-10-04 00:04:20 +08:00
// 水平管夹点说明:
// ①: 风管中心移动点
// ②: 风管长度延伸点
// ③: 风管长度延伸点
// ④: 标注位置点
// ⑤: 直风管中间命令激活点/软风管中间曲率调整点
// ⑥: 左端命令激活点
// ⑦: 右端命令激活点
// ⑧: 管径尺寸调整点/单线管标注引线位置点
// ⑨: 管径尺寸调整点/单线标注引线方向点
// ⑩: 双线标注引线位置点
// ⑾: 双线标注引线方向点
2026-09-28 15:28:50 +08:00
//
2026-10-04 00:04:20 +08:00
// 垂直管夹点说明:
// ①: 风管中心移动点
// ②: 命令激活点
// ③: 管径尺寸调整点
// ④: 管径尺寸调整点
// ⑤: 管径尺寸调整点
// ⑥: 管径尺寸调整点
2026-09-28 15:28:50 +08:00
#if !defined(__THIMPHVACDUCT_H__)
#define __THIMPHVACDUCT_H__
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "TDbImpPipeBase.h"
class TDbPipeBase;
class THImpHvacDuct : public TDbImpPipeBase
{
public:
THImpHvacDuct();
THImpHvacDuct(TDbPipeBase* pOwner);
virtual ~THImpHvacDuct();
protected:
//{{AFX_ARX_METHODS(TDbPipeBase)
virtual BOOL IsValid(TDbXDataMap* pXMap);
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 NotifyInterfaceToModify(const TInterfaceModifyMsg& iModiMsg, TInterfaceModifyMsgs& iModiMsgs);
Acad::ErrorStatus ExplodeOrDraw3d(XExplodeDraw &mode) const;
virtual Acad::ErrorStatus ExplodeOrDraw2d(XExplodeDraw &mode) const;
virtual BOOL MakeCurves(TComplexCurve& cplCurve) const;
virtual BOOL GetCurvesInSide(TComplexCurve& compCurve) const;
virtual AcDbPolyline* MakePolyCurve() const;
virtual BOOL MakePolyCurveFaces(AcDbVoidPtrArray& arFaces);
virtual Acad::ErrorStatus transformBy(const AcGeMatrix3d& xform);
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 TDb::Position ExplainGripIndex(int nIndex) const;
virtual Acad::ErrorStatus moveGripPointsAt(const AcDbIntArray& indices, const AcGeVector3d& offset);
virtual Acad::ErrorStatus moveStretchPointsAt(const AcDbIntArray& indices,
const AcGeVector3d& offset);
virtual Acad::ErrorStatus getStartPoint(AcGePoint3d& x0) const;
virtual Acad::ErrorStatus getStartParam(double& x0) const;
virtual Acad::ErrorStatus getEndPoint(AcGePoint3d& x0) const;
virtual Acad::ErrorStatus getEndParam(double& x0) const;
virtual Acad::ErrorStatus getParamAtDist(double dist,double& param) const;
virtual Acad::ErrorStatus getParamAtPoint(const AcGePoint3d& x0,double& x1)const;
virtual Acad::ErrorStatus getPointAtDist(double x0,AcGePoint3d& x1) const;
virtual Acad::ErrorStatus getPointAtParam(double x0,AcGePoint3d& x1) const;
virtual Acad::ErrorStatus getDistAtPoint(const AcGePoint3d& x0,
double& x1)const;
virtual Acad::ErrorStatus getDistAtParam(double param, double& dist) const;
virtual Acad::ErrorStatus intersectWith(const AcDbEntity* pEnt,
AcDb::Intersect intType,
const AcGePlane& projPlane,
AcGePoint3dArray& points,
INT_PTR thisGsMarker = 0,
INT_PTR otherGsMarker = 0) const;
virtual Acad::ErrorStatus intersectWith(const AcDbEntity* pEnt,
AcDb::Intersect intType,
AcGePoint3dArray& points,
INT_PTR thisGsMarker = 0,
INT_PTR otherGsMarker = 0) const;
virtual Acad::ErrorStatus getSplitCurves(const AcGePoint3dArray& points,
AcDbVoidPtrArray& curveSegments) const;
virtual Acad::ErrorStatus getSplitCurves(const AcGeDoubleArray& params,
AcDbVoidPtrArray& curveSegments) const;
virtual Acad::ErrorStatus getClosestPointTo( const AcGePoint3d& givenPnt, const AcGeVector3d& direction,
AcGePoint3d& pointOnCurve, Adesk::Boolean extend) const;
virtual Acad::ErrorStatus getClosestPointTo(const AcGePoint3d& givenPnt,
AcGePoint3d& pointOnCurve,
Adesk::Boolean extend = Adesk::kFalse) const;
virtual Acad::ErrorStatus extend(double newParam);
virtual Acad::ErrorStatus extend(Adesk::Boolean extendStart,
const AcGePoint3d& toPoint);
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 void CopyPropertiesTo(AcDbObjectId& idTgr,unsigned gMatchFlag);
virtual void CopyPropertiesTo(AcDbObjectIdArray& arIds,unsigned gMatchFlag);
//}}AFX_ARX_METHODS
public:
2026-10-04 00:04:20 +08:00
//获取三维的壳对象
2026-09-28 15:28:50 +08:00
virtual int GetXBaseShell(TXShell& xShell);
2026-10-04 00:04:20 +08:00
//获取体的范围方块
2026-09-28 15:28:50 +08:00
virtual int GetBodyBox(AcDbExtents& ext);
2026-10-04 00:04:20 +08:00
// 导出XML mcl add 2010.12.20
2026-09-28 15:28:50 +08:00
// virtual CString GetXml() const;
virtual CString GetXml(const AcGeMatrix3d& mat) const;
2026-10-04 00:04:20 +08:00
// mcl add 2011.1.17 剖切功能。 注意 GetSection内不应将std::vector<TObjSectionRecord>参数清空
2026-09-28 15:28:50 +08:00
virtual bool GetSection(const AcDbFace &face, const AcGeVector3d &vtPlaneSecDir,
std::vector<TObjSectionRecord> &sectionRecord, AcDbVoidPtrArray& arFillPtrs) const;
2026-10-04 00:04:20 +08:00
// 剖切用,返回Z坐标最高、最低点
2026-09-28 15:28:50 +08:00
virtual Acad::ErrorStatus GetExtents(TADSGePoint3d &ptLow, TADSGePoint3d &ptUp) const;
virtual Acad::ErrorStatus GetClipBoundary(TGGePoly2D& poly) const;
virtual bool IsMeClip() const;
2026-10-04 00:04:20 +08:00
virtual bool IsClipMe(const TEntityBase* pEnt=NULL)const;//ok是否被裁剪
2026-09-28 15:28:50 +08:00
2026-10-04 00:04:20 +08:00
// 以下4个函数,开放给TDbHbacDuct使用Lixl modify 2012-3-10
// 得到软管圆心,如果不是软管,则返回0点
2026-09-28 15:28:50 +08:00
AcGePoint3d GetCirCenter() const;
2026-10-04 00:04:20 +08:00
// 获得风管中点和两端方向向量
2026-09-28 15:28:50 +08:00
AcGePoint3d GetDirect(AcGeVector3d& vtStart, AcGeVector3d& vtEnd) const;
2026-10-04 00:04:20 +08:00
// 是否是弧管
2026-09-28 15:28:50 +08:00
BOOL IsArcDuct() const;
2026-10-04 00:04:20 +08:00
// 初始化为弧(仅仅针对弧管)
2026-09-28 15:28:50 +08:00
BOOL InitArc(AcDbArc &arc) const;
private:
2026-10-04 00:04:20 +08:00
// 风管是否水平放置
2026-09-28 15:28:50 +08:00
BOOL IsHorzAlignment() const;
2026-10-04 00:04:20 +08:00
// 风管是否垂直放置
2026-09-28 15:28:50 +08:00
BOOL IsVertAlignment() const;
2026-10-04 00:04:20 +08:00
// 是否是单线风管
2026-09-28 15:28:50 +08:00
BOOL IsSingleLine() const;
2026-10-04 00:04:20 +08:00
// 获取系统类型
2026-09-28 15:28:50 +08:00
HvacModelType GetModeType() const;
2026-10-04 00:04:20 +08:00
// 判断软风管是否能正确绘制
2026-09-28 15:28:50 +08:00
BOOL IsCanDrawSoft() const;
2026-10-04 00:04:20 +08:00
// 复原标注点
2026-09-28 15:28:50 +08:00
// void ReSetDimPoint() const;
2026-10-04 00:04:20 +08:00
// 获取接口尺寸数据type,size,size1
2026-09-28 15:28:50 +08:00
BOOL GetInterfaceSizeData(int nIndex, TInterface& pipeInterface) const;
2026-10-04 00:04:20 +08:00
// 求出软管调节点
2026-09-28 15:28:50 +08:00
AcGePoint3d GetAdjustPt() const;
2026-10-04 00:04:20 +08:00
// 求出圆立管尺寸点
2026-09-28 15:28:50 +08:00
AcGePoint3d GetAVertCirSizePt() const;
2026-10-04 00:04:20 +08:00
// 得到半个椭圆多段线 各个关键弧点, polyLine必须为顺序添加的4个Vertext点
2026-09-28 15:28:50 +08:00
void GetArcPoint(AcDbPolyline &polyLine, AcGePoint3dArray &ptArcArr) const;
2026-10-04 00:04:20 +08:00
// 得到软管半径,如果不是软管,则返回0
2026-09-28 15:28:50 +08:00
double GetRadius() const;
2026-10-04 00:04:20 +08:00
// 辅助构建决定遮挡面, pt1, pt2, pt3分别为面上不同三点,vtNormal为法向,dEle返回距原点高度
2026-09-28 15:28:50 +08:00
AcGePlane GetHidePlane(AcGePoint3d pt1, AcGePoint3d pt2, AcGePoint3d pt3,
const AcGeVector3d vtNormal, double &dEle) const;
2026-10-04 00:04:20 +08:00
// 得到用的较多的关键的四个点
2026-09-28 15:28:50 +08:00
void GetFourKeyPoints( AcGePoint3dArray &ptArr) const;
2026-10-04 00:04:20 +08:00
// 如果弧管设置了起止点方向,将关键的四个点转换为实际的四个点
2026-09-28 15:28:50 +08:00
void ConverFourKeyPts(AcGePoint3dArray &ptArr) const;
2026-10-04 00:04:20 +08:00
// 得到单线模式遮挡面关键点,仅限非立管
2026-09-28 15:28:50 +08:00
void GetSingleKeyPoints(AcGePoint3dArray &ptArr) const;
AcDbObjectId GetBaseLayerId() const;
2026-10-04 00:04:20 +08:00
// 得到边线宽
2026-09-28 15:28:50 +08:00
double GetEdgeLineWidth() const;
2026-10-04 00:04:20 +08:00
// 得到中心线宽
2026-09-28 15:28:50 +08:00
double GetCentLineWidth() const;
2026-10-04 00:04:20 +08:00
// 得到端部线宽
2026-09-28 15:28:50 +08:00
double GetEndLineWidth() const;
2026-10-04 00:04:20 +08:00
// 是否绘制首端或末端
2026-09-28 15:28:50 +08:00
BOOL IsHideStart() const;
BOOL IsHideEnd() const;
2026-10-04 00:04:20 +08:00
// 首尾是否连接了管件
2026-09-28 15:28:50 +08:00
BOOL IsStartConnect() const;
BOOL IsEndConnect() const;
2026-10-04 00:04:20 +08:00
// 夹点移动消息处理
2026-09-28 15:28:50 +08:00
BOOL OnMoveGripPointMsgNotify(const TInterfaceModifyMsg& iModiMsg, TInterfaceModifyMsgs& iModiMsgs);
2026-10-04 00:04:20 +08:00
// 对象移动消息处理
2026-09-28 15:28:50 +08:00
BOOL OnTransformMsgNotify(const TInterfaceModifyMsg& iModiMsg, TInterfaceModifyMsgs& iModiMsgs);
2026-10-04 00:04:20 +08:00
// 尺寸调整消息处理
2026-09-28 15:28:50 +08:00
BOOL OnSizeMsgNotify(const TInterfaceModifyMsg& iModiMsg, TInterfaceModifyMsgs& iModiMsgs);
2026-10-04 00:04:20 +08:00
// 绘制直风管三维图形
2026-09-28 15:28:50 +08:00
Acad::ErrorStatus ExplodeOrDrawStraight3d(XExplodeDraw &mode) const ;
2026-10-04 00:04:20 +08:00
// 矩形直风管三维图形
2026-09-28 15:28:50 +08:00
Acad::ErrorStatus ExplodeOrDrawRectStraight3d(XExplodeDraw &mode) const;
2026-10-04 00:04:20 +08:00
// 圆形直风管三维图形
2026-09-28 15:28:50 +08:00
Acad::ErrorStatus ExplodeOrDrawCircStraight3d(XExplodeDraw &mode) const;
2026-10-04 00:04:20 +08:00
// 椭圆形直风管三维图形
2026-09-28 15:28:50 +08:00
Acad::ErrorStatus ExplodeOrDrawOblateStraight3d(XExplodeDraw &mode) const;
2026-10-04 00:04:20 +08:00
// 绘制软风管三维图形
2026-09-28 15:28:50 +08:00
Acad::ErrorStatus ExplodeOrDrawSoft3d(XExplodeDraw &mode) const;
2026-10-04 00:04:20 +08:00
// 矩形软风管三维图形
2026-09-28 15:28:50 +08:00
Acad::ErrorStatus ExplodeOrDrawRectSoft3d(XExplodeDraw &mode) const;
2026-10-04 00:04:20 +08:00
// 圆形软风管三维图形
2026-09-28 15:28:50 +08:00
Acad::ErrorStatus ExplodeOrDrawCircSoft3d(XExplodeDraw &mode) const;
2026-10-04 00:04:20 +08:00
// 椭圆形软风管三维图形
2026-09-28 15:28:50 +08:00
Acad::ErrorStatus ExplodeOrDrawOblateSoft3d(XExplodeDraw &mode) const;
2026-10-04 00:04:20 +08:00
// 构件风管内衬图形 add by hh 2013-9-2
2026-09-28 15:28:50 +08:00
BOOL MakeDuctLiningCurves(TComplexCurve& cplCurve) const;
2026-10-04 00:04:20 +08:00
// 构建水平风管二维图形
2026-09-28 15:28:50 +08:00
BOOL MakeHorz2DCurves(TComplexCurve& cplCurve, int nOutOrIn) const;
2026-10-04 00:04:20 +08:00
// 构建水平直风管二维图形
2026-09-28 15:28:50 +08:00
BOOL MakeHorzStraight2DCurves(TComplexCurve& cplCurve, int nOutOrIn) const;
2026-10-04 00:04:20 +08:00
// 构建水平软风管二维图形
2026-09-28 15:28:50 +08:00
BOOL MakeHorzSoft2DCurves(TComplexCurve& cplCurve, int nOutOrIn) const;
2026-10-04 00:04:20 +08:00
// 构建垂直风管二维图形, nOutOrIn:外轮廓还是内部线, 0:外轮廓, 1内部线
2026-09-28 15:28:50 +08:00
BOOL MakeVert2DCurves(TComplexCurve& cplCurve, int nOutOrIn) const;
2026-10-04 00:04:20 +08:00
// 构建垂直直风管二维图形
2026-09-28 15:28:50 +08:00
BOOL MakeVertStraight2DCurves(TComplexCurve& cplCurve, int nOutOrIn) const;
2026-10-04 00:04:20 +08:00
// 构建垂直软风管二维图形
2026-09-28 15:28:50 +08:00
BOOL MakeVertSoft2DCurves(TComplexCurve& cplCurve, int nOutOrIn ) const;
2026-10-04 00:04:20 +08:00
// 构建倾斜风管二维图形
2026-09-28 15:28:50 +08:00
BOOL MakeIncl2DCurves(TComplexCurve& cplCurve, int nOutOrIn) const;
2026-10-04 00:04:20 +08:00
// 构建倾斜直风管二维图形
2026-09-28 15:28:50 +08:00
BOOL MakeInclStraight2DCurves(TComplexCurve& cplCurve, int nOutOrIn) const;
2026-10-04 00:04:20 +08:00
// 构建倾斜软风管二维图形
2026-09-28 15:28:50 +08:00
BOOL MakeInclSoft2DCurves(TComplexCurve& cplCurve, int nOutOrIn) const;
2026-10-04 00:04:20 +08:00
// 构建水平风管外轮廓
2026-09-28 15:28:50 +08:00
AcDbPolyline* MakeHorzPolyCurve() const;
2026-10-04 00:04:20 +08:00
// 构建水平直风管外轮廓
2026-09-28 15:28:50 +08:00
AcDbPolyline* MakeHorzStraightPolyCurve() const;
2026-10-04 00:04:20 +08:00
// 构建水平软风管外轮廓
2026-09-28 15:28:50 +08:00
AcDbPolyline* MakeHorzSoftPolyCurve() const;
2026-10-04 00:04:20 +08:00
// 构建垂直风管外轮廓
2026-09-28 15:28:50 +08:00
AcDbPolyline* MakeVertPolyCurve() const;
2026-10-04 00:04:20 +08:00
// 构建垂直直风管外轮廓
2026-09-28 15:28:50 +08:00
AcDbPolyline* MakeVertStraightPolyCurve() const;
2026-10-04 00:04:20 +08:00
// 构建垂直软风管外轮廓
2026-09-28 15:28:50 +08:00
AcDbPolyline* MakeVertSoftPolyCurve() const;
2026-10-04 00:04:20 +08:00
// 构建倾斜风管外轮廓
2026-09-28 15:28:50 +08:00
AcDbPolyline* MakeInclPolyCurve() const;
2026-10-04 00:04:20 +08:00
// 构建倾斜直风管外轮廓
2026-09-28 15:28:50 +08:00
AcDbPolyline* MakeInclStraightPolyCurve() const;
2026-10-04 00:04:20 +08:00
// 构建倾斜软风管外轮廓
2026-09-28 15:28:50 +08:00
AcDbPolyline* MakeInclSoftPolyCurve() const;
2026-10-04 00:04:20 +08:00
// 构建水平风管外轮廓所围平面的3DFace组
2026-09-28 15:28:50 +08:00
BOOL MakeHorzPolyCurveFaces(AcDbVoidPtrArray& arFaces) const;
2026-10-04 00:04:20 +08:00
// 构建水平直风管外轮廓所围平面的3DFace组
2026-09-28 15:28:50 +08:00
BOOL MakeHorzStraightPolyCurveFaces(AcDbVoidPtrArray& arFaces) const;
2026-10-04 00:04:20 +08:00
// 构建水平软风管外轮廓所围平面的3DFace组
2026-09-28 15:28:50 +08:00
BOOL MakeHorzSoftPolyCurveFaces(AcDbVoidPtrArray& arFaces) const;
2026-10-04 00:04:20 +08:00
// 构建垂直风管外轮廓所围平面的3DFace组
2026-09-28 15:28:50 +08:00
BOOL MakeVertPolyCurveFaces(AcDbVoidPtrArray& arFaces) const;
2026-10-04 00:04:20 +08:00
// 构建垂直直风管外轮廓所围平面的3DFace组
2026-09-28 15:28:50 +08:00
BOOL MakeVertStraightPolyCurveFaces(AcDbVoidPtrArray& arFaces) const;
2026-10-04 00:04:20 +08:00
// 构建垂直软风管外轮廓所围平面的3DFace组
2026-09-28 15:28:50 +08:00
BOOL MakeVertSoftPolyCurveFaces(AcDbVoidPtrArray& arFaces) const;
2026-10-04 00:04:20 +08:00
// 构建倾斜风管外轮廓所围平面的3DFace组
2026-09-28 15:28:50 +08:00
BOOL MakeInclPolyCurveFaces(AcDbVoidPtrArray& arFaces) const;
2026-10-04 00:04:20 +08:00
// 构建倾斜直风管外轮廓所围平面的3DFace组
2026-09-28 15:28:50 +08:00
BOOL MakeInclStraightPolyCurveFaces(AcDbVoidPtrArray& arFaces) const;
2026-10-04 00:04:20 +08:00
// 构建倾斜软风管外轮廓所围平面的3DFace组
2026-09-28 15:28:50 +08:00
BOOL MakeInclSoftPolyCurveFaces(AcDbVoidPtrArray& arFaces) const;
2026-10-04 00:04:20 +08:00
// 直管剖切
2026-09-28 15:28:50 +08:00
virtual bool GetStraightSection(const AcDbFace &face, const AcGeVector3d &vtPlaneSecDir,
std::vector<TObjSectionRecord> &sectionRecord, AcDbVoidPtrArray& arFillPtrs) const;
2026-10-04 00:04:20 +08:00
// 弧管剖切
2026-09-28 15:28:50 +08:00
virtual bool GetArcSection(const AcDbFace &face, const AcGeVector3d &vtPlaneSecDir,
std::vector<TObjSectionRecord> &sectionRecord, AcDbVoidPtrArray& arFillPtrs) const;
2026-10-04 00:04:20 +08:00
// 延伸夹点处理
2026-09-28 15:28:50 +08:00
Acad::ErrorStatus MoveExtendGripPointsAt(TDb::Position ePos, const AcGeVector3d& offset, BOOL bAutoWork);
2026-10-04 00:04:20 +08:00
// 移动夹点处理
2026-09-28 15:28:50 +08:00
Acad::ErrorStatus MoveTransGripPointsAt(TDb::Position ePos, const AcGeVector3d& offset, BOOL bForcePer);
2026-10-04 00:04:20 +08:00
// 调整夹点处理
2026-09-28 15:28:50 +08:00
Acad::ErrorStatus MoveAdjustGripPointsAt(TDb::Position ePos, const AcGeVector3d& offset);
2026-10-04 00:04:20 +08:00
// 标注夹点处理
2026-09-28 15:28:50 +08:00
// Acad::ErrorStatus MoveDimGripPointsAt(TDb::Position ePos, const AcGeVector3d& offset);
2026-10-04 00:04:20 +08:00
// 尺寸夹点处理
2026-09-28 15:28:50 +08:00
Acad::ErrorStatus MoveSizeGripPointsAt(TDb::Position ePos, const AcGeVector3d& offset);
2026-10-04 00:04:20 +08:00
// 命令夹点处理
2026-09-28 15:28:50 +08:00
Acad::ErrorStatus MoveCommandGripPointsAt(TDb::Position ePos, const AcGeVector3d& offset);
2026-10-04 00:04:20 +08:00
// 专业应用数据
2026-09-28 15:28:50 +08:00
TDbXDataMap* GetSpecialtyDataReadOnly() const;
2026-10-04 00:04:20 +08:00
// 根据首尾点重新设置normal
2026-09-28 15:28:50 +08:00
AcGeVector3d ResetNormalByPt();
2026-10-04 00:04:20 +08:00
// 更新反应器中的标注(由夹点变化引起的变化)
2026-09-28 15:28:50 +08:00
void UpdateDimInReactor(Position eGridPos, const AcGeVector3d& vtOff);
2026-10-04 00:04:20 +08:00
// 将倾斜软风管的数据转换为水平软风管 便于直接使用水平软风管的2D绘制
// dataMap保存转换之前的数据
2026-09-28 15:28:50 +08:00
BOOL TransInclSoftDuct(TDbXDataMap& dataMap) const;
BOOL MakeRealHorzSoft2DCurves(TComplexCurve& cplCurve, int nOutOrIn) const;
void DisPoseArcPoint(AcGePoint3dArray& ptArr, AcGePoint3d ptC, AcGeVector3d vtNor) const;
BOOL IsEdgeStart() const;
BOOL IsEdgeEnd() const;
};
#endif // !defined(__THIMPHVACDUCT_H__)