142 lines
5.0 KiB
C++
142 lines
5.0 KiB
C++
#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 |