#pragma once #include #include "define_class_xdata_key.h" #include "AecDbObjXDataMap.h" #ifdef EARTHWORM_EXPORT #define DLLIMPEXP __declspec(dllexport) #else #define DLLIMPEXP __declspec(dllimport) #endif class CParamEquImplBase { public: CParamEquImplBase(AecDbObjXDataMap *pXData): m_pXDataMap(pXData){} virtual ~CParamEquImplBase(){} public: virtual void draw3d(AcDbVoidPtrArray &ar3d) = 0; virtual void draw2d(AcDbVoidPtrArray &ar2d) = 0; virtual void transformBy(const AcGeMatrix3d& xform); virtual void setElev(const double &dElev); virtual AcGePoint3d getPos(); virtual AcGeVector3d getDir(); virtual CParamEquImplBase* makeSelf(AecDbObjXDataMap *pXData) = 0; protected: AecDbObjXDataMap *m_pXDataMap; }; #define DECLARATION_SUBCLASS(class_name)\ public:\ ##class_name(AecDbObjXDataMap *pXData): CParamEquImplBase(pXData){}\ ~##class_name(){}\ public:\ virtual void draw3d(AcDbVoidPtrArray &ar3d);\ virtual void draw2d(AcDbVoidPtrArray &ar2d);\ virtual CParamEquImplBase* makeSelf(AecDbObjXDataMap *pXData){return new class_name(pXData);} #define DEF_KEY_FUNC(key,type)\ static const CString key;\ ##type Get##key() const\ {\ type v;\ m_pXDataMap->GetAt(key, v);\ return v;\ } namespace GESHAN { class XHG: public CParamEquImplBase { 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) }; class SG : public CParamEquImplBase { 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) }; class ZG : public CParamEquImplBase { 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) }; } namespace BAOQIQI { class BaoQiQi : public CParamEquImplBase { DECLARATION_SUBCLASS(BaoQiQi); DEF_KEY_FUNC(_L1, 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) }; } namespace FLUME { } namespace WEIR { } namespace SHASHUIFENLI { class XCS : public CParamEquImplBase { DECLARATION_SUBCLASS(XCS); }; class HXS : public CParamEquImplBase { DECLARATION_SUBCLASS(HXS); }; class LCS : public CParamEquImplBase { DECLARATION_SUBCLASS(LCS); }; } namespace LUOXUANBENG { class LXB : public CParamEquImplBase { DECLARATION_SUBCLASS(LXB); }; } namespace ZHAMEN { class RectZhaMen : public CParamEquImplBase { DECLARATION_SUBCLASS(RectZhaMen); }; class CircleZhaMen : public CParamEquImplBase { DECLARATION_SUBCLASS(CircleZhaMen); }; class ShengNiFa : public CParamEquImplBase { DECLARATION_SUBCLASS(ShengNiFa); }; } namespace GUANIJI { class XZG : public CParamEquImplBase { DECLARATION_SUBCLASS(XZG); }; class CZG : public CParamEquImplBase { DECLARATION_SUBCLASS(CZG); }; class ZG : public CParamEquImplBase { DECLARATION_SUBCLASS(ZG); }; class QG : public CParamEquImplBase { DECLARATION_SUBCLASS(QG); }; class PJ : public CParamEquImplBase { DECLARATION_SUBCLASS(PJ); }; class SX : public CParamEquImplBase { DECLARATION_SUBCLASS(SX); }; class SB : public CParamEquImplBase { DECLARATION_SUBCLASS(SB); }; class LIANTIAO : public CParamEquImplBase { DECLARATION_SUBCLASS(LIANTIAO); }; } namespace NONGSUOJI { class NC : public CParamEquImplBase { DECLARATION_SUBCLASS(NC); }; class NB : public CParamEquImplBase { DECLARATION_SUBCLASS(NB); }; } namespace BAOQIJI { class YHG : public CParamEquImplBase { DECLARATION_SUBCLASS(YHG); }; class AD : public CParamEquImplBase { DECLARATION_SUBCLASS(AD); }; } namespace JIAYAOHUNHE { class GJ : public CParamEquImplBase { DECLARATION_SUBCLASS(GJ); }; class PJ : public CParamEquImplBase { DECLARATION_SUBCLASS(PJ); }; class TJ : public CParamEquImplBase { DECLARATION_SUBCLASS(TJ); }; class LJF : public CParamEquImplBase { DECLARATION_SUBCLASS(LJF); }; } namespace LVBUJI { class ZHUANPAN :public CParamEquImplBase { DECLARATION_SUBCLASS(ZHUANPAN); }; } namespace QIBIJI { class QS_I_P : public CParamEquImplBase { DECLARATION_SUBCLASS(QS_I_P); }; class QS_I_Y : public CParamEquImplBase { DECLARATION_SUBCLASS(QS_I_Y); }; class QS_I_L : public CParamEquImplBase { DECLARATION_SUBCLASS(QS_I_L); }; class QS_II_L : public CParamEquImplBase { DECLARATION_SUBCLASS(QS_II_L); }; class QS_II_Y : public CParamEquImplBase { 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); }; }