!437 拆单自动逆时针,支持圆型板

pull/437/MERGE
ChenX 5 years ago
parent 0deb962685
commit 940bfe34e1

@ -2,10 +2,11 @@ import { Vector3 } from "three";
import { EBoardKeyList } from "../Common/BoardKeyList";
import { FixIndex } from "../Common/Utils";
import { Board } from "../DatabaseServices/Entity/Board";
import { Circle } from "../DatabaseServices/Entity/Circle";
import { Curve } from "../DatabaseServices/Entity/Curve";
import { Line } from "../DatabaseServices/Entity/Line";
import { Polyline } from "../DatabaseServices/Entity/Polyline";
import { equaln, equalv3, isParallelTo, angle } from "../Geometry/GeUtils";
import { angle, equaln, equalv3, isParallelTo } from "../Geometry/GeUtils";
import { IntersectOption } from "./IntersectWith";
import { PolyOffsetUtil } from "./OffsetPolyline";
@ -170,8 +171,12 @@ export function getBoardSealingCurves(br: Board)
let cus: Curve[] = [];
if (br.IsSpecialShape)
{
let cu = br.ContourCurve;
if (cu instanceof Circle)
return [cu.Clone()];
else
cus = br.ContourCurve.Explode() as Curve[];
paragraphCulist(br.ContourCurve.Explode() as Curve[]);
paragraphCulist(cus);
}
else
{
@ -186,7 +191,7 @@ export function getBoardSealingCurves(br: Board)
return cus;
}
export function getSealedBoardContour(br: Board)
export function getSealedBoardContour(br: Board): Polyline | Circle
{
let offsetCus: Curve[] = [];
let cus = getBoardSealingCurves(br);
@ -194,6 +199,9 @@ export function getSealedBoardContour(br: Board)
let dir = Math.sign(br.ContourCurve.Area2);
if (cus[0] instanceof Circle)
dir = 1;
for (let i = 0; i < cus.length; i++)
{
let cs = cus[i].GetOffsetCurves(-highSeals[i].size * dir);
@ -205,6 +213,9 @@ export function getSealedBoardContour(br: Board)
offsetCus.push(c);
}
}
if (offsetCus.length === 1 && offsetCus[0] instanceof Circle)
return offsetCus[0] as Circle;
calcEdgeSealing(offsetCus);
let pl = new Polyline();
for (let c of offsetCus)

@ -9,7 +9,7 @@ import { Circle } from "../DatabaseServices/Entity/Circle";
import { Polyline } from "../DatabaseServices/Entity/Polyline";
import { Vec2 } from "../Geometry/CheckIntersect";
import { AsVector2, equaln, equalv3, isParallelTo } from "../Geometry/GeUtils";
import { getBoardSealingCurves, getSealedBoardContour, getBoardHighSeal } from "../GraphicsSystem/CalcEdgeSealing";
import { getBoardHighSeal, getBoardSealingCurves, getSealedBoardContour } from "../GraphicsSystem/CalcEdgeSealing";
import { FeedingToolPath } from "../GraphicsSystem/ToolPath/FeedingToolPath";
import { FaceDirection, IHighSealedItem } from "../UI/Store/BoardInterface";
@ -140,10 +140,13 @@ export namespace Production
if (cu instanceof Circle)
{
let pl = ConverCircleToPolyline(cu);
pl.Reverse();
ptsBuls = pl.PtsBuls;
}
else
{
if (cu.Area2 < 0)
cu.Reverse();
ptsBuls = SplitePolylineAtArc(cu);
}
let ocs = cu.OCS;
@ -177,6 +180,9 @@ export namespace Production
let result: { pts: Vector2[], buls: number[] } = { pts: [], buls: [] };
if (ptsBuls.pts.length === 0)
return result;
for (let i = 0; i < ptsBuls.buls.length - 1; i++)
{
let bul = ptsBuls.buls[i];
@ -201,6 +207,7 @@ export namespace Production
result.buls.push(ptsBuls.buls[i]);
}
}
result.pts.push(arrayLast(ptsBuls.pts));
result.buls.push(0);
return result;

@ -92,8 +92,7 @@ export class BoardProcessModal extends React.Component<BoardProcessProps, {}>{
}
render()
{
let isShowHighEditor = this.props.br
&& !(this.props.br.ContourCurve instanceof Circle);
let isShowHighEditor = Boolean(this.props.br);
return (
<div className="board-info">
{

@ -1,17 +1,16 @@
import { observable } from "mobx";
import * as React from 'react';
import { log } from "util";
import { EBoardKeyList } from "../../../Common/BoardKeyList";
import { ConfigUrls } from "../../../Common/HostUrl";
import { PostJson, RequestStatus } from "../../../Common/Request";
import { Curve } from "../../../DatabaseServices/Entity/Curve";
import { Board } from "../../../DatabaseServices/Entity/Board";
import { commandMachine } from "../../../Editor/CommandMachine";
import { paragraphCulist } from "../../../GraphicsSystem/CalcEdgeSealing";
import { getBoardSealingCurves } from "../../../GraphicsSystem/CalcEdgeSealing";
import { RightTabId } from "../../Components/RightPanel/RightPanel";
import { AppToaster } from "../../Components/Toaster";
import { IHighSealedItem } from "../BoardInterface";
import { BoardEdgesEditor } from "./BoardEdgesEditor";
import * as React from 'react';
import { Board } from "../../../DatabaseServices/Entity/Board";
import { EBoardKeyList } from "../../../Common/BoardKeyList";
import { log } from "util";
export class SealingStore extends BoardEdgesEditor
{
@ -36,9 +35,7 @@ export class SealingStore extends BoardEdgesEditor
let totalHighSeals: Set<number> = new Set();
for (let br of this._boardList)
{
let cus = br.ContourCurve.Explode() as Curve[];
//曲线分段
paragraphCulist(cus);
let cus = getBoardSealingCurves(br);
let highseals = br.BoardProcessOption.highSealed;
if (highseals.length === cus.length)
{

Loading…
Cancel
Save