From 59551723dd7043da4edff781e959dfacac2f516d Mon Sep 17 00:00:00 2001 From: Zoe Date: Wed, 6 Jun 2018 11:24:47 +0800 Subject: [PATCH] =?UTF-8?q?bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Add-on/testEntity/TestCurve.ts | 2 +- src/DatabaseServices/Contour.ts | 4 ++-- src/GraphicsSystem/BoolOperateUtils.ts | 10 +++------- src/GraphicsSystem/OffestPolyline.ts | 14 +++++--------- 4 files changed, 11 insertions(+), 19 deletions(-) diff --git a/src/Add-on/testEntity/TestCurve.ts b/src/Add-on/testEntity/TestCurve.ts index 393313bc6..37fbf9637 100644 --- a/src/Add-on/testEntity/TestCurve.ts +++ b/src/Add-on/testEntity/TestCurve.ts @@ -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 { diff --git a/src/DatabaseServices/Contour.ts b/src/DatabaseServices/Contour.ts index 67ca039fc..de4135353 100644 --- a/src/DatabaseServices/Contour.ts +++ b/src/DatabaseServices/Contour.ts @@ -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) { diff --git a/src/GraphicsSystem/BoolOperateUtils.ts b/src/GraphicsSystem/BoolOperateUtils.ts index 895e7ebee..143c28015 100644 --- a/src/GraphicsSystem/BoolOperateUtils.ts +++ b/src/GraphicsSystem/BoolOperateUtils.ts @@ -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) -{ - -} diff --git a/src/GraphicsSystem/OffestPolyline.ts b/src/GraphicsSystem/OffestPolyline.ts index 9759f6fff..2da3a2fbf 100644 --- a/src/GraphicsSystem/OffestPolyline.ts +++ b/src/GraphicsSystem/OffestPolyline.ts @@ -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; } /**