修复:切线捕捉画线错误

pull/2879/head
ChenX 3 months ago
parent 08a40489c4
commit f84dff0fb8

@ -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;

Loading…
Cancel
Save