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

222 lines
6.8 KiB
C++

#pragma once
#include "nodePrototype.h"
enum EquipType
{
eCommon = -1, // 普通设备
eHydrant = 0, // 消火栓
eSprinkler = 1, // 喷头
eWell = 2, // 井
ePump = 3, // 水泵
eGully = 4, // 雨水口
eSizeJoint = 5, // 大小接头
};
// 设备
class CDbEquipment : public CDbPipeNode
{
public:
ACRX_DECLARE_MEMBERS(CDbEquipment);
private:
static const Adesk::UInt8 g_nVersion;
public:
CDbEquipment();
protected:
AcDbHardPointerId m_idBlock2d;// 二维图块
AcDbHardPointerId m_idBlock3d;// 三维图块
Adesk::UInt8 m_nMirror; // 图块镜像
XVector3D m_vtDirection; // 设备方向
XPoint m_ptLocation; // 设备基点
XPoint m_ptInsert; // 图块的基点
XString m_sSysBlock; // 系统图块, 如果是检查井,这里存放井编号
double m_dScale; // 图块显示比例
double m_dPipeLength; // 设备上未生成立管的长度,仅存储该值, 如果是检查井,这里存放井底标高
double m_dDang; // 当量值, 如果是检查井,这里存放井地面标高
BOOL m_bHidePipe; // 是否遮挡管线
double m_dCircleRadius;// 如果是圆设备,记录圆半径,遮挡管线用
double m_dYScale;
double m_dZScale;
double m_dSpare; // 保留
BOOL m_bAutoScale; // 8.0数据,例如消火栓不需要随图纸比例放大缩小
public:
void SetDang(double dDang) {
assertWriteEnabled();
m_dDang = dDang;
}
double GetDang() const {
return m_dDang;
}
void SetInsert(XPoint pt) {
assertWriteEnabled();
m_ptInsert = pt;
}
const XPoint & GetInsert() const {
return m_ptInsert;
}
void SetHidePipe(BOOL bFlag = TRUE) {
assertWriteEnabled();
m_bHidePipe = bFlag;
}
void SetAutoScale(BOOL bFlag = TRUE) {
assertWriteEnabled();
m_bAutoScale = bFlag;
}
void SetScale(double dScale = 1.0) {
assertWriteEnabled();
m_dScale = dScale;
}
double GetScale() const {
return m_dScale;
}
void SetLocation(const XPoint &pt) {
assertWriteEnabled();
if (!m_ptLocation && !m_ptInsert)
m_ptInsert = pt;
m_ptLocation = pt;
}
AcDbObjectId GetBlock2d() const {
return m_idBlock2d;
}
void SetBlock2d(const AcDbObjectId &id) {
assertWriteEnabled();
m_idBlock2d = id;
}
AcDbObjectId GetBlock3d() const {
return m_idBlock3d;
}
void SetBlock3d(const AcDbObjectId &id) {
assertWriteEnabled();
m_idBlock3d = id;
}
const TCHAR* GetSysBlock() const {
return (const TCHAR*)m_sSysBlock;
}
void SetSysBlock(const TCHAR *szLab) {
assertWriteEnabled();
m_sSysBlock = szLab;
}
XVector3D GetDirection() const {
return m_vtDirection;
}
double GetAngle() const {
return ads_angle(XPoint(), m_vtDirection);
}
void SetDirection(const XVector3D &vt) {
assertWriteEnabled();
m_vtDirection = vt;
}
void SetAngle(double dAngle) {
SetDirection(XVector3D(cos(dAngle), sin(dAngle), 0));
}
double GetPipeLength() const {
return m_dPipeLength;
}
void SetPipeLength(double dLen) {
assertWriteEnabled();
m_dPipeLength = dLen;
}
void SetYScale(double dYScale) {
assertWriteEnabled();
m_dYScale = dYScale;
}
void SetZScale(double dZScale) {
assertWriteEnabled();
m_dZScale = dZScale;
}
void SetSpare(double dSpare) {
assertWriteEnabled();
m_dSpare = dSpare;
}
double GetSpare() const { return m_dSpare; }
double GetYScale() const { return m_dYScale; }
double GetZScale() const { return m_dZScale; }
// 设备(图块)X、Y轴的镜像,X轴方向为m_vtDirection方向
void MirrorByX(BOOL bFlag = TRUE);
void MirrorByY(BOOL bFlag = TRUE);
BOOL IsMirrorByX() const {
return (m_nMirror & MIRROR_XAXIS) != 0;
}
BOOL IsMirrorByY() const {
return (m_nMirror & MIRROR_YAXIS) != 0;
}
BOOL IsAutoScale() const { return m_bAutoScale; }
// cet 2011.01.28 add
BOOL IsSprinkler() const;
// cet 2011.01.28 add
BOOL IsHydrant() const;
// cet 2014.12.2 add 设备类型(包含设备派生的子类)
// 避免以父类的方式打开时无法区分类型 -1 普通设备
// 0 消火栓 1 喷头 2 井 3 水泵 4 雨水口
// 5 大小接头
void SetEquipmentType(int nType);
void SetEquipmentType(EquipType nType);
int GetEquipmentType() const;
public:
// 图块插入比例
AcGeScale3d GetInsertScale() const;
public: // Override TDbPipeNode
virtual XPoint GetLocation() const { return m_ptLocation; }
// 判断节点是否遮挡管线
virtual BOOL IsHidePipe() const { return m_bHidePipe; }
// 节点的宽度
virtual double GetWidth(const CDbPipePrototype* pPipe = NULL) const;
// 对st类型的接口进行重新连接
virtual void UpdateLinkage(const XPoint &ptAt, TPipeSys::SysType st,
const DList<AcDbObjectId> &idPipes);
// 判断节点是否可以连接管段. nPos: 0--start; 1--end
virtual BOOL CanLinkSide(const AcDbObjectId &idPipe, int nPos) const;
virtual BOOL IsDrawBlock() const { return TRUE; }
public: // Override TDbEntity
virtual void CopyPropertiesFrom(AcDbEntity *pSrc, unsigned gMatchFlag);
//virtual Acad::ErrorStatus subGetClassID(CLSID* pClsid) const;
virtual Acad::ErrorStatus GetGripText(int idx, CString &cs) const;
virtual Acad::ErrorStatus Draw2d(AcGiDraw &dc) const;
virtual Acad::ErrorStatus Draw3d(AcGiDraw &dc) const;
virtual void GetTips(DList<ObjInfoUnit> &) const; //取动态属性显示数据
virtual Acad::ErrorStatus GetExtents(XPoint &ptLow, XPoint &ptUp) const;
virtual int GetFirstVersion()const { return 6; }
// 2008-2-27 add
virtual bool IsMeClip()const
{
// if(IsHidePipe()) // 2009.7.21 sr 关闭裁剪,速度很慢
// return true;
// else
return false;
}//ok, 是否去裁剪
virtual Acad::ErrorStatus GetClipBoundary(XPoly2D &poly)const;
public: // Override AcDbEntity
Acad::ErrorStatus subGetOsnapPoints(AcDb::OsnapMode osnapMode,
INT_PTR gsSelectionMark,
const AcGePoint3d& ptPick,
const AcGePoint3d& lastPoint,
const AcGeMatrix3d& viewXform,
AcGePoint3dArray& snapPoints,
AcDbIntArray& geomIds) const;
virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler*);
virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler*) const;
virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler*);
virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler*) const;
virtual Acad::ErrorStatus subGetGripPoints(AcGePoint3dArray& gripPoints,
AcDbIntArray& osnapModes,
AcDbIntArray& geomIds) const;
virtual Acad::ErrorStatus subGetStretchPoints(AcGePoint3dArray & stretchPoints) const;
virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbIntArray& indices,
const AcGeVector3d& offset);
virtual Acad::ErrorStatus subMoveStretchPointsAt(const AcDbIntArray& indices,
const AcGeVector3d& offset);
virtual Acad::ErrorStatus subTransformBy(const AcGeMatrix3d& xform);
private:
Acad::ErrorStatus MoveGSPointsAt(const AcDbIntArray& indices, const AcGeVector3d& offset);
Acad::ErrorStatus _ExplodeOrDraw2d(AcGiDraw &dc, BOOL bZEqual0 = TRUE) const;
BOOL IsUpLinkHydrant() const; // cet 2011.12.29 add
Acad::ErrorStatus ExplodeOrDrawPipe3d(AcGiDraw &dc) const; // cet 2011.12.29 add
};