#pragma once #include #include "define_class_xdata_key.h" #include "EarThwormDef.h" #include "AecDbObjXDataMap.h" #ifdef EARTHWORM_EXPORT #define DLLIMPEXP __declspec(dllexport) #else #define DLLIMPEXP __declspec(dllimport) #endif class XEquipmentImplBase { public: XEquipmentImplBase(AecDbObjXDataMap *pXData): m_pXDataMap(pXData) {} virtual ~XEquipmentImplBase() {} public: virtual void draw3d(AcDbVoidPtrArray &ar3d) = 0; virtual void draw2d(AcDbVoidPtrArray &ar2d) = 0; virtual void getInterfaces(AcArray &inf); virtual void transformBy(const AcGeMatrix3d& xform); virtual void setElev(const double &dElev); virtual AcGePoint3d getPos(); virtual AcGeVector3d getDir(); virtual XEquipmentImplBase* makeSelf(AecDbObjXDataMap *pXData) = 0; virtual CString getUniqueName() const = 0; virtual bool GetSpec(SH_BIM_BLOCK &spec) { return false; }; virtual bool GetJsonParams(SH_BIM_BLOCK &spec , CString &mainType , CString &subTyp); protected: AecDbObjXDataMap *m_pXDataMap; }; #define DECLARATION_SUBCLASS(class_name)\ public:\ ##class_name(AecDbObjXDataMap *pXData): XEquipmentImplBase(pXData){}\ ~##class_name(){}\ public:\ virtual void draw3d(AcDbVoidPtrArray &ar3d);\ virtual void draw2d(AcDbVoidPtrArray &ar2d);\ virtual XEquipmentImplBase* makeSelf(AecDbObjXDataMap *pXData){return new class_name(pXData);}\ virtual CString getUniqueName() const; #define DEF_KEY_FUNC(key,type)\ static const CString key;\ ##type Get##key() const\ {\ type v;\ m_pXDataMap->GetAt(key, v);\ return v;\ } namespace XGESHAN { class XHG: public XEquipmentImplBase { DECLARATION_SUBCLASS(XHG); DEF_KEY_FUNC(H1, double); DEF_KEY_FUNC(H2, double); DEF_KEY_FUNC(H3, double); DEF_KEY_FUNC(H4, double); DEF_KEY_FUNC(w, double); DEF_KEY_FUNC(a, double); DEF_KEY_FUNC(L1, double); DEF_KEY_FUNC(L2, double); DEF_KEY_FUNC(B, double); DEF_KEY_FUNC(B1, double); DEF_KEY_FUNC(B2, double); DEF_KEY_FUNC(B3, double); DEF_KEY_FUNC(B6, double); DEF_KEY_FUNC(b, double); DEF_KEY_FUNC(Dir, AcGeVector3d); DEF_KEY_FUNC(Pos, AcGePoint3d); virtual bool GetSpec(SH_BIM_BLOCK &spec); }; class SG: public XEquipmentImplBase { DECLARATION_SUBCLASS(SG); DEF_KEY_FUNC(H, double); DEF_KEY_FUNC(H1, double); DEF_KEY_FUNC(H2, double); DEF_KEY_FUNC(H3, double); DEF_KEY_FUNC(H4, double); DEF_KEY_FUNC(a, double); DEF_KEY_FUNC(L1, double); DEF_KEY_FUNC(L, double); DEF_KEY_FUNC(B, double); DEF_KEY_FUNC(B1, double); DEF_KEY_FUNC(B6, double); DEF_KEY_FUNC(b, double); DEF_KEY_FUNC(Dir, AcGeVector3d); DEF_KEY_FUNC(Pos, AcGePoint3d); virtual bool GetSpec(SH_BIM_BLOCK &spec); }; class ZG: public XEquipmentImplBase { DECLARATION_SUBCLASS(ZG); DEF_KEY_FUNC(H1, double); DEF_KEY_FUNC(H2, double); DEF_KEY_FUNC(H3, double); DEF_KEY_FUNC(a, double); DEF_KEY_FUNC(A, double); DEF_KEY_FUNC(B, double); DEF_KEY_FUNC(D, double); DEF_KEY_FUNC(d, double); DEF_KEY_FUNC(L, double); DEF_KEY_FUNC(l, double); DEF_KEY_FUNC(Dir, AcGeVector3d) DEF_KEY_FUNC(Pos, AcGePoint3d) virtual bool GetSpec(SH_BIM_BLOCK &spec); }; class XGC : public XEquipmentImplBase { DECLARATION_SUBCLASS(XGC); virtual bool GetSpec(SH_BIM_BLOCK &spec); }; class XJT : public XEquipmentImplBase { DECLARATION_SUBCLASS(XJT); virtual bool GetSpec(SH_BIM_BLOCK &spec); }; class ZSB : public XEquipmentImplBase { DECLARATION_SUBCLASS(ZSB); DEF_KEY_FUNC(W, double); DEF_KEY_FUNC(B, double); DEF_KEY_FUNC(B2, double); DEF_KEY_FUNC(B3, double); DEF_KEY_FUNC(a, double); DEF_KEY_FUNC(H, double); DEF_KEY_FUNC(L1, double); DEF_KEY_FUNC(Dir, AcGeVector3d) DEF_KEY_FUNC(Pos, AcGePoint3d) virtual bool GetSpec(SH_BIM_BLOCK &spec); }; class BS : public XEquipmentImplBase { DECLARATION_SUBCLASS(BS); DEF_KEY_FUNC(S, double); DEF_KEY_FUNC(B, double); DEF_KEY_FUNC(H, double); DEF_KEY_FUNC(H1, double); DEF_KEY_FUNC(W1, double); DEF_KEY_FUNC(Dir, AcGeVector3d); DEF_KEY_FUNC(Pos, AcGePoint3d); virtual bool GetSpec(SH_BIM_BLOCK &spec); }; class XL : public XEquipmentImplBase { DECLARATION_SUBCLASS(XL); virtual bool GetSpec(SH_BIM_BLOCK &spec); }; } namespace XBAOQIQI { class BaoQiQi: public XEquipmentImplBase { DECLARATION_SUBCLASS(BaoQiQi); DEF_KEY_FUNC(_L1, double); DEF_KEY_FUNC(_PR, double); DEF_KEY_FUNC(_L4, double); DEF_KEY_FUNC(_H3, double); DEF_KEY_FUNC(_Type, int); DEF_KEY_FUNC(_h, double); DEF_KEY_FUNC(_r, double); DEF_KEY_FUNC(Pos, AcGePoint3d) DEF_KEY_FUNC(Dir, AcGeVector3d) virtual bool GetSpec(SH_BIM_BLOCK &spec); }; } namespace FLUME {} namespace WEIR {} namespace XSHASHUIFENLI { class XCS: public XEquipmentImplBase { DECLARATION_SUBCLASS(XCS); virtual bool GetSpec(SH_BIM_BLOCK &spec); }; class HXS: public XEquipmentImplBase { DECLARATION_SUBCLASS(HXS); virtual bool GetSpec(SH_BIM_BLOCK &spec); }; class LCS: public XEquipmentImplBase { DECLARATION_SUBCLASS(LCS); virtual bool GetSpec(SH_BIM_BLOCK &spec); }; } namespace XLUOXUANBENG { class LXB: public XEquipmentImplBase { DECLARATION_SUBCLASS(LXB); virtual bool GetSpec(SH_BIM_BLOCK &spec); }; } namespace XZHAMEN { class RectZhaMen: public XEquipmentImplBase { DECLARATION_SUBCLASS(RectZhaMen); virtual bool GetSpec(SH_BIM_BLOCK &spec); }; class CircleZhaMen: public XEquipmentImplBase { DECLARATION_SUBCLASS(CircleZhaMen); virtual bool GetSpec(SH_BIM_BLOCK &spec); }; class ShengNiFa: public XEquipmentImplBase { DECLARATION_SUBCLASS(ShengNiFa); virtual bool GetSpec(SH_BIM_BLOCK &spec); }; } namespace XGUANIJI { class XZG: public XEquipmentImplBase { DECLARATION_SUBCLASS(XZG); }; class CZG: public XEquipmentImplBase { DECLARATION_SUBCLASS(CZG); }; class ZG: public XEquipmentImplBase { DECLARATION_SUBCLASS(ZG); }; class QG: public XEquipmentImplBase { DECLARATION_SUBCLASS(QG); }; class PJ: public XEquipmentImplBase { DECLARATION_SUBCLASS(PJ); }; class SX: public XEquipmentImplBase { DECLARATION_SUBCLASS(SX); }; class SB: public XEquipmentImplBase { DECLARATION_SUBCLASS(SB); }; class LIANTIAO: public XEquipmentImplBase { DECLARATION_SUBCLASS(LIANTIAO); }; } namespace XNONGSUOJI { class NC: public XEquipmentImplBase { DECLARATION_SUBCLASS(NC); virtual bool GetSpec(SH_BIM_BLOCK &spec); }; class NB: public XEquipmentImplBase { DECLARATION_SUBCLASS(NB); virtual bool GetSpec(SH_BIM_BLOCK &spec); }; } namespace XBAOQIJI { class YHG: public XEquipmentImplBase { DECLARATION_SUBCLASS(YHG); virtual bool GetSpec(SH_BIM_BLOCK &spec); }; class AD: public XEquipmentImplBase { DECLARATION_SUBCLASS(AD); virtual bool GetSpec(SH_BIM_BLOCK &spec); }; } namespace XJIAYAOHUNHE { class GJ: public XEquipmentImplBase { DECLARATION_SUBCLASS(GJ); }; class PJ: public XEquipmentImplBase { DECLARATION_SUBCLASS(PJ); }; class TJ: public XEquipmentImplBase { DECLARATION_SUBCLASS(TJ); }; class LJF: public XEquipmentImplBase { DECLARATION_SUBCLASS(LJF); }; } namespace XLVBUJI { class ZHUANPAN:public XEquipmentImplBase { DECLARATION_SUBCLASS(ZHUANPAN); virtual bool GetSpec(SH_BIM_BLOCK &spec); }; } namespace XQIBIJI { class QS_I_P: public XEquipmentImplBase { DECLARATION_SUBCLASS(QS_I_P); virtual bool GetSpec(SH_BIM_BLOCK &spec); }; class QS_I_Y: public XEquipmentImplBase { DECLARATION_SUBCLASS(QS_I_Y); virtual bool GetSpec(SH_BIM_BLOCK &spec); }; class QS_I_L: public XEquipmentImplBase { DECLARATION_SUBCLASS(QS_I_L); virtual bool GetSpec(SH_BIM_BLOCK &spec); }; class QS_II_L: public XEquipmentImplBase { DECLARATION_SUBCLASS(QS_II_L); virtual bool GetSpec(SH_BIM_BLOCK &spec); }; class QS_II_Y: public XEquipmentImplBase { DECLARATION_SUBCLASS(QS_II_Y); static void drawQBJ(const AcGePoint3d &Pos , const AcGeVector3d &X , const double &H , const double &M , const double &L , AcDbVoidPtrArray &ar3d); virtual bool GetSpec(SH_BIM_BLOCK &spec); }; } namespace XXIEBANGUAN { class XBG : public XEquipmentImplBase { DECLARATION_SUBCLASS(XBG); virtual bool GetSpec(SH_BIM_BLOCK &spec); }; } namespace XGUANXIANG { class GUANXIANG_I : public XEquipmentImplBase { DECLARATION_SUBCLASS(GUANXIANG_I); }; } namespace XXICHENZHAO { class XICHENZHAO_I : public XEquipmentImplBase { DECLARATION_SUBCLASS(XICHENZHAO_I); }; } namespace XGUANDAOGUOLVQI { class DLD_FZ: public XEquipmentImplBase { DECLARATION_SUBCLASS(DLD_FZ); virtual void getInterfaces(AcArray &inf); }; } namespace XQIANCENGSHALV { class DMF_56: public XEquipmentImplBase { DECLARATION_SUBCLASS(DMF_56); virtual void getInterfaces(AcArray &inf); }; } namespace XYIBANXIANGTI { class FANGXINGXIANG: public XEquipmentImplBase { DECLARATION_SUBCLASS(FANGXINGXIANG); virtual void getInterfaces(AcArray &inf); virtual bool GetSpec(SH_BIM_BLOCK &spec); }; } namespace XYIBANGUANTI { class YUANXINGGUAN: public XEquipmentImplBase { DECLARATION_SUBCLASS(YUANXINGGUAN); virtual void getInterfaces(AcArray &inf); virtual bool GetSpec(SH_BIM_BLOCK &spec); }; } namespace XLABAKOU { class YUANXINGLABAKOU: public XEquipmentImplBase { DECLARATION_SUBCLASS(YUANXINGLABAKOU); }; }