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
|
// 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 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