refactor-i_aecdbxequipment-copyfrom #84

Merged
gjm merged 1 commits from refactor-i_aecdbxequipment-copyfrom into main 2026-10-27 13:53:23 +08:00
@@ -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;
}