#pragma once /*---------------------------------------------------------------------------------- //AecDbBossHolder :支撑 //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 typedef struct XBossHolder { int nType;//0 墩 1 角钢 2 槽钢 //墩 double W;//墩宽或角钢宽 [ 槽钢A double t;//角钢厚度t [ 槽钢D double L;//长 double C;//槽钢c double B;//槽钢b //角钢 int N; double V;//垂直层间距 TCHAR szVs[MAX_PATH];//不等层的间距集合;隔开 double H;//支撑高度 > nLay * V // 材质 TCHAR szMat[MAX_PATH]; // 用途 TCHAR szNo[MAX_PATH]; }XBossHolder; class DLLIMPEXP AecDbBossHolder: public AecDbEntityBase { public: ACRX_DECLARE_MEMBERS(AecDbBossHolder); protected: static Adesk::UInt32 kCurrentVersionNumber; public: AecDbBossHolder(void); ~AecDbBossHolder(void); // 设置位置 Acad::ErrorStatus SetPosition(const AcGePoint3d& ptPos,const AcGeVector3d& vtL); AcGePoint3d GetPosition(AcGeVector3d& vtL) const; void SetHolder(const XBossHolder& bossholder); bool GetHolder(XBossHolder& bossholder) 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; AcDb3dSolid* Create3dRod(const AcGePoint3d &ptFr, const AcGePoint3d &ptTo, double dA, double dB, double dC, double dD, 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; };