修复:精度问题导致拆单失败

pull/1987/head
ChenX 2 years ago
parent cc5f945d5c
commit 6f4727df59

@ -24,6 +24,8 @@ export interface PolylineProps
bul: number;
}
export const BUL_IS_LINE_FUZZ = 1e-5;
@Factory
export class Polyline extends Curve
{
@ -1251,7 +1253,7 @@ export class Polyline extends Curve
let d2 = this._LineData[FixIndex(i + 1, this._LineData)];
let curve: Curve;
if (equaln(d1.bul, 0, 1e-5))
if (equaln(d1.bul, 0, BUL_IS_LINE_FUZZ))
curve = new Line(AsVector3(d1.pt), AsVector3(d2.pt)).ApplyMatrix(this.OCSNoClone);
else
curve = new Arc().ParseFromBul(d1.pt, d2.pt, d1.bul).ApplyMatrix(this.OCSNoClone);

@ -3,7 +3,7 @@ import { angle, equaln, equalv3 } from '../Geometry/GeUtils';
import { IntersectOption } from '../GraphicsSystem/IntersectWith';
import { Arc } from './Entity/Arc';
import { Line } from './Entity/Line';
import { Polyline } from './Entity/Polyline';
import { BUL_IS_LINE_FUZZ, Polyline } from './Entity/Polyline';
/**
* ,.
@ -68,7 +68,7 @@ export function IsPointInPolyLine(pl: Polyline, pt: Vector3): boolean
for (let i = 0; i < pl.EndParam; i++)
{
if (equaln(pl.GetBulgeAt(i), 0, 5e-6))//直线
if (equaln(pl.GetBulgeAt(i), 0, BUL_IS_LINE_FUZZ))//直线
{
let sp = pl.GetPointAtParam(i);
let ep = pl.GetPointAtParam(i + 1);

Loading…
Cancel
Save