pull/68/head
Zoe 6 years ago
parent f777e98db0
commit 59551723dd

@ -4,7 +4,7 @@ import { Curve } from "../../DatabaseServices/Curve";
import { Polyline } from "../../DatabaseServices/Polyline";
import { Command } from "../../Editor/CommandMachine";
import { PromptStatus } from "../../Editor/PromptResult";
import { isTargetCurInSourceCur, isTargetCurOutOrOnSourceCur } from "../../GraphicsSystem/BoolOperateUtils";
import { isTargetCurInOrOnSourceCur, isTargetCurOutOrOnSourceCur } from "../../GraphicsSystem/BoolOperateUtils";
export class TestTargeOnCurve implements Command
{

@ -1,7 +1,7 @@
import * as THREE from "three";
import { CreateBoardUtil } from "../ApplicationServices/mesh/createBoard";
import { Vec2DTo3D, Vec3DTo2D, curveLinkGroup, equalCurveAndCurve } from "../Common/CurveUtils";
import { isTargetCurInSourceCur } from "../GraphicsSystem/BoolOperateUtils";
import { isTargetCurInOrOnSourceCur } from "../GraphicsSystem/BoolOperateUtils";
import { IntersectOption } from "../GraphicsSystem/IntersectWith";
import { Arc } from "./Arc";
import { Circle } from "./Circle";
@ -238,7 +238,7 @@ export class Contour
}
CuInOutline(targetCur: Curve)
{
return isTargetCurInSourceCur(this.m_Outline, targetCur);
return isTargetCurInOrOnSourceCur(this.m_Outline, targetCur);
}
Equal(tar: Contour)
{

@ -16,7 +16,7 @@ export enum BoolOpeartionType
}
//判断曲线是否在源封闭曲线内
export function isTargetCurInSourceCur(sourceCur: Polyline | Circle | Ellipse, targetCur: Curve)
export function isTargetCurInOrOnSourceCur(sourceCur: Polyline | Circle | Ellipse, targetCur: Curve)
{
let pts = [];
getIntPtContextPts(sourceCur, targetCur, pts);
@ -49,7 +49,7 @@ function IsPtsAllInOrOnReg(sourceReg: Polyline | Circle | Ellipse, pts: Vector3[
return pts.every(pt =>
{
//是否点在封闭曲线内
return sourceReg.PtInCurve(pt) || sourceReg.PtOnCurve(pt);
return sourceReg.PtOnCurve(pt) || sourceReg.PtInCurve(pt);
})
}
//TODO:把线 on in out三种状态分开写
@ -70,7 +70,7 @@ function IsPtsAllOutOrOnReg(sourceReg: Polyline | Circle | Ellipse, pts: Vector3
return pts.every(pt =>
{
//是否点在封闭曲线内
return !sourceReg.PtInCurve(pt) || sourceReg.PtOnCurve(pt);
return sourceReg.PtOnCurve(pt) || !sourceReg.PtInCurve(pt);
})
}
@ -99,7 +99,3 @@ export function isTargetCurOnSourceCur(sourceCur: Polyline | Circle | Ellipse, t
} else return false;
})
}
export function isTargetCurOutSourceCur(sourceCur: Polyline | Circle | Ellipse, targetCur: Curve)
{
}

@ -9,7 +9,7 @@ import { Curve } from "../DatabaseServices/Curve";
import { Line } from "../DatabaseServices/Line";
import { Polyline } from '../DatabaseServices/Polyline';
import { equal, equaln } from "../Geometry/GeUtils";
import { isTargetCurInSourceCur, isTargetCurOutOrOnSourceCur } from "./BoolOperateUtils";
import { isTargetCurInOrOnSourceCur, isTargetCurOutOrOnSourceCur } from "./BoolOperateUtils";
import { IntersectOption } from "./IntersectWith";
import { LinkSelf } from "./LinkSelft";
interface offestRes
@ -66,15 +66,12 @@ export class PolyOffestUtil
let cus = this.trimByContours(newPls, contours);
// console.timeEnd("con");
// return cus;
// console.time("link");
let rets = this.linkSelfingCurves2(cus);
// console.timeEnd('link');
if (!this.IsKeepAllCurves)
{
// console.time("op");
rets = this.optimizeCus(rets);
// console.timeEnd("op");
}
return rets;
}
@ -405,11 +402,10 @@ export class PolyOffestUtil
// 通过构建的轮廓对偏移曲线进行裁剪
private trimByContours(needCutCus: Curve[], cons: Contour[]): Curve[]
{
for (let c of cons)
cons.forEach(c =>
{
let tmpCus: Curve[] = [];
let outline = c.Outline;
needCutCus.forEach(l =>
{
//在上面或者在外面
@ -417,7 +413,7 @@ export class PolyOffestUtil
{
tmpCus.push(l);
}
else if (!isTargetCurInSourceCur(outline, l))
else if (!isTargetCurInOrOnSourceCur(outline, l))
{
let pts = l.IntersectWith(outline, IntersectOption.OnBothOperands);
if (pts.length > 0)
@ -426,7 +422,7 @@ export class PolyOffestUtil
let cus = l.GetSplitCurves(par);
if (cus.length > 0)
tmpCus.push(...cus.filter(cu => !equaln(cu.Length, 0, 1e-6) && !isTargetCurInSourceCur(outline, cu)));
tmpCus.push(...cus.filter(cu => !equaln(cu.Length, 0, 1e-6) && !isTargetCurInOrOnSourceCur(outline, cu)));
else
tmpCus.push(l);
@ -434,7 +430,7 @@ export class PolyOffestUtil
}
})
needCutCus = tmpCus;
}
})
return needCutCus;
}
/**

Loading…
Cancel
Save