rafactor-pipe,fitting-speedup #86

Closed
home-laptop wants to merge 1 commits from home-laptop/rafactor-pipe,fitting-speedup AGit into main
pull from: home-laptop/rafactor-pipe,fitting-speedup
3 changed files with 142 additions and 10 deletions

No files matched your search

@@ -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());
}
@@ -64,6 +64,30 @@ static void FreeBuffer(int n,AcDbVoidPtrArray& arEntPtrs)
}
}
void setPipeSysInfoToEnt( const bool &bCenter
, AecDbObjXDataMap &xData
, const int &clr
, const double &dw
, const AcDbObjectId &idLy
, const AcDbObjectId &idLt)
{
BOOL bRel(FALSE);
if (bCenter)
{
xData.SetAt(PIPE_COLOR, clr);
xData.SetAt(PIPE_LINETYPE, idLt);
xData.SetAt(PIPE_LINEWIDTH, dw);
xData.SetAt(PIPE_LINELAYER, idLy);
}
else
{
xData.SetAt(PIPE_COLOR_OUT, clr);
xData.SetAt(PIPE_LINETYPE_OUT, idLt);
xData.SetAt(PIPE_LINEWIDTH_OUT, dw);
xData.SetAt(PIPE_LINELAYER_OUT, idLy);
}
}
bool getPipeSysInfoByEnt(const bool &bCenter
, const AecDbObjXDataMap &xData
, int &clr
@@ -987,23 +1011,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 +3699,7 @@ Acad::ErrorStatus AecDbEwPipe::Draw3d(AcGiDraw &dc) const
}
}
deleteArrayVoidPtrs<AcDbEntity>(ar);
}
return Acad::eOk;
@@ -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);
}