109 lines
3.1 KiB
C++
109 lines
3.1 KiB
C++
#ifndef __BAYWINDOW_H
|
|
#define __BAYWINDOW_H
|
|
|
|
|
|
class TARCH_EXP XBayWindow
|
|
{
|
|
public:
|
|
enum XBayWinStyle
|
|
{
|
|
BWS_UNKNOWN=0,
|
|
BWS_TRAPEZIA=1, //梯形
|
|
BWS_TRIANGLE=2, //三角形
|
|
BWS_ARC=3, //拱形
|
|
BWS_RECT=4, //矩形
|
|
};
|
|
|
|
XBayWinStyle m_nStyle;
|
|
double m_nProtrude; //突出宽
|
|
double m_nTrapezia;
|
|
|
|
// wlw add 100721保温线回退的长度
|
|
mutable double m_dInsback;
|
|
|
|
// sg add 120518,增加变量用于控制凸窗2侧窗台板延伸长度
|
|
double m_dBayThick;
|
|
|
|
public:
|
|
XBayWindow(XBayWinStyle nStyle, double nProtrude, double nTrapezia)
|
|
:m_nStyle(nStyle), m_nProtrude(nProtrude), m_nTrapezia(nTrapezia)
|
|
{
|
|
// sg add 120518,凸窗2侧窗台板延伸长度默认为120
|
|
m_dBayThick = 120;
|
|
}
|
|
|
|
// sg modify 110123,根据8.5需求,凸窗的默认样式,改为矩形凸窗
|
|
// XBayWindow(): m_nStyle(BWS_TRAPEZIA), m_nProtrude(600.0), m_nTrapezia(900.0), m_dInsback(120.0)
|
|
XBayWindow(): m_nStyle(BWS_RECT), m_nProtrude(600.0), m_nTrapezia(900.0), m_dInsback(120.0)
|
|
{
|
|
// sg add 120518,凸窗2侧窗台板延伸长度默认为120
|
|
m_dBayThick = 120;
|
|
}
|
|
|
|
XBayWindow(const XBayWindow &src)
|
|
{
|
|
*this = src;
|
|
}
|
|
|
|
XBayWindow & operator= (const XBayWindow &src)
|
|
{
|
|
m_nStyle=src.m_nStyle;
|
|
m_nProtrude = src.m_nProtrude;
|
|
m_nTrapezia = src.m_nTrapezia;
|
|
m_dInsback = src.m_dInsback;
|
|
|
|
// sg add 120518,增加变量用于控制凸窗2侧窗台板延伸长度
|
|
m_dBayThick = src.m_dBayThick;
|
|
return *this;
|
|
}
|
|
|
|
public:
|
|
// sg modify 120518,由于XBayWindow类不是对象,也无法有版本号,直接接收TDbOpening类的版本号,进行对象读写格式的控制
|
|
// Acad::ErrorStatus dwgInFields (AcDbDwgFiler* pFiler)
|
|
Acad::ErrorStatus dwgInFields (AcDbDwgFiler* pFiler, int nVersion)
|
|
{
|
|
Adesk::UInt8 nStyle;
|
|
pFiler->readItem(&nStyle);
|
|
m_nStyle = (XBayWinStyle)nStyle;
|
|
pFiler->readItem(&m_nProtrude);
|
|
pFiler->readItem(&m_nTrapezia);
|
|
|
|
double nTemp;
|
|
pFiler->readItem(&nTemp);
|
|
|
|
// sg add 120518,增加变量用于控制凸窗2侧窗台板延伸长度
|
|
if (nVersion > 4) // 门窗在9.0中,对应的版本号为5
|
|
{
|
|
pFiler->readItem(&m_dBayThick);
|
|
}
|
|
|
|
return pFiler->filerStatus();
|
|
}
|
|
|
|
Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const
|
|
{
|
|
pFiler->writeItem((Adesk::UInt8)m_nStyle);
|
|
pFiler->writeItem(m_nProtrude);
|
|
pFiler->writeItem(m_nTrapezia);
|
|
pFiler->writeItem(0.0);
|
|
|
|
// sg add 120518,增加变量用于控制凸窗2侧窗台板延伸长度
|
|
if (g_nSaveTArchVer > 8)
|
|
{
|
|
pFiler->writeItem(m_dBayThick);
|
|
}
|
|
return pFiler->filerStatus();
|
|
}
|
|
|
|
public:
|
|
//Acad::ErrorStatus GetPolyCurve(XPoint ptLoc, double nExtdir, double nWidth, double nWallThick, BOOL bLeftSlab, BOOL bRightSlab,
|
|
// DList<XPoly2D> &polyCurves, double dWallInsut = 0.0, double dInsutAdd = 0.0) const;
|
|
Acad::ErrorStatus GetPolyCurve(XPoint ptLoc, double nExtdir, double nWidth, double nWallThick, BOOL bLeftSlab, BOOL bRightSlab,
|
|
DList<XPoly2D> &polyCurves, double dWallInsut = 0.0, double dInsutAdd = 0.0, BOOL bAllInsut = FALSE) const;
|
|
Acad::ErrorStatus GetVertSlabPoly(XPoint ptLoc, double nExtdir, double nWidth, double nWallThick,
|
|
double nSlabThick, XPoly2D &polyLeft, XPoly2D&polyRight)const;
|
|
|
|
};
|
|
|
|
#endif
|