185 lines
4.9 KiB
C++
185 lines
4.9 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|