diff --git a/SourceCode/Code2026/CoreLibrary/AecDbEwFitting.cpp b/SourceCode/Code2026/CoreLibrary/AecDbEwFitting.cpp index bcc00a7..908bae9 100644 --- a/SourceCode/Code2026/CoreLibrary/AecDbEwFitting.cpp +++ b/SourceCode/Code2026/CoreLibrary/AecDbEwFitting.cpp @@ -650,6 +650,59 @@ Acad::ErrorStatus AecDbEwFitting::dwgInFields(AcDbDwgFiler* pFiler) pFiler->readSoftPointerId((AcDbSoftPointerId*)&m_idDashLayer); pFiler->readSoftPointerId((AcDbSoftPointerId*)&m_idCenterLayer); } + + + CString sSys; + if (m_mapSpecXData.GetAt(PIPE_SYS, sSys)) + { + + int clr; + AcDbObjectId idLy, idLt; + double dw; + + int nvt; + if (!m_mapSpecXData.HasKey(PIPE_COLOR, nvt)) + { + clr = CoreTools::getColorByPipeSys(sSys, true); + m_mapSpecXData.SetAt(PIPE_COLOR, clr); + } + if (!m_mapSpecXData.HasKey(PIPE_LINETYPE, nvt)) + { + idLt = CoreTools::getLtByPipeSys(sSys, true); + m_mapSpecXData.SetAt(PIPE_LINETYPE, idLt); + } + if (!m_mapSpecXData.HasKey(PIPE_LINELAYER, nvt)) + { + idLy = CoreTools::getLyByPipeSys(sSys, true); + m_mapSpecXData.SetAt(PIPE_LINELAYER, idLy); + } + if (!m_mapSpecXData.HasKey(PIPE_LINEWIDTH, nvt)) + { + dw = CoreTools::getLwByPipeSys(sSys, true); + m_mapSpecXData.SetAt(PIPE_LINEWIDTH, dw); + } + if (!m_mapSpecXData.HasKey(PIPE_COLOR_OUT, nvt)) + { + clr = CoreTools::getColorByPipeSys(sSys, false); + m_mapSpecXData.SetAt(PIPE_COLOR_OUT, clr); + } + if (!m_mapSpecXData.HasKey(PIPE_LINETYPE_OUT, nvt)) + { + idLt = CoreTools::getLtByPipeSys(sSys, false); + m_mapSpecXData.SetAt(PIPE_LINETYPE_OUT, idLt); + } + if (!m_mapSpecXData.HasKey(PIPE_LINELAYER_OUT, nvt)) + { + idLy = CoreTools::getLyByPipeSys(sSys, false); + m_mapSpecXData.SetAt(PIPE_LINELAYER_OUT, idLy); + } + if (!m_mapSpecXData.HasKey(PIPE_LINEWIDTH_OUT, nvt)) + { + dw = CoreTools::getLwByPipeSys(sSys, true); + m_mapSpecXData.SetAt(PIPE_LINEWIDTH_OUT, dw); + } + } + return (pFiler->filerStatus()); } diff --git a/SourceCode/Code2026/CoreLibrary/AecDbEwPipe.cpp b/SourceCode/Code2026/CoreLibrary/AecDbEwPipe.cpp index 6cfd7c9..43b9000 100644 --- a/SourceCode/Code2026/CoreLibrary/AecDbEwPipe.cpp +++ b/SourceCode/Code2026/CoreLibrary/AecDbEwPipe.cpp @@ -987,23 +987,73 @@ void AecDbEwPipe::SetLayerByXDataMap() m_mapSpecXData.SetAt(PIPE_COLOR, nColor); } -Acad::ErrorStatus AecDbEwPipe::dwgInFields(AcDbDwgFiler* pFiler) +Acad::ErrorStatus AecDbEwPipe::dwgInFields(AcDbDwgFiler *pFiler) { assertWriteEnabled(); //----- Read parent class information first. - Acad::ErrorStatus es = AecDbEwPipeBase::dwgInFields (pFiler) ; - if ( es != Acad::eOk ) - return (es) ; + 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) ; + Adesk::UInt32 version = 0; + if ((es = pFiler->readUInt32(&version)) != Acad::eOk) + return (es); - if ( version > AecDbEwPipe::kCurrentVersionNumber ) + if (version > AecDbEwPipe::kCurrentVersionNumber) return (Acad::eMakeMeProxy); + CString sSys; + if (m_mapSpecXData.GetAt(PIPE_SYS, sSys)) + { + + int clr; + AcDbObjectId idLy, idLt; + double dw; + + int nvt; + if (!m_mapSpecXData.HasKey(PIPE_COLOR, nvt)) + { + clr = CoreTools::getColorByPipeSys(sSys, true); + m_mapSpecXData.SetAt(PIPE_COLOR, clr); + } + if (!m_mapSpecXData.HasKey(PIPE_LINETYPE, nvt)) + { + idLt = CoreTools::getLtByPipeSys(sSys, true); + m_mapSpecXData.SetAt(PIPE_LINETYPE, idLt); + } + if (!m_mapSpecXData.HasKey(PIPE_LINELAYER, nvt)) + { + idLy = CoreTools::getLyByPipeSys(sSys, true); + m_mapSpecXData.SetAt(PIPE_LINELAYER, idLy); + } + if (!m_mapSpecXData.HasKey(PIPE_LINEWIDTH, nvt)) + { + dw = CoreTools::getLwByPipeSys(sSys, true); + m_mapSpecXData.SetAt(PIPE_LINEWIDTH, dw); + } + if (!m_mapSpecXData.HasKey(PIPE_COLOR_OUT, nvt)) + { + clr = CoreTools::getColorByPipeSys(sSys, false); + m_mapSpecXData.SetAt(PIPE_COLOR_OUT, clr); + } + if (!m_mapSpecXData.HasKey(PIPE_LINETYPE_OUT, nvt)) + { + idLt = CoreTools::getLtByPipeSys(sSys, false); + m_mapSpecXData.SetAt(PIPE_LINETYPE_OUT, idLt); + } + if (!m_mapSpecXData.HasKey(PIPE_LINELAYER_OUT, nvt)) + { + idLy = CoreTools::getLyByPipeSys(sSys, false); + m_mapSpecXData.SetAt(PIPE_LINELAYER_OUT, idLy); + } + if (!m_mapSpecXData.HasKey(PIPE_LINEWIDTH_OUT, nvt)) + { + dw = CoreTools::getLwByPipeSys(sSys, true); + m_mapSpecXData.SetAt(PIPE_LINEWIDTH_OUT, dw); + } + } return pFiler->filerStatus(); } @@ -3625,7 +3675,7 @@ Acad::ErrorStatus AecDbEwPipe::Draw3d(AcGiDraw &dc) const } } - + deleteArrayVoidPtrs(ar); } return Acad::eOk; diff --git a/SourceCode/Code2026/CoreLibrary/AecDbEwPipeBase.cpp b/SourceCode/Code2026/CoreLibrary/AecDbEwPipeBase.cpp index 9620505..d0e4578 100644 --- a/SourceCode/Code2026/CoreLibrary/AecDbEwPipeBase.cpp +++ b/SourceCode/Code2026/CoreLibrary/AecDbEwPipeBase.cpp @@ -4101,7 +4101,12 @@ Acad::ErrorStatus AecDbEwPipeBase::Draw3d(AcGiDraw &dc) const { //虚函数 AcDbObjectId idLy = CoreTools::getLyForPipe(sys); - int clr = CoreTools::getColorByPipeSys(sys, !CoreTools::IsUsePipeOutClrFor3DRender()); + + int clr(256); + GetAt(PIPE_COLOR, clr); + // + //clr = CoreTools::getColorByPipeSys(sys, !CoreTools::IsUsePipeOutClrFor3DRender()); + dc.SetColor(clr); dc.SetLayer(idLy); }