Files
envi-code/SourceCode/Code2026/CoreLibrary/ParamEquImpl.h
T
2026-09-28 15:28:50 +08:00

301 lines
5.5 KiB
C++

#pragma once
#include <vector>
#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);
};
}