#pragma once /*---------------------------------------------------------------------------------- //AecDbEcFitting :桥架 弯头,三通,四通 Fitting类 // //通过 基本体 进行基本体的拼接 //---------------------------------------------------------------------------------*/ #include "AecDbEntityBase.h" #include "AecDbObjXDataMap.h" #include "AecComplexCurveDraw.h" #include "AecDbX3dPart.h" #ifdef EARTHWORM_EXPORT #define DLLIMPEXP __declspec(dllexport) #else #define DLLIMPEXP __declspec(dllimport) #endif #include "AecMInterfaces.h" class DLLIMPEXP AecDbEcFitting : public AecDbEntityBase, public AecMInterfaces { public: ACRX_DECLARE_MEMBERS(AecDbEcFitting); protected: static Adesk::UInt32 kCurrentVersionNumber; public: AecDbEcFitting(void); virtual ~AecDbEcFitting(void); //设置尺寸 bool SetDuctParam(const AecHvac::DuctParam& data); void GetDuctParam(AecHvac::DuctParam& data) const; //提取电缆沟信息 bool GetDlgData(DlgData &data, BOOL bIsMajOrMin = TRUE) const; //左右侧支吊架 bool SetXHolder(EAlign kPos, XHolder &xH); bool GetXHolder(EAlign kPos, XHolder &xH) 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 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; Acad::ErrorStatus DrawBridge2D(AcGiDraw &dc) const; Acad::ErrorStatus DrawTrech2D(AcGiDraw &dc) const; Acad::ErrorStatus DrawBridge3D(AcGiDraw &dc) const; Acad::ErrorStatus DrawTrech3D(AcGiDraw &dc) const; bool GetDlgRegionData(DlgData &data, AcArray &arRegEl) const; virtual void AssertWriteEnabled(Adesk::Boolean autoUndo = true, Adesk::Boolean recordModified = true ); 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); public: virtual void SetActive(bool bActive); virtual bool IsActive() const; virtual void NewGUID(); //桥架的放置法向量 AcGeVector3d GetNormal() const; 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; LPCTSTR GetGripCmd() const; virtual SHJson::WValue& ToJson(bool bExprotGeo = true) const; virtual bool ByJson(const SHJson::WValue &v); virtual bool GetBimInfoTip(CString& sInfoTip) const; virtual bool SendUserData(struct resbuf *pRb); virtual int ComparedTo(AecDbEntityBase* pCurOther) const; bool GetFittingName(CString &sName) const; protected: Acad::ErrorStatus DrawElbow2d(AcGiDraw &dc) const; Acad::ErrorStatus DrawTrElbow2d(AcGiDraw &dc) const; Acad::ErrorStatus DrawTee2d(AcGiDraw &dc) const; Acad::ErrorStatus DrawTrTee2d(AcGiDraw &dc) const; Acad::ErrorStatus DrawCross2d(AcGiDraw &dc) const; Acad::ErrorStatus DrawTrCross2d(AcGiDraw &dc) const; Acad::ErrorStatus DrawReduce2d(AcGiDraw &dc) const; Acad::ErrorStatus DrawTrReduce2d(AcGiDraw &dc) const; Acad::ErrorStatus DrawOffset2d(AcGiDraw &dc) const; Acad::ErrorStatus DrawTrOffset2d(AcGiDraw &dc) const; Acad::ErrorStatus DrawElbow3d(AcGiDraw &dc) const; Acad::ErrorStatus DrawTrElbow3d(AcGiDraw &dc) const; Acad::ErrorStatus DrawTee3d(AcGiDraw &dc) const; Acad::ErrorStatus DrawTrTee3d(AcGiDraw &dc) const; Acad::ErrorStatus DrawCross3d(AcGiDraw &dc) const; Acad::ErrorStatus DrawTrCross3d(AcGiDraw &dc) const; Acad::ErrorStatus DrawReduce3d(AcGiDraw &dc) const; Acad::ErrorStatus DrawTrReduce3d(AcGiDraw &dc) const; Acad::ErrorStatus DrawOffset3d(AcGiDraw &dc) const; Acad::ErrorStatus DrawTrOffset3d(AcGiDraw &dc) const; //ELBOW //内斜线外直角 Acad::ErrorStatus DrawIncline2d(AcGiDraw &dc) const; Acad::ErrorStatus DrawIncline3d(AcGiDraw &dc) const; //沟 Acad::ErrorStatus DrawTrIncline2d(AcGiDraw &dc) const; Acad::ErrorStatus DrawTrIncline3d(AcGiDraw &dc) const; //TEE Acad::ErrorStatus DrawIncline2Tee2d(AcGiDraw &dc) const; Acad::ErrorStatus DrawIncline2Tee2d0(AcGiDraw &dc) const; Acad::ErrorStatus DrawIncline2Tee2d3(AcGiDraw &dc) const; Acad::ErrorStatus DrawIncline2Tee2d5(AcGiDraw &dc) const; Acad::ErrorStatus DrawIncline2Tee3d(AcGiDraw &dc) const; Acad::ErrorStatus DrawIncline2Tee3d0(AcGiDraw &dc) const; Acad::ErrorStatus DrawIncline2Tee3d3(AcGiDraw &dc) const; Acad::ErrorStatus DrawIncline2Tee3d5(AcGiDraw &dc) const; //沟 Acad::ErrorStatus DrawTrIncline2Tee2d(AcGiDraw &dc) const; Acad::ErrorStatus DrawTrIncline2Tee3d(AcGiDraw &dc) const; //Cross Acad::ErrorStatus DrawInterCross2d(AcGiDraw &dc) const; Acad::ErrorStatus DrawInterCross3d(AcGiDraw &dc) const; //沟 Acad::ErrorStatus DrawTrInterCross2d(AcGiDraw &dc) const; Acad::ErrorStatus DrawTrInterCross3d(AcGiDraw &dc) const; void DrawInfCircle(AcGiDraw &dc,AcDbArc* pArcElbow,double dR,int nStyle) const; Acad::ErrorStatus DrawUserInf(AcGiDraw &dc) const; Acad::ErrorStatus DrawUserInf3d(AcGiDraw &dc) const; Acad::ErrorStatus BoolSubtractUserInf3d(AecDbX3dPart &part) const; Acad::ErrorStatus ShowUsedFill(AcGiDraw &dc) const; public: //用户接口 void AddUserInterface(const AecUserInterface &inf); bool RemoveUserInterface(const TCHAR *pszNo); bool RemoveUserInterface(int nIndex); int GetUserInterfaceCount() const; bool GetUserInterface(int nIndex, AecUserInterface &inf) const; bool GetUserInterface(const AcGePoint3d &ptHit, AecUserInterface &inf) const; virtual void ProcessHlrResult(const AcArray &ar , const std::map> &preAr , AcArray &output) const; protected: bool ReadUserInterface(AcDbDwgFiler *pFiler); void WriteUserInterface(AcDbDwgFiler *pFiler) const; protected: Adesk::Int16 m_nInfActive; CString m_sGUID; bool m_bActive; //新版本 AcArray< AecUserInterface> m_arUserInfs; //用户自定义接口带管长 //其他按通用图层和线型 //单线图层和线型 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; //夹点 };