#include "stdafx.h" #include "AecDbXStep.h" #include "AecDbXDrawPointer.h" Adesk::UInt32 AecDbXStep::kCurrentVersionNumber = 1; ACRX_DXF_DEFINE_MEMBERS(AecDbXStep, AecDbBaseStair, AcDb::kDHL_CURRENT, AcDb::kMReleaseCurrent, AcDbProxyEntity::kNoOperation | AcDbProxyEntity::kDisableProxyWarning, AEC_DBXSTEP, "AecDbXStep" "|Product Desc: shanghua earthworm app obj" "|Company: shanghua inc" "|WEB Address: www.shanghuasoft.com") AecDbXStep::AecDbXStep(void) { m_mapSpecXData.SetAt(KEY_NAME, _T("台阶")); } AecDbXStep::~AecDbXStep(void) { } void AecDbXStep::SetXStepData(const XStepData &data) { AssertWriteEnabled(); m_mapSpecXData.SetAt(KEY_W, data.dW); m_mapSpecXData.SetAt(KEY_STEEPW, data.dSteepW); m_mapSpecXData.SetAt(KEY_STEEPH, data.dSteepH); m_mapSpecXData.SetAt(KEY_SSTEEPS, data.nSteepS); m_mapSpecXData.SetAt(KEY_EL, data.dBaseEl); m_mapSpecXData.SetAt(KEY_W2, data.dBaseW); m_mapSpecXData.SetAt(KEY_OFFSETDIR, data.nBaseA); m_mapSpecXData.SetAt(KEY_BSHAPE, data.nStpStyle); m_mapSpecXData.SetAt(KEY_UPGRADE, data.nStrStyle); //仅仅占位 SetSection(data.dSteepW, data.dSteepH); } void AecDbXStep::GetXStepData(XStepData &data) const { assertReadEnabled(); m_mapSpecXData.GetAt(KEY_W, data.dW); m_mapSpecXData.GetAt(KEY_STEEPW, data.dSteepW); m_mapSpecXData.GetAt(KEY_STEEPH, data.dSteepH); m_mapSpecXData.GetAt(KEY_SSTEEPS, data.nSteepS); m_mapSpecXData.GetAt(KEY_EL, data.dBaseEl); m_mapSpecXData.GetAt(KEY_W2, data.dBaseW); m_mapSpecXData.GetAt(KEY_OFFSETDIR, data.nBaseA); m_mapSpecXData.GetAt(KEY_BSHAPE, data.nStpStyle); m_mapSpecXData.GetAt(KEY_UPGRADE, data.nStrStyle); } Acad::ErrorStatus AecDbXStep::dwgInFields(AcDbDwgFiler *pFiler) { AssertWriteEnabled(); //----- Read parent class information first. Acad::ErrorStatus es = AecDbBaseStair::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 > AecDbXStep::kCurrentVersionNumber) return (Acad::eMakeMeProxy); return pFiler->filerStatus(); } Acad::ErrorStatus AecDbXStep::dwgOutFields(AcDbDwgFiler *pFiler) const { assertReadEnabled(); //----- Save parent class information first. Acad::ErrorStatus es = AecDbBaseStair::dwgOutFields(pFiler); if (es != Acad::eOk) return (es); //----- Object version number needs to be saved first if ((es = pFiler->writeUInt32(AecDbXStep::kCurrentVersionNumber)) != Acad::eOk) return (es); return pFiler->filerStatus(); } Acad::ErrorStatus AecDbXStep::dxfInFields(AcDbDxfFiler *pFiler) { return Acad::eOk; } Acad::ErrorStatus AecDbXStep::dxfOutFields(AcDbDxfFiler *pFiler) const { return Acad::eOk; } void AecDbXStep::subList() const { assertReadEnabled(); acutPrintf(_T("\n台阶")); AecDbBaseStair::subList(); } Acad::ErrorStatus AecDbXStep::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("AecDbXStepDraw")); aecDbXDraw.Draw2d(dc); AcDbVoidPtrArray arEntPtrs; dc.Get2dBuffer(arEntPtrs); Add2DBuffer(arEntPtrs); dc.SetLayer(idLay); dc.SetColor(nCrBk); return Acad::eOk; } Acad::ErrorStatus AecDbXStep::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("AecDbXStepDraw")); aecDbXDraw.Draw3d(dc); AcDbVoidPtrArray arEntPtrs; dc.Get3dBuffer(arEntPtrs); Add3DBuffer(arEntPtrs); dc.SetLayer(idLay); dc.SetColor(nCrBk); return Acad::eOk; }