#pragma once #include #include "AecDbEwPipeBase.h" #include "define_class_xdata_key.h" #ifdef EARTHWORM_EXPORT #define DLLIMPEXP __declspec(dllexport) #else #define DLLIMPEXP __declspec(dllimport) #endif // 一般槽式结构 // 侧面三角堰式,侧面孔式 class DLLIMPEXP AecDbSludgePipe: public AecDbEwPipeBase { public: ACRX_DECLARE_MEMBERS(AecDbSludgePipe); protected: static Adesk::UInt32 kCurrentVersionNumber; public: AecDbSludgePipe(); ~AecDbSludgePipe(); 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 AcDbVoidPtrArray& appData , const AcGeVector3d& offset , const int bitflags); 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 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; virtual void GetGripText(int nPos, CString& sText); private: AcDbRegion* MakeSection() const; public: void InitPipeBase(); void AppendAngle(const double &a); public: DEF_XDATA_KEY_FUN(Inner,double,_INNER_D_); // 内径 DEF_XDATA_KEY_FUN(Outer,double,_OUTER_D_); // 外径 DEF_XDATA_KEY_FUN(HoldD,double,_HOLD_D_); // 孔径 DEF_XDATA_KEY_FUN(Spacing,double,_SPACING_);// 孔距 DEF_XDATA_KEY_FUN(HeadSpa,double,_HEAD_SPACING_);// 头部空隙 DEF_XDATA_KEY_FUN(TailSpa,double,_TAIL_SPACING_);// 尾部空隙 // 保存一系列不相同的圆心角度,代表截面上开孔位置 std::set m_angles; };