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

105 lines
4.4 KiB
C++

#ifndef _DB_BAND_WIN_H
#define _DB_BAND_WIN_H
#include "DbCornerWin.h"
#ifndef _TDBWALL_H_
#include "TDbWall.h"
#endif
//带形窗
class TARCH_EXP TDbBandWin:public TDbCornerWin
{
DECLARE_TENTBASE();
ACRX_DECLARE_MEMBERS(TDbBandWin);
private:
const static Adesk::UInt8 g_nVersion;
protected:
//TArch7数据
DList<AcDbSoftPointerId> m_idMidWalls;//中间墙
AcGePoint3d m_ptStart,m_ptEnd;//起点和终点
//导出参数
XPoly2D m_polyFirst;//墙中路径
XPoly2D m_polyFirstBase;//墙基线路径
public:
TDbBandWin();
void SetMidWallIds(const DList<AcDbObjectId>&idWalls);
void SetStartPoint(XPoint pt){assertWriteEnabled();m_ptStart=pt;}//ok
void SetEndPoint(XPoint pt){assertWriteEnabled();m_ptEnd=pt;}//ok
double GetWidth()const{return m_polyFirstBase.Distance2d();}//ok
XPoly2D GetPolyBase()const{return m_polyFirstBase;}//ok
TDbOpening* GetOpening(long iWall)const;
// sg add 120511,获取带形窗的形心线长度,含保温
double GetGeomCenterWidth() const;
//override TDbCornerWin
virtual const TCHAR* GetKindString()const{return _T("带形窗");}//ok
virtual long GetWallNum()const{return 2+m_idMidWalls.Length();}//ok
virtual AcDbObjectId GetWallId(long i)const;
virtual void SetWallId(long i,const AcDbObjectId&id);
virtual BOOL GetKeyCurves(XPoly2D &polyInside, XPoly2D &polyGlass1, XPoly2D &polyGlass2, XPoly2D &polyOutSide) const;
virtual TDbOpening *AsOpening(const TDbWall *pWall) const{return GetOpening(FindWallId(pWall->objectId()));}//ok
virtual BOOL UpdateParameters();
virtual void ValidateContainership(DList<AcDbObjectId> &lstWalls);
// sg add 101115,根据8.5需求调整默认标注位置,返回默认标注墙ID编号
virtual long GetDefaultLabelWallNum() const;
// sg add 110224,增加自动编号
virtual CString GetAutoLabel(bool &bAddNum)const;
// sg add 101129,支持导出XML
virtual CString GetXml(const AcGeMatrix3d& mat) const;
// Override from AcDbEntity
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 subGetOsnapPoints(
AcDb::OsnapMode osnapMode,
INT_PTR gsSelectionMark,
const AcGePoint3d& ptPick,
const AcGePoint3d& lastPoint,
const AcGeMatrix3d& viewXform,
AcGePoint3dArray& snapPoints,
AcDbIntArray& geomIds) const
{return TDbEntity::GetOsnapPoints(osnapMode,gsSelectionMark,ptPick,lastPoint,viewXform,snapPoints,geomIds);}
virtual Acad::ErrorStatus subGetGripPoints(AcGePoint3dArray& gripPoints,
AcDbIntArray& osnapModes,
AcDbIntArray& geomIds) const;
virtual Acad::ErrorStatus subGetStretchPoints(AcGePoint3dArray & stretchPoints) const;
virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbIntArray& indices,
const AcGeVector3d& offset);
virtual Acad::ErrorStatus subMoveStretchPointsAt(const AcDbIntArray& indices,
const AcGeVector3d& offset);
virtual Acad::ErrorStatus subTransformBy(const AcGeMatrix3d&xform);
// Override form TEntityBase
virtual void CopyPropertiesFrom(AcDbEntity *pSrcEntity, unsigned gMatchFlag);
virtual int GetFirstVersion()const{return 7;}//ok
virtual Acad::ErrorStatus DownGradeSave(int nDrawMode, AcDbVoidPtrArray &entSet, BOOL *bErase)
{return TDbEntity::DownGradeSave(nDrawMode,entSet,bErase);}//ok
virtual void GetTips(DList<TObjInfoUnit> &) const; //取动态属性显示数据
virtual Acad::ErrorStatus GetGripText(int i, CString &cs) const;
virtual Acad::ErrorStatus ExplodeOrDraw2d(XExplodeDraw&dc)const;
virtual BOOL IsValid()const;
virtual Acad::ErrorStatus GetPathPoly(XPoly2D&poly,AcGeVector3d &vt)const
{assertReadEnabled();poly=m_polyFirst;vt=AcGeVector3d::kZAxis;return Acad::eOk;}//ok
#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
// add by gjm 三维剖切
virtual bool GetSection(const AcDbFace &face, const AcGeVector3d& vtPlaneSecDir,
std::vector<TObjSectionRecord> &sectionRecords,
AcDbVoidPtrArray& arFillPtrs) const;
};
#endif