Files
envi-code/SourceCode/Code2026/inc/implement/AecDbXEquipment.h
T

278 lines
6.6 KiB
C++
Raw Normal View History

2026-10-04 00:04:20 +08:00
#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;
};