#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 &) 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