Files
envi-code/SourceCode/Code2026/Dimension/DbPipeValve.h
T
2026-09-28 15:28:50 +08:00

185 lines
4.8 KiB
C++

#ifndef __DBPIPEVALVE_H
#define __DBPIPEVALVE_H
#include "PipePrototype.h"
#include "attachmentprototype.h"
// 管线上的阀件
class CDbPipeValve: public CDbPipeAttachment
{
public:
ACRX_DECLARE_MEMBERS(CDbPipeValve);
private:
static const Adesk::UInt8 g_nVersion;
public:
CDbPipeValve();
protected:
AcDbHardPointerId m_idBlock2d; // 二维图块
AcDbHardPointerId m_idBlock3d; // 三维图块
XString m_sSysBlock;// 系统图块
BOOL m_bHorizontal; // 是否水平放置,即0度
BOOL m_bFlange;
double m_dWidth; // 附件的宽度值
double m_dScale; // 比例:1.打断比例 2.显示比例
double m_dYScale;
double m_dZScale;
double m_dFlangeDn; // 法兰直径
double m_dFlangeWidth; // 法兰宽度
double m_dSpare; // 保留
Adesk::UInt8 m_nQuadrant; //象限0,1,2,3代表第1~4象限, m_vtLocation为象限的X正方向
public:
AcDbObjectId GetBlock2d() const {
return m_idBlock2d;
}
void SetBlock2d(const AcDbObjectId &id) {
assertWriteEnabled();
m_idBlock2d=id;
}
AcDbObjectId GetBlock3d() const {
return m_idBlock3d;
}
int GetQuadrant() const {
return m_nQuadrant;
}
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;
}
void SetWidth(double dWidth) {
assertWriteEnabled();
m_dWidth = dWidth;
}
void SetSpare(double dSpare) {
assertWriteEnabled();
m_dSpare = dSpare;
}
void SetFlangeDn(double dFlangeDn) {
assertWriteEnabled();
m_dFlangeDn = dFlangeDn;
}
void SetFlangeWidth(double dFlangeWidth) {
assertWriteEnabled();
m_dFlangeWidth = dFlangeWidth;
}
void SetScale(double dScale) {
assertWriteEnabled();
m_dScale = dScale;
}
void SetYScale(double dYScale) {
assertWriteEnabled();
m_dYScale = dYScale;
}
void SetZScale(double dZScale) {
assertWriteEnabled();
m_dZScale = dZScale;
}
void SetHorizontal(BOOL bFlag=TRUE) {
assertWriteEnabled();
m_bHorizontal=bFlag;
}
void SetHasFlange(BOOL bFlag=TRUE) {
assertWriteEnabled();
m_bFlange=bFlag;
}
void SetQuadrant(int nQuadrant) {
assertWriteEnabled();
m_nQuadrant=nQuadrant;
}
// add by dyw 2016.2.29 阀门区分电动非电动
void SetElProperty(Adesk::Boolean bIsElValue)
{
assertWriteEnabled();
EntityFields &fd = Fields();
fd.SFD(_T("PROP_ISELVALUE"), bIsElValue);
}
Adesk::Boolean IsElValue() const
{
const EntityFields &fd = GetFields();
Adesk::Boolean bIsEl = false;
if (!fd.GFD(_T("PROP_ISELVALUE"), bIsEl))
{
bIsEl = false;
}
return bIsEl;
}
public:
// 图块插入比例
AcGeScale3d GetInsertScale() const;
// 取得象限的夹点
XPoint GetQuadrantGrip() const;
public:// Override TDbPipeAttacment
virtual double GetWidth() const;
virtual double GetSpare() const { return m_dSpare; }
virtual double GetScale() const { return m_dScale; }
virtual double GetYScale() const { return m_dYScale; }
virtual double GetZScale() const { return m_dZScale; }
virtual double GetFlangeDn() const { return m_dFlangeDn; }
virtual double GetFlangeWidth() const { return m_dFlangeWidth; }
virtual BOOL IsDrawBlock() const { return TRUE; }
virtual BOOL IsHorizontal() const {
return m_bHorizontal||fabs(ads_angle(XPoint(),m_vtLocation))<=1.0E-3;
}
virtual BOOL HasFlange() const {
return m_bFlange;
}
public:// Override TDbEntity
virtual void CopyPropertiesFrom(AcDbEntity *pSrc, unsigned gMatchFlag);
virtual Acad::ErrorStatus subGetClassID(CLSID* pClsid) const;
virtual Acad::ErrorStatus Draw2d(AcGiDraw &dc) const;
virtual void GetTips(DList<ObjInfoUnit> &) const; //取动态属性显示数据
virtual int GetFirstVersion()const{return 6;}
public:// Override AcDbEntity
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 subTransformBy(const AcGeMatrix3d& xform);
virtual Acad::ErrorStatus subGetGripPoints(AcGePoint3dArray& gripPoints,
AcDbIntArray& osnapModes,
AcDbIntArray& geomIds) const;
virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbIntArray& indices,
const AcGeVector3d& offset);
virtual Acad::ErrorStatus GetGripText(int idx, CString &cs) const;
virtual Acad::ErrorStatus subMoveStretchPointsAt(const AcDbIntArray& indices,
const AcGeVector3d& offset);
virtual Acad::ErrorStatus subGetStretchPoints(AcGePoint3dArray & stretchPoints) const;
private:
Acad::ErrorStatus MoveGSPointsAt(const AcDbIntArray& indices,const AcGeVector3d& offset);
Acad::ErrorStatus _ExplodeOrDraw2d(AcGiDraw &dc,BOOL bZEqual0=TRUE) const;
};
#endif