From 8e071af21f6e7959742e16c04fccecb3a36a6e6b Mon Sep 17 00:00:00 2001 From: company-desktop-computer Date: Tue, 27 Oct 2026 11:00:54 +0800 Subject: [PATCH] refactor-i_aecdbxequipment-copyfrom refactor-i_aecdbxequipment-copyfrom --- .../Implement/i_AecDbXEquipment.cpp | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/SourceCode/Code2026/CoreLibrary/Implement/i_AecDbXEquipment.cpp b/SourceCode/Code2026/CoreLibrary/Implement/i_AecDbXEquipment.cpp index 66dea0a..916998d 100644 --- a/SourceCode/Code2026/CoreLibrary/Implement/i_AecDbXEquipment.cpp +++ b/SourceCode/Code2026/CoreLibrary/Implement/i_AecDbXEquipment.cpp @@ -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; } -- 2.54.0