279 lines
13 KiB
C++
279 lines
13 KiB
C++
#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<AcDbEntity *> &ar
|
||
, const std::map<AcDbEntity *, AcArray<AcDbEntity *>> &preAr
|
||
, AcArray<AcDbEntity *> &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<std::pair<CString, CString>> &spec);
|
||
bool GetJsonParams(std::vector<std::pair<CString, CString>> &spec);
|
||
virtual bool GetProperties(SimpleProperty::PropertySetByIndex &porpertys) const;
|
||
virtual bool SetProperties(SimpleProperty::PropertySetByName &porpertys);
|
||
|
||
private:
|
||
XEquipmentImplBase *m_pImpl;
|
||
|
||
protected:
|
||
AcArray<AecInterface> m_interfaces;
|
||
};
|