diff --git a/src/Add-on/DrawLine.ts b/src/Add-on/DrawLine.ts index 63a9a3f48..8428033e8 100644 --- a/src/Add-on/DrawLine.ts +++ b/src/Add-on/DrawLine.ts @@ -143,55 +143,43 @@ export class DrawLine implements Command if (ptRes.Status === PromptStatus.OK) { //第一个是切点 第二个也是选切点 - if (ptRes.SnapMode === ObjectSnapMode.Tan && firstSnapModeIsTan && firstTangeCircle && pts.length === 1) + if (ptRes.SnapMode === ObjectSnapMode.Tan && firstSnapModeIsTan && firstTangeCircle && pts.length === 1 && ptRes.SnapEntity) { - if (!ptRes.SnapEntity) + let secondTangeCircle = ptRes.SnapEntity as Circle; + //计算最优切线 + let lines = CircleInternalTangentLines(firstTangeCircle as Circle, secondTangeCircle).concat(CircleOuterTangentLines(firstTangeCircle as Circle, secondTangeCircle as Circle)); + if (!lines?.length) { AppToaster.show({ - message: "程序错误!无法获取捕捉圆,请重试!", + message: "选择的点位无法构成切线", timeout: 3000, intent: Intent.WARNING, }); continue; } - else - { - let secondTangeCircle = ptRes.SnapEntity as Circle; - //计算最优切线 - let lines = CircleInternalTangentLines(firstTangeCircle as Circle, secondTangeCircle).concat(CircleOuterTangentLines(firstTangeCircle as Circle, secondTangeCircle as Circle)); - if (!lines?.length) - { - AppToaster.show({ - message: "选择的点位无法构成切线", - timeout: 3000, - intent: Intent.WARNING, - }); - continue; - } - let minDistance = Infinity; - let distance = Infinity; - let nearestObjectIndex = -1; + let minDistance = Infinity; + let distance = Infinity; + let nearestObjectIndex = -1; - for (let i = 0; i < lines.length; i++) + for (let i = 0; i < lines.length; i++) + { + distance = line.StartPoint.distanceTo(lines[i].StartPoint); + if (distance < minDistance) { - distance = line.StartPoint.distanceTo(lines[i].StartPoint); - if (distance < minDistance) - { - minDistance = distance; - nearestObjectIndex = i; - } + minDistance = distance; + nearestObjectIndex = i; } - line = lines[nearestObjectIndex]; + } + line = lines[nearestObjectIndex]; - app.LayoutTool.AppendDatabaseSpace(line); + app.LayoutTool.AppendDatabaseSpace(line); - drawLines.push(line); - ptLast = line.EndPoint; - pts.push(ptLast); - JigUtils.Destroy(); - continue; - } + drawLines.push(line); + ptLast = line.EndPoint; + pts.push(ptLast); + JigUtils.Destroy(); + continue; } //正常画线 line.EndPoint = ptRes.Point;