mirror of https://gitee.com/cf-fz/WebCAD.git
!80 避免多段线偏移多余的合并,返回Curve.Join的多种状态,提高多段线长度的精度,增加Beak命令.
Merge pull request !80 from ChenX/arcjoin_newpull/80/MERGE
commit
fa60c0bf64
@ -1,25 +1,25 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`补充bug测试#IKWGF 1`] = `1.1376402440608806`;
|
||||
exports[`补充bug测试#IKWGF 1`] = `1.1376403544773543`;
|
||||
|
||||
exports[`补充bug测试#IKWGF 2`] = `0.44573816538516137`;
|
||||
exports[`补充bug测试#IKWGF 2`] = `0.4457395323615238`;
|
||||
|
||||
exports[`补充bug测试#IKWGF 3`] = `10.73282822209507`;
|
||||
exports[`补充bug测试#IKWGF 3`] = `10.73298136409425`;
|
||||
|
||||
exports[`补充bug测试#IKWGF 4`] = `12.786755410504352`;
|
||||
exports[`补充bug测试#IKWGF 4`] = `12.786911814880927`;
|
||||
|
||||
exports[`补充bug测试#IKWGF 5`] = `0.6246933329215183`;
|
||||
exports[`补充bug测试#IKWGF 5`] = `0.6246933440840137`;
|
||||
|
||||
exports[`补充bug测试#IKWGF 6`] = `10.586543051841131`;
|
||||
exports[`补充bug测试#IKWGF 6`] = `10.586693752451833`;
|
||||
|
||||
exports[`补充bug测试#IKWGF 7`] = `14.066950838248612`;
|
||||
exports[`补充bug测试#IKWGF 7`] = `14.067113755971715`;
|
||||
|
||||
exports[`补充bug测试#IKWGF 8`] = `2.168984971098264`;
|
||||
|
||||
exports[`补充bug测试#IKWGF 9`] = `11.890848111457423`;
|
||||
exports[`补充bug测试#IKWGF 9`] = `11.891017922899268`;
|
||||
|
||||
exports[`补充bug测试#IKWGF 10`] = `1.0803373815793473`;
|
||||
exports[`补充bug测试#IKWGF 10`] = `1.0803374679586226`;
|
||||
|
||||
exports[`补充bug测试#IKWGF 11`] = `0.39474205429703246`;
|
||||
exports[`补充bug测试#IKWGF 11`] = `0.39474593983890766`;
|
||||
|
||||
exports[`补充bug测试#IKWGF 12`] = `10.698715561269278`;
|
||||
exports[`补充bug测试#IKWGF 12`] = `10.698868451254269`;
|
||||
|
@ -0,0 +1,89 @@
|
||||
import { Vector3 } from "../../node_modules/@types/three";
|
||||
import { app } from "../ApplicationServices/Application";
|
||||
import { Circle } from "../DatabaseServices/Circle";
|
||||
import { Curve } from "../DatabaseServices/Curve";
|
||||
import { Command } from "../Editor/CommandMachine";
|
||||
import { PromptStatus } from "../Editor/PromptResult";
|
||||
export class Command_Break implements Command
|
||||
{
|
||||
async exec()
|
||||
{
|
||||
let cuRes = await app.m_Editor.GetEntity({
|
||||
Msg: "请选择被打断的曲线:"
|
||||
});
|
||||
if (cuRes.Status !== PromptStatus.OK)
|
||||
return;
|
||||
|
||||
let cu = cuRes.Entity as Curve;
|
||||
if (!cu) return;
|
||||
|
||||
let breakPts: Vector3[] = [];
|
||||
|
||||
while (true)
|
||||
{
|
||||
let ptRes = await app.m_Editor.GetPoint({
|
||||
Msg: "请点击被打断的点:"
|
||||
, KeyWordList: breakPts.length === 0 ? [{ key: "D", msg: "等分打断" }, { key: "S", msg: "等分打断" }] : []
|
||||
});
|
||||
|
||||
if (ptRes.Status === PromptStatus.OK)
|
||||
{
|
||||
breakPts.push(ptRes.Value);
|
||||
continue;
|
||||
}
|
||||
//用户输入关键字
|
||||
else if (ptRes.Status === PromptStatus.Keyword)
|
||||
{
|
||||
if (ptRes.StringResult === "D")
|
||||
{
|
||||
let divRes = await app.m_Editor.GetDistance({ Msg: "请输入等分个数:" });
|
||||
if (divRes.Status !== PromptStatus.OK)
|
||||
return;
|
||||
|
||||
if (divRes.Value === 0)
|
||||
{
|
||||
app.m_Editor.Prompt("个数不能为0!");
|
||||
continue;
|
||||
}
|
||||
let lenDiv = cu.Length / divRes.Value;
|
||||
for (let i = 1; i < divRes.Value; i++)
|
||||
breakPts.push(cu.GetPointAtDistance(lenDiv * i));
|
||||
}
|
||||
else if (ptRes.StringResult === "S")
|
||||
{
|
||||
let divRes = await app.m_Editor.GetDistance({ Msg: "请输入等分距离:" });
|
||||
if (divRes.Status !== PromptStatus.OK)
|
||||
return;
|
||||
|
||||
if (divRes.Value === 0)
|
||||
{
|
||||
app.m_Editor.Prompt("个数不能为0!");
|
||||
return;
|
||||
}
|
||||
let divCount = cu.Length / divRes.Value;
|
||||
for (let i = 1; i < divCount; i++)
|
||||
breakPts.push(cu.GetPointAtDistance(divRes.Value * i));
|
||||
}
|
||||
else
|
||||
{
|
||||
app.m_Editor.Prompt("未知输入!");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (cu instanceof Circle)
|
||||
breakPts.push(cu.StartPoint);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
if (breakPts.length > 0)
|
||||
{
|
||||
let cus = cu.GetSplitCurvesByPts(breakPts);
|
||||
cu.Erase();
|
||||
cus.forEach(c =>
|
||||
{
|
||||
app.m_Database.ModelSpace.Append(c);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
import { Command } from "../Editor/CommandMachine";
|
||||
import { app } from "../ApplicationServices/Application";
|
||||
import { PromptStatus } from "../Editor/PromptResult";
|
||||
import { Curve } from "../DatabaseServices/Curve";
|
||||
|
||||
|
||||
export class Command_Length implements Command
|
||||
{
|
||||
async exec()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
let enRes = await app.m_Editor.GetEntity();
|
||||
if (enRes.Status === PromptStatus.OK)
|
||||
{
|
||||
if (enRes.Entity instanceof Curve)
|
||||
{
|
||||
app.m_Editor.Prompt(enRes.Entity.Length.toFixed(8));
|
||||
}
|
||||
}
|
||||
else
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
|
||||
|
||||
|
||||
export enum Status
|
||||
{
|
||||
False = 0,
|
||||
True = 1,
|
||||
Canel = -1,
|
||||
|
||||
ConverToCircle = 101,
|
||||
}
|
Loading…
Reference in new issue