#pragma once /*---------------------------------------------------------------------------------- //AecDbHvacFitting :弯头,三通,四通,等 风管 Fitting类 // //通过 基本体 进行基本体的拼接 //---------------------------------------------------------------------------------*/ #include "AecDbEntityBase.h" #include "AecDbObjXDataMap.h" #include "AecComplexCurveDraw.h" #ifdef EARTHWORM_EXPORT #define DLLIMPEXP __declspec(dllexport) #else #define DLLIMPEXP __declspec(dllimport) #endif #include "AecMInterfaces.h" class DLLIMPEXP AecDbHvacFitting : public AecDbEntityBase, public AecMInterfaces { public: ACRX_DECLARE_MEMBERS(AecDbHvacFitting); protected: static Adesk::UInt32 kCurrentVersionNumber; public: AecDbHvacFitting(void); virtual ~AecDbHvacFitting(void); //设置尺寸 bool SetDuctParam(const AecHvac::DuctParam& data); void GetDuctParam(AecHvac::DuctParam& data) const; //图层和线型 void SetSingleLayer(AcDbObjectId& idLayer); AcDbObjectId GetSingleLayer() const; void SetSingleLineType(AcDbObjectId& idLt); AcDbObjectId GetSingleLineType() const; void SetDoubleLayer(AcDbObjectId& idLayer); AcDbObjectId GetDoubleLayer() const; void SetDoubleLineType(AcDbObjectId& idLt); AcDbObjectId GetDoubleLineType() const; void SetDashLayer(AcDbObjectId& idLayer); AcDbObjectId GetDashLayer() const; void SetCenterLayer(AcDbObjectId& idLayer); AcDbObjectId GetCenterLayer() const; virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* pFiler); virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const; virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler* pFiler); virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler* pFiler) const; virtual Acad::ErrorStatus subExplode(AcDbVoidPtrArray& entitySet) const; virtual void subList() const; virtual Acad::ErrorStatus copyFrom(const AcRxObject* pSrc); virtual Acad::ErrorStatus subTransformBy(const AcGeMatrix3d& xform); #if ARX>16 virtual Acad::ErrorStatus subGetGripPoints( AcDbGripDataPtrArray& grips, const double curViewUnitSize, const int gripSize, const AcGeVector3d& curViewDir, const int bitflags) const; virtual Acad::ErrorStatus subGetStretchPoints(AcGePoint3dArray& stretchPoints) const; virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbVoidPtrArray& appData, const AcGeVector3d& offset, const int bitflags); virtual Acad::ErrorStatus subMoveStretchPointsAt(const AcDbIntArray& indices,const AcGeVector3d& offset); virtual void GetGripText(int nPos, CString& sText); virtual Acad::ErrorStatus subGetOsnapPoints( AcDb::OsnapMode osnapMode, INT_PTR gsSelectionMark, const AcGePoint3d& pickPoint, const AcGePoint3d& lastPoint, const AcGeMatrix3d& viewXform, AcGePoint3dArray& snapPoints, AcDbIntArray& geomIds) const; virtual Acad::ErrorStatus subGetGeomExtents(AcDbExtents& extents) const; virtual Acad::ErrorStatus subIntersectWith( const AcDbEntity* pEnt, AcDb::Intersect intType, AcGePoint3dArray& points, INT_PTR thisGsMarker, INT_PTR otherGsMarker) const; virtual Acad::ErrorStatus subIntersectWith( const AcDbEntity* pEnt, AcDb::Intersect intType, const AcGePlane& projPlane, AcGePoint3dArray& points, INT_PTR thisGsMarker, INT_PTR otherGsMarker) const; #endif //AEC 派生 virtual Acad::ErrorStatus Draw2d(AcGiDraw &dc) const; virtual Acad::ErrorStatus Draw3d(AcGiDraw &dc) const; virtual void AssertWriteEnabled(Adesk::Boolean autoUndo = true, Adesk::Boolean recordModified = true ); //绘制接口 virtual Acad::ErrorStatus DrawInfArrow(AcGiDraw &dc) const; public: //专业数据 和 绘制设置 AecDbObjXDataMap* GetSpecialtyData(AcDb::OpenMode bMode = AcDb::kForWrite); virtual const AecDbObjXDataMap* GetSpecialtyData() const; //接口重载 virtual bool GetInterface(AcArray& arInfs) const; virtual bool GetInterface(int nIndex,AecInterface& inf) const; virtual int GetInterfaceCount() const; virtual int GetActiveInf() const; virtual void SetActiveInf(int nIndex); virtual void LockInf(int nInf); virtual bool TransformAssocInf(int nInf,const AcGeMatrix3d& xform); virtual LPCTSTR GetGripCmd() const; AcGeVector3d normal() const; // 用于管线系统变化后,更新实体 // 主要是 内外线的颜色、线形、线宽、图层 void UpdatePipeSystem(const int &outClr , const AcDbObjectId &outLt , const double &outWd , const AcDbObjectId &outLy , const int &innClr , const AcDbObjectId &innLt , const double &innWd , const AcDbObjectId &innLy); public: virtual void SetActive(bool bActive); virtual bool IsActive() const; virtual void NewGUID(); Acad::ErrorStatus TransformBy(const AcGeMatrix3d xform); //获取二维视图显示的图形 virtual int GetDraw2dables(Adesk::UInt16 nDrawStyle, AcDbVoidPtrArray& arEntPtrs) const; //获取三维显示图形 virtual int GetDraw3dables(AcDbVoidPtrArray& arEntPtrs,bool bWriteBimInfo = false ) const; //剖切提取,符号法,对于管线构件 virtual bool GetSectionDraw(AcGePlane& plan,const AcGeVector3d& vtTo,AcDbVoidPtrArray& arRegionPtrs) const; //剖切提取,范围面剖切Slice切割法,对于土建构件 virtual int GetSectionDraw(const AcGePoint3d& ptFr,const AcGePoint3d& ptTo,const AcGeVector3d& vtViewDir,const AcGeVector3d& vtTo, AcDbVoidPtrArray& arRegionPtrs) const; void DrawInfCap2d(AcGiDraw &dc) const; void DrawInfCap3d(AcGiDraw &dc) const; void DrawSubAxis(AcGiDraw &dc,AcDbEntity* pEnt) const; virtual SHJson::WValue& ToJson(bool bExprotGeo = true) const; virtual bool ByJson(const SHJson::WValue &v); virtual bool GetBimInfoTip(CString& sInfoTip) const; virtual int ComparedTo(AecDbEntityBase* pCurOther) const; bool GetFittingName(CString &sName) const; virtual void ProcessHlrResult(const AcArray &ar , const std::map> &preAr , AcArray &output) const; protected: Adesk::Int16 m_nInfActive; CString m_sGUID; bool m_bActive; //其他按通用图层和线型 //单线图层和线型 AcDbObjectId m_idSingleLayer; AcDbObjectId m_idSingleLnType; //双线图层和线型 AcDbObjectId m_idDoubleLayer; AcDbObjectId m_idDoubleLnType; // AcDbObjectId m_idDashLayer; AcDbObjectId m_idCenterLayer; //专业数据 AecDbObjXDataMap m_mapSpecXData; protected: mutable AcDbVoidPtrArray m_arDrawBuffer3d1; mutable AcDbVoidPtrArray m_arDrawBuffer3d2; public: AecGripData* m_pGripAppData; //夹点 };