#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 &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 &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