116 lines
5.6 KiB
C++
116 lines
5.6 KiB
C++
#pragma once
|
|
#include "AecDbBDPipeBase.h"
|
|
#include "define_class_xdata_key.h"
|
|
|
|
#ifdef EARTHWORM_EXPORT
|
|
#define DLLIMPEXP __declspec(dllexport)
|
|
#else
|
|
#define DLLIMPEXP __declspec(dllimport)
|
|
#endif
|
|
|
|
class DLLIMPEXP AecDbWell: public AecDbBDPipeBase
|
|
{
|
|
public:
|
|
ACRX_DECLARE_MEMBERS(AecDbWell);
|
|
|
|
enum TYPE
|
|
{
|
|
eCircle = 0,
|
|
eRect,
|
|
};
|
|
|
|
protected:
|
|
static Adesk::UInt32 kCurrentVersionNumber;
|
|
|
|
public:
|
|
AecDbWell();
|
|
~AecDbWell();
|
|
|
|
virtual Acad::ErrorStatus subExplode(AcDbVoidPtrArray& entitySet) const;
|
|
virtual void subList() const;
|
|
virtual Acad::ErrorStatus copyFrom(const AcRxObject* pSrc);
|
|
virtual Acad::ErrorStatus subTransformBy(const AcGeMatrix3d& xform);
|
|
|
|
virtual Acad::ErrorStatus Draw2d(AcGiDraw &dc) const;
|
|
virtual Acad::ErrorStatus Draw3d(AcGiDraw &dc) 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 GetGripText(int nPos, CString& sText);
|
|
|
|
virtual Acad::ErrorStatus subGetGripPoints(AcDbGripDataPtrArray& grips,
|
|
const double curViewUnitSize,
|
|
const int gripSize,
|
|
const AcGeVector3d& curViewDir,
|
|
const int bitflags) const;
|
|
|
|
virtual Acad::ErrorStatus subGetGripPoints(AcGePoint3dArray &gripPoints, AcDbIntArray &osnapModes, AcDbIntArray &geomIds) const;
|
|
|
|
virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbIntArray& indices, const AcGeVector3d& offset);
|
|
|
|
virtual SHJson::WValue& ToJson(bool bExprotGeo = true) const;
|
|
virtual bool ByJson(const SHJson::WValue &v);
|
|
|
|
private:
|
|
// 生成井主体截面,路径
|
|
void initWell();
|
|
// 生成井盖
|
|
void addCover();
|
|
|
|
public:
|
|
// 设置基础几何数据
|
|
void SetRectWellData(const AcGePoint3d &ptTop
|
|
, const double &t
|
|
, const double &ct
|
|
, const double &h
|
|
, const double &l
|
|
, const double &w);
|
|
|
|
void SetCircleWellData(const AcGePoint3d &ptTop
|
|
, const double &t
|
|
, const double &ct
|
|
, const double &h
|
|
, const double &d);
|
|
|
|
// 设置与其相连接的管道
|
|
void SetPipes(const std::vector<AcDbObjectId> &ids);
|
|
|
|
void GetPipes(std::vector<AcDbObjectId> &ids);
|
|
public:
|
|
|
|
// 井类型 方、圆
|
|
DEF_XDATA_KEY_FUN(Type, int, _Type_);
|
|
// 井壁厚
|
|
DEF_XDATA_KEY_FUN(Thick, double, _T_);
|
|
// 井深
|
|
DEF_XDATA_KEY_FUN(Height, double, _H_);
|
|
// 井直径
|
|
DEF_XDATA_KEY_FUN(Dia, double, _D_);
|
|
// 井长
|
|
DEF_XDATA_KEY_FUN(L, double, _L_);
|
|
// 井宽
|
|
DEF_XDATA_KEY_FUN(W, double, _W_);
|
|
// 顶位置
|
|
DEF_XDATA_KEY_FUN(TopPt, AcGePoint3d, _TOP_PT_);
|
|
|
|
// 连管数量
|
|
DEF_XDATA_KEY(_pipe_count_);
|
|
|
|
// 连管名称n
|
|
DEF_XDATA_KEY(_pipe_name_);
|
|
|
|
// 井盖厚度
|
|
DEF_XDATA_KEY_FUN(CoverThick, double, _well_cover_thick_);
|
|
|
|
// 井编号
|
|
DEF_XDATA_KEY_FUN(Name, CString, _well_name_);
|
|
|
|
// 是否显示编号
|
|
DEF_XDATA_KEY_FUN(DrawLable, int, _well_draw_lable_);
|
|
};
|
|
|