#ifndef __DBBALCONY_H #define __DBBALCONY_H #include "DbPolyPathEnt.h" #include "dbbandwin.H" #define BF_TOP_SLAB 0x01 //顶板 #define BF_CLOSE 0x02 //封阳台 #define BF_BALCONYCLIPINSU 0x04 //阳台遮挡保温(m_nFlag) // 阳台对象 class TARCH_EXP TDbBalcony: public TDbPolyPathEnt { DECLARE_TENTBASE(); ACRX_DECLARE_MEMBERS(TDbBalcony); private: const static Adesk::UInt8 g_nVersion; protected: XPoly2D m_polyOutline; //平台轮廓和标高 Adesk::UInt32 m_nRailEdge; //无扶手的边 double m_nRailHeight, m_nRailWidth; //扶手高(阳台高)和扶手宽, 扶手宽<0, 则为内轮廓 double m_nSlabThickness, m_nGirderThickness; //TArch6 AcDbHardPointerId m_idLayerGround3d; //三维地面图层 protected: //TArch7 Adesk::UInt32 m_nFlag;//样式 AcDbHardPointerId m_idLayerGlass3d, m_idLayerFrame3d;//玻璃、窗框,obsolete double m_uFrame, m_vFrame; //窗框(竖直)高度和窗框(水平)厚度,obsolete double m_nWinHeight;//窗高,obsolete //TArch8 DList m_lstWallId; //相邻墙 AcDbSoftPointerId m_idHouse;//所属户,sg增加注释,暂时未使用 DList m_lstWinId;//阳台窗 protected: double GetOffsetDist(int idx) const; BOOL Offset(const XPoly2D &src, XPoly2D &dest) const; Acad::ErrorStatus ExplodeOrDraw(XExplodeDraw &dc, BOOL bDraw3d) const; public: TDbBalcony(); ~TDbBalcony(); virtual void UnionScale(double nScale); virtual BOOL IsValid() const; virtual bool IsModelEntity() const{return true;} virtual bool IsMeClip()const{return true;}//可能裁剪散水 virtual bool IsClipMe(const TEntityBase* pEnt=NULL)const; virtual void CopyPropertiesFrom(AcDbEntity *pSrcEntity, unsigned gMatchFlag); // Overriden function from AcDbEntity virtual Acad::ErrorStatus audit(AcDbAuditInfo* pAuditInfo); 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 subTransformBy(const AcGeMatrix3d& xform); virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbIntArray& indices, const AcGeVector3d& offset); virtual Acad::ErrorStatus subMoveStretchPointsAt(const AcDbIntArray& indices, const AcGeVector3d& offset); virtual Acad::ErrorStatus subGetClassID(CLSID* pClsid) const; // drived from TDbEntity virtual Acad::ErrorStatus ExplodeOrDraw3d(XExplodeDraw &dc) const; virtual Acad::ErrorStatus ExplodeOrDraw2d(XExplodeDraw &dc) const; virtual void GetTips(DList &) const; //取动态属性显示数据 virtual Acad::ErrorStatus GetGripText(int i, CString &cs) const; virtual const TCHAR *GetDefaultLayer() const; #if ADS>15 virtual void CreateGrip(); virtual Acad::ErrorStatus EntityToDim(long iGrip,long iDim,const AcDbEntity*pEnt); virtual Acad::ErrorStatus DimToEntity(long iGrip,long iDim,double newValue,const AcGeVector3d& offset); #endif // sg add 100722,支持统一标高 virtual bool UnifyElevation(double dElevation = 0.0); // sg add 101129,支持导出XML virtual CString GetXml(const AcGeMatrix3d& mat) const; //add by xlc on 110217 增加阳台屏蔽保温功能 virtual bool OnExplodeOrDraw(TGGiDrawStreamBase& dc)const; bool IsBalconyClipInsu() const; void SetBalconyClipInsu(BOOL bTrue); AcDbObjectId InitWipeout() const; AcDbEntity* CreateWipeOut() const; void SetupImageInfo(AcDbRasterImage *pAcDbRasterImage) const; AcDbObjectId GetLayerGround3d()const{return m_idLayerGround3d;} int GetEdgeNum() const; BOOL HasGirder() const; BOOL HasRailAt(int idx) const; double GetRailHeight() const; double GetRailWidth() const; double GetElevation() const; double GetSlabThickness() const; double GetGirderThickness() const; const XPoly2D & GetOutline() const; AcDbObjectId GetHouseId()const{return m_idHouse;}//add by fxj 090508 void SetRailHeight(double h); void SetRailWidth(double w); void SetOutline(const XPoly2D &poly); void SetRailAt(int idx, BOOL bHasStep); void SetElevation(double elev); void SetGirderThickness(double val); void SetSlabThickness(double val); void SetLayerGround3d(AcDbObjectId id) { assertWriteEnabled(); m_idLayerGround3d=id; } void SetHouseId(AcDbObjectId id)//add by fxj 090508 { assertWriteEnabled(); m_idHouse=id; } BOOL GetPolyIn(XPoly2D&poly)const; // From TDbPolyPathEnt virtual Acad::ErrorStatus GetPathPoly(XPoly2D &polyPath,AcGeVector3d &normal) const; virtual Acad::ErrorStatus GetBindPath(XPoly2D &polyPath,AcGeVector3d &normal) const; // sg add 110614,设置与阳台相关联的墙体、造型、柱子对象更新 void UpdateClipEntity() const; private: virtual Acad::ErrorStatus SetPathPath(const XPoly2D &polyPath,const AcGeVector3d &normal){return Acad::eNotApplicable;} // Disable calling }; TARCH_IMPEXP int EditBalcony0(AcDbObjectId id); #endif