#pragma once #include "AecDbEntityBase.h" #include "AecDbObjXDataMap.h" #include "AecDbWall.h" #include "AecDbColumn.h" #include "AecDbBeam.h" #include "define_class_xdata_key.h" #ifdef EARTHWORM_EXPORT #define DLLIMPEXP __declspec(dllexport) #else #define DLLIMPEXP __declspec(dllimport) #endif class DLLIMPEXP AecDbPoolCell : public AecDbEntityBase { public: ACRX_DECLARE_MEMBERS(AecDbPoolCell); protected: static Adesk::UInt32 kCurrentVersionNumber; public: AecDbPoolCell(void); ~AecDbPoolCell(void); 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); virtual Acad::ErrorStatus subGetGripPoints(AcDbGripDataPtrArray& grips, const double curViewUnitSize, const int gripSize, const AcGeVector3d& curViewDir, const int bitflags) const; virtual Acad::ErrorStatus subGetGripPoints( AcGePoint3dArray& gripPoints, AcDbIntArray & osnapModes, AcDbIntArray & geomIds) const; virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbIntArray & indices, const AcGeVector3d& offset); 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; virtual AecDbObjXDataMap* GetSpecialtyData(AcDb::OpenMode bMode = AcDb::kForWrite); virtual const AecDbObjXDataMap* GetSpecialtyData() const; virtual Acad::ErrorStatus Draw2d(AcGiDraw &dc) const; virtual Acad::ErrorStatus Draw3d(AcGiDraw &dc) 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; private: void GetCircle(AcDbCircle &cir) const; void GetText(AcDbText &txt) const; CString GetString() const; void GetPolyline(AcDbPolyline &poly) const; public: CString ToScript() const; void FromScript(LPCTSTR psz); bool IsCircle() const; double GetV() const; // 得到池子四个关键点,圆池一个关键点 // 为保持体积不变,向外扩半个墙厚 void GetKeyPoints(AcGePoint2dArray &ar,const double &dWallT); void GetSimplyPoolCell(AcDbPolyline *pPoly, const double &dWallT); private: //专业数据 AecDbObjXDataMap m_mapSpecXData; DEF_XDATA_KEY_FUN(H, double, _H_); // 高/深 DEF_XDATA_KEY_FUN(W, double, _W_); // 宽 DEF_XDATA_KEY_FUN(L, double, _L_); // 长 DEF_XDATA_KEY_FUN(R, double, _R_); // 半径 DEF_XDATA_KEY_FUN(A, double, _A_); // 插入角度 DEF_XDATA_KEY_FUN(Pt, AcGePoint3d, _PT_); // 插入位置 左上角点 DEF_XDATA_KEY_FUN(TStyle, CString, _TS_); // 文字样式 DEF_XDATA_KEY_FUN(TH, double, _TH_); // 文字高度 DEF_XDATA_KEY_FUN(Name, CString, _NAME_); // 文字高度 };