#pragma once /*---------------------------------------------------------------------------------- //AecDbXEquipment : 参数化设备 // // //---------------------------------------------------------------------------------*/ #include "AecDbObjXDataMap.h" #include "AecDbBDPipeBase.h" #include "define_class_xdata_key.h" #include "AecMInterfaces.h" #include "EarThwormDef.h" #ifdef EARTHWORM_EXPORT #define DLLIMPEXP __declspec(dllexport) #else #define DLLIMPEXP __declspec(dllimport) #endif class XEquipmentImplBase; class DLLIMPEXP AecDbXEquipment: public AecDbBDPipeBase { public: ACRX_DECLARE_MEMBERS(AecDbXEquipment); // 为罐体上的管嘴 public: struct TANK_NOZZ { int nType; // 0 圆形 1方形 double dX; // 俯视X长度 double dY; // 俯视Y长度 double dH; // 管嘴高度 double dAngle; // 管嘴方向(与XOY面) double dDNX; // 管公称直径,方管时为长 double dDNY; // 方管时为高,其它情况无效 double dFlDN; // 法兰公称直径 double dFlT; // 法兰厚度 int nRectDir; // 方形罐体管嘴的方向 TCHAR pszName[512]; // 管嘴名称 }; public: // 格栅 DECLARE_ENUM(GESHAN) XHG_I = 0, XHG_II, SG, BLQ, ZG_I, ZG_II, XGC, XJT, ZSB, BS, XL, END_ENUM() // 爆气器 DECLARE_ENUM(BAOQIQI) PAN_SI = GESHAN::XL + 1, GUAN_SI, END_ENUM() // 水槽 DECLARE_ENUM(FLUME) PARSHALL = BAOQIQI::GUAN_SI + 1, END_ENUM() // 堰 DECLARE_ENUM(WEIR) SANJIAOYAN = FLUME::PARSHALL + 1, CULIUKONGYAN, BAOBIYAN, END_ENUM() // 沉沙池-砂水分离 DECLARE_ENUM(SHASHUIFENLI) XCS = WEIR::BAOBIYAN + 1, HXS, LCS, END_ENUM() // 螺旋泵 DECLARE_ENUM(LUOXUANBENG) LXB = SHASHUIFENLI::LCS + 1, END_ENUM() // 闸门 DECLARE_ENUM(ZHAMEN) RECT_ZHAMEN = LUOXUANBENG::LXB + 1, CIRCLE_ZHAMEN, SHENG_NI_FA, END_ENUM() // 刮泥机 DECLARE_ENUM(GUANIJI) XZG = ZHAMEN::SHENG_NI_FA + 1, CZG, ZG, QG, PJ, SX, SB, LIANTIAO, END_ENUM() // 浓缩机 DECLARE_ENUM(NONGSUOJI) NC = GUANIJI::LIANTIAO + 1, NB, END_ENUM() // 爆气机 DECLARE_ENUM(BAOQIJI) YHG = NONGSUOJI::NB + 1, AD, END_ENUM() // 加药混合 DECLARE_ENUM(JIAYAOHUNHE) GJ = BAOQIJI::AD + 1, PJ, TJ, LJF, END_ENUM() // 滤布机 DECLARE_ENUM(LVBUJI) ZHUANPAN = JIAYAOHUNHE::LJF + 1, END_ENUM() // 启闭机 DECLARE_ENUM(QIBIJI) QS_I_P = LVBUJI::ZHUANPAN + 1, QS_I_Y, QS_I_L, QS_II_L, QS_II_Y, END_ENUM() // 斜板管 DECLARE_ENUM(XIEBANGUAN) XBG = QIBIJI::QS_II_Y + 1, END_ENUM() // 罐箱 DECLARE_ENUM(GUANXIANG) GUANXIANG_I = XIEBANGUAN::XBG + 1, END_ENUM() // 管道过滤器 DECLARE_ENUM(GUANDAOGUOLVQI) DLD_FZ = GUANXIANG::GUANXIANG_I + 1, END_ENUM() // 浅层砂率 DECLARE_ENUM(QIANCENGSHALV) DMF_56 = GUANDAOGUOLVQI::DLD_FZ + 1, END_ENUM() // 一般罐体 DECLARE_ENUM(YIBANGUANTI) YUANXINGGUAN = QIANCENGSHALV::DMF_56 + 1, END_ENUM() DECLARE_ENUM(YIBANXIANGTI) FANGXINGXIANG = YIBANGUANTI::YUANXINGGUAN + 1, END_ENUM() DECLARE_ENUM(LABAKOU) YUANXINGLABAKOU = YIBANXIANGTI::FANGXINGXIANG + 1, END_ENUM() DECLARE_ENUM(CHANSHUDIBAN) YUANXINGDIBAN = LABAKOU::YUANXINGLABAKOU + 1, END_ENUM() protected: static Adesk::UInt32 kCurrentVersionNumber; public: AecDbXEquipment(const int &type); AecDbXEquipment(): m_pImpl(NULL) {} ~AecDbXEquipment(void); void SetType(int nType); int GetType() 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 subList() const; virtual Acad::ErrorStatus copyFrom(const AcRxObject* pSrc); Acad::ErrorStatus copyFrom2(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 subMoveGripPointsAt(const AcDbVoidPtrArray &appData, const AcGeVector3d &offset, const int bitflags); virtual Acad::ErrorStatus subGetStretchPoints(AcGePoint3dArray& stretchPoints) const; virtual Acad::ErrorStatus subMoveStretchPointsAt(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; //AEC 派生 virtual Acad::ErrorStatus Draw2d(AcGiDraw &dc) const; virtual Acad::ErrorStatus Draw3d(AcGiDraw &dc) const; virtual SHJson::WValue& ToJson(bool bExprotGeo = true) const; virtual bool ByJson(const SHJson::WValue &v); virtual bool GetBimInfoTip(CString& sInfoTip) const; virtual CString getUniqueName() const; virtual int GetDraw2dables(Adesk::UInt16 nDrawStyle, AcDbVoidPtrArray& arEntPtrs) const; virtual void ProcessHlrResult(const AcArray &ar , const std::map> &preAr , AcArray &output) const; //接口 MINTERFACES_METHODS public: virtual const AecDbObjXDataMap* GetSpecialtyData() const; virtual AecDbObjXDataMap* GetSpecialtyData(AcDb::OpenMode bMode); virtual int GetSectionDraw(const AcGePoint3d& ptFr, const AcGePoint3d& ptTo, const AcGeVector3d& vtViewDir, const AcGeVector3d& vtTo, AcDbVoidPtrArray& arRegPtrs) const; void draw3dByImp(); static bool isType(AcDbObjectId &id, const int &type); static bool isType(AecDbXEquipment *pEqu, const int &type); public: void clearInterface(); void SetPosAndDir(const AcGePoint3d &pt, const AcGeVector3d &dir); void GetInsert(AcGePoint3d& ptIns, AcGeVector3d& vtDir) const; void SetElev(const double &dElev); double GetElev(); bool GetSrcString(CString &src) const ; void SetSrcString(LPCTSTR src); XEquipmentImplBase* cloneImpl(AecDbObjXDataMap *pXData); XEquipmentImplBase* createParamEquImpl(const int &type, bool bRedraw); CString GetSpec(); bool GetSpec(std::vector> &spec); bool GetJsonParams(std::vector> &spec); virtual bool GetProperties(SimpleProperty::PropertySetByIndex &porpertys) const; virtual bool SetProperties(SimpleProperty::PropertySetByName &porpertys); private: XEquipmentImplBase *m_pImpl; protected: AcArray m_interfaces; };