refactor-i_aecdbxequipment-copyfrom #84
@@ -245,15 +245,6 @@ Acad::ErrorStatus AecDbXEquipment::copyFrom(const AcRxObject* pSrc)
|
|||||||
AssertWriteEnabled();
|
AssertWriteEnabled();
|
||||||
AecDbXEquipment *pSrcEqu = AecDbXEquipment::cast(pSrc);
|
AecDbXEquipment *pSrcEqu = AecDbXEquipment::cast(pSrc);
|
||||||
if (!pSrcEqu) return Acad::eInvalidInput;
|
if (!pSrcEqu) return Acad::eInvalidInput;
|
||||||
|
|
||||||
// 基类链通过 CopyObject(dwgOut -> dwgIn) 深拷参数,dwgInFields 内会重建 m_pImpl
|
|
||||||
Acad::ErrorStatus es = AecDbBDPipeBase::copyFrom(pSrc);
|
|
||||||
if (es != Acad::eOk) return es;
|
|
||||||
|
|
||||||
if (!m_pImpl)
|
|
||||||
m_pImpl = createParamEquImpl(GetType(), false);
|
|
||||||
|
|
||||||
// 放在重建之后:工厂里的 getInterfaces 可能覆盖读进来的管嘴
|
|
||||||
m_interfaces = pSrcEqu->m_interfaces;
|
m_interfaces = pSrcEqu->m_interfaces;
|
||||||
return Acad::eOk;
|
return Acad::eOk;
|
||||||
}
|
}
|
||||||
@@ -268,10 +259,11 @@ Acad::ErrorStatus AecDbXEquipment::copyFrom2(const AcRxObject* pSrc)
|
|||||||
|
|
||||||
// 先克隆成功再替换:cloneImpl 在源对象没有 impl 时返回 NULL
|
// 先克隆成功再替换:cloneImpl 在源对象没有 impl 时返回 NULL
|
||||||
XEquipmentImplBase *pNewImpl = pSrcEqu->cloneImpl(&m_mapSpecXData);
|
XEquipmentImplBase *pNewImpl = pSrcEqu->cloneImpl(&m_mapSpecXData);
|
||||||
DELETE_PTR(m_pImpl);
|
if (pNewImpl)
|
||||||
m_pImpl = pNewImpl;
|
{
|
||||||
if (!m_pImpl)
|
DELETE_PTR(m_pImpl);
|
||||||
m_pImpl = createParamEquImpl(GetType(), false);
|
m_pImpl = pNewImpl;
|
||||||
|
}
|
||||||
return Acad::eOk;
|
return Acad::eOk;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user