#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 typedef struct XHanger // 吊架 { // 吊杆数 1,2,3... int nHs; // 行数 int N; // 吊杆直径 double dD; // 是否角钢吊杆 BOOL bdDAsW; // 行间距(m) double V; // 支架臂长度(mm) double L; // 角钢宽度(mm) double W; // 角钢厚度(mm) double t; // 材质 TCHAR szMat[33]; // 用途 TCHAR szUsage[33]; //预留 double dResv[6]; int nResv[6]; TCHAR szResv[MAX_PATH]; }XHanger; //支吊架 class DLLIMPEXP AecDbHanger: public AecDbEntityBase { public: ACRX_DECLARE_MEMBERS(AecDbHanger); protected: static Adesk::UInt32 kCurrentVersionNumber; public: AecDbHanger(void); virtual ~AecDbHanger(void); // 设置位置 Acad::ErrorStatus SetPosition(const AcGePoint3d& ptPos,const AcGeVector3d& vtL); AcGePoint3d GetPosition(AcGeVector3d& vtL) const; void SetHanger(const XHanger& data); bool GetHanger(XHanger& data) const; //角钢用量长 bool GetASteelLength(ASteel& aSteel) 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); 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; };