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

142 lines
5.2 KiB
C++
Raw Normal View History

2026-10-04 00:04:20 +08:00
#ifndef __DBBALCONY_H
2026-09-28 15:28:50 +08:00
#define __DBBALCONY_H
#include "DbPolyPathEnt.h"
#include "dbbandwin.H"
2026-10-04 00:04:20 +08:00
#define BF_TOP_SLAB 0x01 //顶板
#define BF_CLOSE 0x02 //封阳台
2026-09-28 15:28:50 +08:00
2026-10-04 00:04:20 +08:00
#define BF_BALCONYCLIPINSU 0x04 //阳台遮挡保温(m_nFlag)
// 阳台对象
2026-09-28 15:28:50 +08:00
class TARCH_EXP TDbBalcony: public TDbPolyPathEnt
{
DECLARE_TENTBASE();
ACRX_DECLARE_MEMBERS(TDbBalcony);
private:
const static Adesk::UInt8 g_nVersion;
protected:
2026-10-04 00:04:20 +08:00
XPoly2D m_polyOutline; //平台轮廓和标高
Adesk::UInt32 m_nRailEdge; //无扶手的边
double m_nRailHeight, m_nRailWidth; //扶手高(阳台高)和扶手宽, 扶手宽<0, 则为内轮廓
2026-09-28 15:28:50 +08:00
double m_nSlabThickness, m_nGirderThickness;
//TArch6
2026-10-04 00:04:20 +08:00
AcDbHardPointerId m_idLayerGround3d; //三维地面图层
2026-09-28 15:28:50 +08:00
protected:
//TArch7
2026-10-04 00:04:20 +08:00
Adesk::UInt32 m_nFlag;//样式
AcDbHardPointerId m_idLayerGlass3d, m_idLayerFrame3d;//玻璃、窗框,obsolete
double m_uFrame, m_vFrame; //窗框(竖直)高度和窗框(水平)厚度,obsolete
double m_nWinHeight;//窗高,obsolete
2026-09-28 15:28:50 +08:00
//TArch8
2026-10-04 00:04:20 +08:00
DList<AcDbSoftPointerId> m_lstWallId; //相邻墙
AcDbSoftPointerId m_idHouse;//所属户,sg增加注释,暂时未使用
DList<AcDbSoftPointerId> m_lstWinId;//阳台窗
2026-09-28 15:28:50 +08:00
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;}
2026-10-04 00:04:20 +08:00
virtual bool IsMeClip()const{return true;}//可能裁剪散水
2026-09-28 15:28:50 +08:00
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;
2026-10-04 00:04:20 +08:00
virtual void GetTips(DList<TObjInfoUnit> &) const; //取动态属性显示数据
2026-09-28 15:28:50 +08:00
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
2026-10-04 00:04:20 +08:00
// sg add 100722,支持统一标高
2026-09-28 15:28:50 +08:00
virtual bool UnifyElevation(double dElevation = 0.0);
2026-10-04 00:04:20 +08:00
// sg add 101129,支持导出XML
2026-09-28 15:28:50 +08:00
virtual CString GetXml(const AcGeMatrix3d& mat) const;
2026-10-04 00:04:20 +08:00
//add by xlc on 110217 增加阳台屏蔽保温功能
2026-09-28 15:28:50 +08:00
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;
2026-10-04 00:04:20 +08:00
// sg add 110614,设置与阳台相关联的墙体、造型、柱子对象更新
2026-09-28 15:28:50 +08:00
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