Files
envi-code/SourceCode/Code2026/tg_shs/inc/TArch/dbBalcony.h
T
2026-09-28 15:28:50 +08:00

142 lines
5.0 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#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<AcDbSoftPointerId> m_lstWallId; //相邻墙
AcDbSoftPointerId m_idHouse;//所属户,sg增加注释,暂时未使用
DList<AcDbSoftPointerId> 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<TObjInfoUnit> &) 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