#include "stdafx.h" #include "AecDbXApron.h" #include "AecDbXDrawPointer.h" Adesk::UInt32 AecDbXApron::kCurrentVersionNumber = 1; ACRX_DXF_DEFINE_MEMBERS(AecDbXApron, AecDbEwPipeBase, AcDb::kDHL_CURRENT, AcDb::kMReleaseCurrent, AcDbProxyEntity::kNoOperation | AcDbProxyEntity::kDisableProxyWarning, AEC_DBXAPRON, "AecDbXApron" "|Product Desc: shanghua earthworm app obj" "|Company: shanghua inc" "|WEB Address: www.shanghuasoft.com") AecDbXApron::AecDbXApron(void) { m_mapSpecXData.SetAt(KEY_NAME, _T("散水")); m_mapSpecXData.SetAt(KEY_THICKT1, 10.0); m_mapSpecXData.SetAt(KEY_THICK, 20.0); } AecDbXApron::~AecDbXApron(void) { } //板外侧厚 void AecDbXApron::SetOutSideThick(double dt) { AssertWriteEnabled(); m_mapSpecXData.SetAt(KEY_THICKT1, dt); } double AecDbXApron::GetOutSideThick() const { assertReadEnabled(); double dt = 10.0; m_mapSpecXData.GetAt(KEY_THICKT1, dt); return dt; } //板内侧厚 void AecDbXApron::SetInsideThick(double dt) { AssertWriteEnabled(); m_mapSpecXData.SetAt(KEY_THICK, dt); } double AecDbXApron::GetInsideThick() const { assertReadEnabled(); double dt = 20.0; m_mapSpecXData.GetAt(KEY_THICK, dt); return dt; } //段宽度 Acad::ErrorStatus AecDbXApron::SetWidth(int nIndex, double dW) { AssertWriteEnabled(); Acad::ErrorStatus es; AcDbCurve *pCrv = GetNativeCurve(); if (pCrv != NULL) { AcDbPolyline *pPl = AcDbPolyline::cast(pCrv); if (pPl != NULL) { es = pPl->setWidthsAt(nIndex, dW, dW); } } return es; } double AecDbXApron::GetWidth(int nIndex) const { assertReadEnabled(); double dW = 0.0,dW2 = 0.0; Acad::ErrorStatus es; AcDbCurve *pCrv = GetNativeCurve(); if (pCrv != NULL) { AcDbPolyline *pPl = AcDbPolyline::cast(pCrv); if (pPl != NULL) { es = pPl->getWidthsAt(nIndex, dW, dW2); } } return dW; } int AecDbXApron::GetWidthSegCount() const { assertReadEnabled(); int nSegCount = 0; AcDbCurve *pCrv = GetNativeCurve(); if (pCrv != NULL) { AcDbPolyline *pPl = AcDbPolyline::cast(pCrv); if (pPl != NULL) { nSegCount = pPl->numVerts() - 1; } } return nSegCount; } //统一宽度 Acad::ErrorStatus AecDbXApron::SetConstantWidth(double dW) { AssertWriteEnabled(); Acad::ErrorStatus es; AcDbCurve *pCrv = GetNativeCurve(); if (pCrv != NULL) { AcDbPolyline *pPl = AcDbPolyline::cast(pCrv); if (pPl != NULL) { es = pPl->setConstantWidth(dW); } } return es; } void AecDbXApron::SetOffsetFromWall(double dOff) { AssertWriteEnabled(); m_mapSpecXData.SetAt(KEY_OFFSET, dOff); } double AecDbXApron::GetOffsetFromWall() const { assertReadEnabled(); double dOff = 0.0; m_mapSpecXData.GetAt(KEY_OFFSET, dOff); return dOff; } Acad::ErrorStatus AecDbXApron::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 > AecDbXApron::kCurrentVersionNumber) return (Acad::eMakeMeProxy); return pFiler->filerStatus(); } Acad::ErrorStatus AecDbXApron::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(AecDbXApron::kCurrentVersionNumber)) != Acad::eOk) return (es); return pFiler->filerStatus(); } Acad::ErrorStatus AecDbXApron::dxfInFields(AcDbDxfFiler *pFiler) { return Acad::eOk; } Acad::ErrorStatus AecDbXApron::dxfOutFields(AcDbDxfFiler *pFiler) const { return Acad::eOk; } void AecDbXApron::subList() const { assertReadEnabled(); acutPrintf(_T("\n散水")); AecDbEwPipeBase::subList(); for (int i = 0;i < GetWidthSegCount();i++) { acutPrintf(_T("\n分段宽度:%.1f"), GetWidth(i)); } } Acad::ErrorStatus AecDbXApron::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("AecDbXApronDraw")); aecDbXDraw.Draw2d(dc); AcDbVoidPtrArray arEntPtrs; dc.Get2dBuffer(arEntPtrs); Add2DBuffer(arEntPtrs); dc.SetLayer(idLay); dc.SetColor(nCrBk); return Acad::eOk; } Acad::ErrorStatus AecDbXApron::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("AecDbXApronDraw")); aecDbXDraw.Draw3d(dc); AcDbVoidPtrArray arEntPtrs; dc.Get3dBuffer(arEntPtrs); Add3DBuffer(arEntPtrs); dc.SetLayer(idLay); dc.SetColor(nCrBk); return Acad::eOk; }