refactor-i_aecdbxequipment-copyfrom #84
@@ -245,15 +245,6 @@ Acad::ErrorStatus AecDbXEquipment::copyFrom(const AcRxObject* pSrc)
|
||||
AssertWriteEnabled();
|
||||
AecDbXEquipment *pSrcEqu = AecDbXEquipment::cast(pSrc);
|
||||
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;
|
||||
return Acad::eOk;
|
||||
}
|
||||
@@ -268,10 +259,11 @@ Acad::ErrorStatus AecDbXEquipment::copyFrom2(const AcRxObject* pSrc)
|
||||
|
||||
// 先克隆成功再替换:cloneImpl 在源对象没有 impl 时返回 NULL
|
||||
XEquipmentImplBase *pNewImpl = pSrcEqu->cloneImpl(&m_mapSpecXData);
|
||||
DELETE_PTR(m_pImpl);
|
||||
m_pImpl = pNewImpl;
|
||||
if (!m_pImpl)
|
||||
m_pImpl = createParamEquImpl(GetType(), false);
|
||||
if (pNewImpl)
|
||||
{
|
||||
DELETE_PTR(m_pImpl);
|
||||
m_pImpl = pNewImpl;
|
||||
}
|
||||
return Acad::eOk;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user