#pragma once /*---------------------------------------------------------------------------------- //AecDbEwFitting :支吊架 //LFY // //---------------------------------------------------------------------------------*/ #include "AecDbEntityBase.h" #include "AecDbObjXDataMap.h" #include "AcDbX3dSolid.h" #include "aecdbewpipebase.h" #include "EarThwormDef.h" #ifdef EARTHWORM_EXPORT #define DLLIMPEXP __declspec(dllexport) #else #define DLLIMPEXP __declspec(dllimport) #endif //支吊架 class DLLIMPEXP AecDbHolder: public AecDbEntityBase { public: ACRX_DECLARE_MEMBERS(AecDbHolder); protected: static Adesk::UInt32 kCurrentVersionNumber; public: AecDbHolder(void); virtual ~AecDbHolder(void); // 设置位置 Acad::ErrorStatus SetPosition(const AcGePoint3d& ptPos,const AcGeVector3d& vtL); AcGePoint3d GetPosition(AcGeVector3d& vtL) const; void SetHolder(const XHolder& holder); bool GetHolder(XHolder& holder) const; //角钢用量长 bool GetASteelLength(ASteel& aSteel) const; public: 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); Acad::ErrorStatus SubAddDimPoints(AcDbGripDataPtrArray& grips,const AcGeVector3d& curViewDir) const; Acad::ErrorStatus AddDimPoints( AcDbGripDataPtrArray& grips,const AcGeVector3d& curViewDir, const AcGePoint3d& ptSta,const AcGePoint3d& ptEnd, const AcGePoint3d& ptMid,int nDimType,double dVal = -1.0,double dt = 0.0) const; #endif //AEC 派生 virtual Acad::ErrorStatus Draw2d(AcGiDraw &dc) const; virtual Acad::ErrorStatus Draw3d(AcGiDraw &dc) const; public: //专业数据 和 绘制设置 AecDbObjXDataMap* GetSpecialtyData(AcDb::OpenMode bMode = AcDb::kForWrite); virtual const AecDbObjXDataMap* GetSpecialtyData() const; virtual int GetSectionDraw(const AcGePoint3d& ptFr,const AcGePoint3d& ptTo,const AcGeVector3d& vtViewDir,const AcGeVector3d& vtTo, AcDbVoidPtrArray& arRegPtrs) const; virtual bool GetBimInfoTip(CString& sInfoTip) const; virtual SHJson::WValue& ToJson(bool bExprotGeo = true) const; virtual CString getUniqueName() const; protected: //创建杆件 0圆杆 1角钢 AcDb3dSolid* Create3dRod(const AcGePoint3d& ptFr,const AcGePoint3d& ptTo,double dL1,double dt,int nShape,double dRegRoate = 0.0) const; protected: //专业数据 AecDbObjXDataMap m_mapSpecXData; public: AecGripData* m_pGripAppData; //夹点 public: // 缓存3D绘制,为toJson使用 mutable std::vector m_solids; mutable std::vector m_pipes; };