Files
envi-code/SourceCode/Code2026/tg_shs/inc/TArch/dbBalcony.h
T

142 lines
5.0 KiB
C++
Raw Normal View History

2026-09-28 15:28:50 +08:00
#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