diff --git a/src/Add-on/CheckModeling.ts b/src/Add-on/CheckModeling.ts index 4b11a2f70..2a66f58a8 100644 --- a/src/Add-on/CheckModeling.ts +++ b/src/Add-on/CheckModeling.ts @@ -22,7 +22,24 @@ export class CheckModeling implements Command if (brRes.Status === PromptStatus.Cancel) return; - let brs = brRes.SelectSet.SelectEntityList as Board[]; + let brs: Board[] = []; + + for (let en of brRes.SelectSet.SelectEntityList as Board[]) + { + let bs = en.SplitBoards; + for (let b of bs) + { + if (b.__OriginalEnt__) + { + for (let [k, ds] of en.DrillList) + b.AppendDrillList(k, ds); + b.AppendNails(en.LayerNails); + } + } + + brs.push(...bs); + } + let feedingTool = FeedingToolPath.GetInstance() as FeedingToolPath; let errGrooves: ExtrudeSolid[] = []; diff --git a/src/Common/CurveUtils.ts b/src/Common/CurveUtils.ts index c99510a36..14fec3b14 100644 --- a/src/Common/CurveUtils.ts +++ b/src/Common/CurveUtils.ts @@ -813,13 +813,13 @@ export function PolylineSpliteRect(outline: Polyline): Polyline[] for (let c of cus) { + if (c instanceof Arc) return [outline]; let derv = c.GetFistDeriv(0).normalize(); if (isParallelTo(derv, YAxis, PolylineSpliteRectFuzz)) yCus.push(c); else - if (!isParallelTo(derv, XAxis, PolylineSpliteRectFuzz) || c instanceof Arc) + if (!isParallelTo(derv, XAxis, PolylineSpliteRectFuzz)) { - console.log(derv.clone().cross(XAxis).lengthSq()); return [outline]; } } @@ -852,7 +852,7 @@ export function PolylineSpliteRect(outline: Polyline): Polyline[] let ys: number[] = []; for (let par of pars) { - let c = outline.GetCurveAtIndex(par); + let c = outline.GetCurveAtParam(par); let derv = c.GetFistDeriv(0).normalize(); if (isParallelTo(derv, XAxis, PolylineSpliteRectFuzz)) { diff --git a/src/Common/InterfereUtil.ts b/src/Common/InterfereUtil.ts index c19ec54a7..8b6428a7e 100644 --- a/src/Common/InterfereUtil.ts +++ b/src/Common/InterfereUtil.ts @@ -31,7 +31,9 @@ export class CheckInterfereTool { if (en instanceof HardwareCompositeEntity) { - let es = en.GetAllEntity(false, e => e instanceof ExtrudeHole || e instanceof ExtrudeSolid || e instanceof SweepSolid) as Solid3D[]; + if (!en.HardwareOption.isHole) continue; + + let es = en.GetAllEntity(true, e => (e instanceof ExtrudeHole && e.isHole) || e instanceof ExtrudeSolid || e instanceof SweepSolid) as Solid3D[]; es.forEach(e => e.TempData = { Id: en.Id }); ens.push(...es); } diff --git a/src/GraphicsSystem/ToolPath/FeedingToolPath.ts b/src/GraphicsSystem/ToolPath/FeedingToolPath.ts index 46e9d78ec..f62c6b881 100644 --- a/src/GraphicsSystem/ToolPath/FeedingToolPath.ts +++ b/src/GraphicsSystem/ToolPath/FeedingToolPath.ts @@ -361,6 +361,9 @@ export class FeedingToolPath extends Singleton for (let m of [...modeling, ...sideModeling]) { + let cu = m.shape.Outline.Curve; + if (cu instanceof Circle && cu.Radius < userConfig.chaidanOption.modeling2HoleRad + 1e-6) + continue; if (userConfig.chaidanOption.useDefaultRad) m.knifeRadius = userConfig.chaidanOption.radius; let cus = this.GetModelFeedPath(br, m);