Files
envi-code/SourceCode/Code2026/tg_shs/inc/pipebase/TDbHvacDuct.h
T
2026-09-28 15:28:50 +08:00

102 lines
3.2 KiB
C++

#if !defined(__TDBHVACDUCT_H__)
#define __TDBHVACDUCT_H__
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "TDbPipeBase.h"
#pragma warning(disable: 4275 4251)
#ifdef _TCHPIPEBASE_
#define DLLIMPEXP __declspec(dllexport)
#else
#ifdef _TCHPIPEBASE_COM_
#define DLLIMPEXP
#else
#define DLLIMPEXP __declspec(dllimport)
#endif
#endif
#ifndef TCHPIPEBASE_DBXSERVICE
#define TCHPIPEBASE_DBXSERVICE _T("TCHPIPEBASE_DBXSERVICE")
#endif
class DLLIMPEXP TDbHvacDuct : public TDbPipeBase
{
public:
ACRX_DECLARE_MEMBERS(TDbHvacDuct);
TDbHvacDuct();
virtual ~TDbHvacDuct();
public:
//{{AFX_ARX_METHODS(TDbHvacDuct)
virtual Acad::ErrorStatus ExplodeOrDraw3d(XExplodeDraw &mode) const;
virtual Acad::ErrorStatus ExplodeOrDraw2d(XExplodeDraw &mode) const;
virtual Acad::ErrorStatus subExplode(AcDbVoidPtrArray& entitySet) const;
virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler* pFiler) const;
virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler* pFiler);
virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const;
virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* pFiler);
virtual Acad::ErrorStatus subGetTransformedCopy(const AcGeMatrix3d& xform,
AcDbEntity*& pEnt) const;
virtual Acad::ErrorStatus getSplitCurves(const AcGePoint3dArray& points,
AcDbVoidPtrArray& curveSegments) const;
virtual Acad::ErrorStatus getSplitCurves(const AcGeDoubleArray& params,
AcDbVoidPtrArray& curveSegments) const;
virtual void erased(const AcDbObject* dbObj, Adesk::Boolean pErasing = true);
//}}AFX_ARX_METHODS
//{{AFX_ARX_DATA_ACCESS(TDbHvacDuct)
//}}AFX_ARX_DATA_ACCESS
virtual void UpdateRalatCover () const;
// add by hh 2011-09-29 支持风管与水管之间的遮挡
virtual Acad::ErrorStatus GetClipBoundary(TGGePoly2D& poly)const;
virtual bool IsMeClip() const;
virtual bool IsClipMe(const TEntityBase* pEnt=NULL)const;//ok是否被裁剪
// 是否是立管
virtual BOOL IsVertical() const;
// 写风管尺寸变化消息, vtOff:径向偏移
virtual void WriteSizeChangeMsg(double dNewWidth, double dNewHeigh, AcGeVector3d vtOff = AcGeVector3d(0,0,0));
// 写风管拖动位移夹点消息, vtOff:偏移
virtual void WriteMoveTransMsg(AcGeVector3d vtMove);
//BEGIN==========================================================
virtual void UpdateDimData(); //在风管的尺寸、标高、材料、风量发生变化时,更新标注内容
//END============================================================
// 移动紧邻风管的风口,用于联动。处理用接口无法实现的联动。贴壁风口目前跟风管还无法建立关系
// 图面实体多时,效率有待改善
virtual void MoveNextToAirLet(AcGeVector3d vtMove);
// 得到弧管圆心,如果不是软管,则返回0点
virtual AcGePoint3d GetCirCenter() const;
// 是否是弧管
virtual BOOL IsArcDuct() const;
// 初始化为弧(仅仅针对弧管)
BOOL InitArc(AcDbArc &arc) const;
// 获得风管中点和两端方向向量
virtual AcGePoint3d GetDirect(AcGeVector3d& vtStart, AcGeVector3d& vtEnd);
private:
//{{AFX_ARX_DATA(TDbHvacDuct)
//}}AFX_ARX_DATA
private:
void *operator new[](size_t nSize) { return 0; }
void operator delete[](void *p) {};
void *operator new[](size_t nSize, const char *file, int line) { return 0; }
};
#endif // !defined(__TDBHVACDUCT_H__)