#pragma once #include "HDbEquipment.h" class CDbPool : public CHDbEquipment { public: ACRX_DECLARE_MEMBERS(CDbPool); public: CDbPool(); virtual ~CDbPool(); //长度 void SetPoolLength(double dLen, BOOL bApply = TRUE); //宽度 void SetPoolWidth(double dWidth, BOOL bApply = TRUE); //高度 void SetPoolHeight(double dHeight, BOOL bApply = TRUE); //顶板标高 void SetTopBanEle(double dEle); //底板标高 void SetBottomBanEle(double dEle); //地面标高 void SetGroundEle(double dEle); void SetSpare(double dSpare) { assertWriteEnabled(); m_dSpare=dSpare; } //设备属性 double GetPoolLength(); double GetPoolWidth(); double GetPoolHeight(); //标高属性 double GetTopBanEle(); double GetBottomBanEle(); double GetGroundEle(); double GetSpare() const { return m_dSpare; } // cet 2016.11.3 add 池名称 CString GetName(bool *pRet = NULL) const; void SetName(const CString &sName); //更新接口关系 void UpdataPipeInterface(); public: //virtual Acad::ErrorStatus subGetClassID(CLSID* pClsid) 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 subTransformBy(const AcGeMatrix3d& xform); 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 Draw2d(AcGiDraw &dc) const; Acad::ErrorStatus Draw3d(AcGiDraw &dc) const; virtual int GetFirstVersion()const{return 8;} // 对st类型的接口进行重新连接 virtual void UpdateLinkage(const XPoint &ptAt, TPipeSys::SysType st, const DList &idPipes); virtual BOOL CanLinkSide(const AcDbObjectId &idPipe, int nPos) const; AcGeScale3d GetInsert2dScale() const; Acad::ErrorStatus GetGripText(int idx, CString &cs) const; virtual Acad::ErrorStatus subClose();//zxl 2013.07.23 add // zxl 2013.07.23 add 池子大小或位置变化时,调整池子标注位置 void ModifyPoolDimPos(const CPipeInterface iFace); // cet 2018.2.7 add 支持双击文字编辑 virtual SubText* HitTestText(XPoint pt)const; virtual void SetSubText(long i, CString sText); private: void SetSize(double x, double y, double z, BOOL bApply = TRUE ); Acad::ErrorStatus DrawLabelText(AcGiDraw &dc) const; //更新管子位置 void UpdatePipes(const AcDbObjectIdArray &arIds); //得到炸碎的实体 void GetExplodeCurves(const AcDbObjectId &id,AcArray > &arCurves) const; void GetExplodeCurves(AcDbEntity *pEnt,AcArray > &arCurves) const; //判断是否连接 BOOL CheckIsConnect(const XPoint &pt,const AcArray > &arSegs,const XLine &line,XPoint &ptCon) const; //得到空闲的接口序号 int GetFreeInterfaceIndex() const; //是否找到接口 bool FindInterfaceByPt(const AcGePoint3d &pt); private: Acad::ErrorStatus MoveGSPointsAt(const AcDbIntArray& indices, const AcGeVector3d& offset); const static Adesk::UInt8 g_nVersion; //版本控制 double m_dTopBanEle; //顶板标高 double m_dBottomBanEle; //底板标高 double m_dGroundEle; //地面标高 XString m_sSpare; // 备用 double m_dSpare; // 备用 跌落高差 sr 2009-4-19 Adesk::UInt16 m_nSpare; // 备用 bool m_bIsModify; // 是否更新管底标注位置 zxl 2013.09.29 add };