#include "stdafx.h" #include "AecDbBalcony.h" #include "AecDbXDrawPointer.h" Adesk::UInt32 AecDbBalcony::kCurrentVersionNumber = 1; ACRX_DXF_DEFINE_MEMBERS (AecDbBalcony, AecDbEwPipeBase, AcDb::kDHL_CURRENT, AcDb::kMReleaseCurrent, AcDbProxyEntity::kNoOperation | AcDbProxyEntity::kDisableProxyWarning, AEC_DBBALCONY, "AecDbBalcony" "|Product Desc: shanghua earthworm app obj" "|Company: shanghua inc" "|WEB Address: www.shanghuasoft.com") AecDbBalcony::AecDbBalcony(void) { m_mapSpecXData.SetAt(KEY_NAME, _T("阳台")); } AecDbBalcony::~AecDbBalcony(void) { } void AecDbBalcony::SetBalconyData(const BalconyData& data) { AssertWriteEnabled(); m_mapSpecXData.SetAt(KEY_REDGE,data.nRailEdge); m_mapSpecXData.SetAt(KEY_HEIGHT,data.dRailHeight); m_mapSpecXData.SetAt(KEY_Width,data.dRailWidth); m_mapSpecXData.SetAt(KEY_THICKT1,data.dSlabThick); m_mapSpecXData.SetAt(KEY_THICKT2,data.dGirderThick); m_mapSpecXData.SetAt(KEY_OPENING,data.bAddOpening); m_mapSpecXData.SetAt(KEY_HEIGHT,data.duFrame); m_mapSpecXData.SetAt(KEY_HEIGHT1,data.dvFrame); m_mapSpecXData.SetAt(KEY_HEIGHT2,data.dWinHeight); m_mapSpecXData.SetAt(KEY_BOMEL,data.dBomEl); m_mapSpecXData.SetAt(KEY_BEAMH,data.dBeamH); m_mapSpecXData.SetAt(KEY_MATERIAL,data.m_sMaterial); m_mapSpecXData.SetAt(KEY_FACTORY,data.m_sFactory); m_mapSpecXData.SetAt(KEY_NO,data.m_sNo); //截面 SetSection(data.dGirderThick,data.dRailHeight,data.dRailHeight * 0.5,kMid); } void AecDbBalcony::GetBalconyData(BalconyData& data) const { assertReadEnabled(); m_mapSpecXData.GetAt(KEY_REDGE,data.nRailEdge); m_mapSpecXData.GetAt(KEY_HEIGHT,data.dRailHeight); m_mapSpecXData.GetAt(KEY_Width,data.dRailWidth); m_mapSpecXData.GetAt(KEY_THICKT1,data.dSlabThick); m_mapSpecXData.GetAt(KEY_THICKT2,data.dGirderThick); m_mapSpecXData.GetAt(KEY_OPENING,data.bAddOpening); m_mapSpecXData.GetAt(KEY_HEIGHT,data.duFrame); m_mapSpecXData.GetAt(KEY_HEIGHT1,data.dvFrame); m_mapSpecXData.GetAt(KEY_HEIGHT2,data.dWinHeight); m_mapSpecXData.GetAt(KEY_BOMEL,data.dBomEl); m_mapSpecXData.GetAt(KEY_BEAMH,data.dBeamH); m_mapSpecXData.GetAt(KEY_MATERIAL,data.m_sMaterial); m_mapSpecXData.GetAt(KEY_FACTORY,data.m_sFactory); m_mapSpecXData.GetAt(KEY_NO,data.m_sNo); } Acad::ErrorStatus AecDbBalcony::dwgInFields(AcDbDwgFiler* pFiler) { AssertWriteEnabled(); //----- Read parent class information first. Acad::ErrorStatus es = AecDbEwPipeBase::dwgInFields (pFiler) ; if ( es != Acad::eOk ) return (es) ; //----- Object version number needs to be read first Adesk::UInt32 version =0 ; if ( (es =pFiler->readUInt32 (&version)) != Acad::eOk ) return (es) ; if ( version > AecDbBalcony::kCurrentVersionNumber ) return (Acad::eMakeMeProxy); return pFiler->filerStatus(); } Acad::ErrorStatus AecDbBalcony::dwgOutFields(AcDbDwgFiler* pFiler) const { assertReadEnabled(); //----- Save parent class information first. Acad::ErrorStatus es = AecDbEwPipeBase::dwgOutFields (pFiler) ; if ( es != Acad::eOk ) return (es) ; //----- Object version number needs to be saved first if ( (es =pFiler->writeUInt32 (AecDbBalcony::kCurrentVersionNumber)) != Acad::eOk ) return (es) ; return pFiler->filerStatus(); } Acad::ErrorStatus AecDbBalcony::dxfInFields(AcDbDxfFiler* pFiler) { return Acad::eOk; } Acad::ErrorStatus AecDbBalcony::dxfOutFields(AcDbDxfFiler* pFiler) const { return Acad::eOk; } void AecDbBalcony::subList() const { acutPrintf(_T("\n阳台:")); AecDbEwPipeBase::subList(); } Acad::ErrorStatus AecDbBalcony::subTransformBy(const AcGeMatrix3d &xform) { AecDbEwPipeBase::subTransformBy(xform); double dBomEl = 0; m_mapSpecXData.GetAt(KEY_BOMEL, dBomEl); AcGePoint3d pt(0, 0, dBomEl); pt.transformBy(xform); m_mapSpecXData.SetAt(KEY_BOMEL, pt.z); return Acad::eOk; } Acad::ErrorStatus AecDbBalcony::Draw2d(AcGiDraw &dc) const { assertReadEnabled(); if ( dc.IsDragging() ) { //return Acad::eOk; } //图层 AcDbObjectId idLay = dc.GetLayerId(); dc.SetLayer(layerId()); int nCrBk = dc.GetColor(); int nColor = nCrBk; if ( m_mapSpecXData.GetAt(_T("COLOR"),nColor) ) { dc.SetColor(nColor); } if ( Draw2DBuffers(dc)) { dc.SetLayer(idLay); dc.SetColor(nCrBk); return Acad::eOk; } AecDbXDrawPointer aecDbXDraw(this,_T("AecDbBalconyDraw")); aecDbXDraw.Draw2d(dc); AcDbVoidPtrArray arEntPtrs; dc.Get2dBuffer(arEntPtrs); Add2DBuffer(arEntPtrs); dc.SetLayer(idLay); dc.SetColor(nCrBk); return Acad::eOk; } Acad::ErrorStatus AecDbBalcony::Draw3d(AcGiDraw &dc) const { assertReadEnabled(); if ( dc.IsDragging() ) { //return Acad::eOk; } //图层 AcDbObjectId idLay = dc.GetLayerId(); dc.SetLayer(layerId()); int nCrBk = dc.GetColor(); int nColor = nCrBk; if ( m_mapSpecXData.GetAt(_T("COLOR"),nColor) ) { dc.SetColor(nColor); } if ( Draw3DBuffers(dc)) { dc.SetLayer(idLay); dc.SetColor(nCrBk); return Acad::eOk; } AecDbXDrawPointer aecDbXDraw(this,_T("AecDbBalconyDraw")); aecDbXDraw.Draw3d(dc); AcDbVoidPtrArray arEntPtrs; dc.Get3dBuffer(arEntPtrs); Add3DBuffer(arEntPtrs); dc.SetLayer(idLay); dc.SetColor(nCrBk); return Acad::eOk; }