#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__)