Files
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

116 lines
2.8 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_);
};