diff --git a/SourceCode/Code2026/CoreLibrary/AecDbEwPipeBase.cpp b/SourceCode/Code2026/CoreLibrary/AecDbEwPipeBase.cpp index 8317b37..9620505 100644 --- a/SourceCode/Code2026/CoreLibrary/AecDbEwPipeBase.cpp +++ b/SourceCode/Code2026/CoreLibrary/AecDbEwPipeBase.cpp @@ -771,17 +771,19 @@ AcDbRegion *AecDbEwPipeBase::RegionFromCurvesDwgInFields(AcDbDwgFiler *pFiler, A arRegPtrs.removeAt(nPos); } - Acad::ErrorStatus es; for (int j = 0;j < arRegPtrs.length();j++) { pRegion = (AcDbRegion*)arRegPtrs.at(j); - if (isRegionNull(pRegion) && isRegionNull(pRegionBig)) + // 任一 region 无效就跳过,无效 region 参与布尔运算可能让 ACIS 崩溃 + if (isRegionNull(pRegion) || isRegionNull(pRegionBig)) { + delete pRegion; continue; } - es = pRegionBig->booleanOper(AcDb::kBoolSubtract, pRegion); + rawBooleanOperWrapper(pRegionBig, pRegion, AcDb::kBoolSubtract); + delete pRegion; } return pRegionBig; }