开发:优化注释

pull/2474/head
ChenX 11 months ago
parent 03054f4050
commit b559dd39cf

@ -81,37 +81,37 @@ export class Part<T = any, Matrix = any>
//初始化零件的各个状态,按旋转角度表 //初始化零件的各个状态,按旋转角度表
Init2(path: Path, bin: Path, rotations: number[] = []): this Init2(path: Path, bin: Path, rotations: number[] = []): this
{ {
let pathP = path.OrigionMinPoint; let path_OMP = path.OrigionMinPoint;
let path_0 = PathGeneratorSingle.Allocate(path); let path_0 = PathGeneratorSingle.Allocate(path);
let pathSet = new Set<Path>(); let pathSet = new Set<Path>();
//初始化零件的状态集合 //初始化零件的状态集合
for (let pa of rotations) for (let ro of rotations)
{ {
let partState = new PartState(); let partState = new PartState();
partState.Rotation = pa; partState.Rotation = ro;
if (pa === 0) if (ro === 0)
{ {
partState.Contour = path_0; partState.Contour = path_0;
partState.OrigionMinPoint = pathP; partState.OrigionMinPoint = path_OMP;
partState.MinPoint = path.OrigionMinPoint; partState.MinPoint = path_OMP;
} }
else else
{ {
let path_r = new Path(path.Points, pa); let path_r = new Path(path.Points, ro);
partState.Contour = PathGeneratorSingle.Allocate(path_r); partState.Contour = PathGeneratorSingle.Allocate(path_r);
partState.Contour.Area = path_0.Area; partState.Contour.Area = path_0.Area;
//避免重复的Path进入State //避免重复的Path进入State
if (pathSet.has(partState.Contour)) continue; if (pathSet.has(partState.Contour)) continue;
let p0 = path_r.OrigionMinPoint; let p0 = path_r.OrigionMinPoint;
let c = Math.cos(-pa); let c = Math.cos(-ro);
let s = Math.sin(-pa); let s = Math.sin(-ro);
let x1 = p0.x * c - p0.y * s; let x1 = p0.x * c - p0.y * s;
let y1 = p0.x * s + p0.y * c; let y1 = p0.x * s + p0.y * c;
partState.OrigionMinPoint = new Vector2(pathP.x + x1, pathP.y + y1); partState.OrigionMinPoint = new Vector2(path_OMP.x + x1, path_OMP.y + y1);
//计算正确的最小点 //计算正确的最小点
let tempPath = new Path(path.OrigionPoints, pa); let tempPath = new Path(path.OrigionPoints, ro);
partState.MinPoint = tempPath.OrigionMinPoint; partState.MinPoint = tempPath.OrigionMinPoint;
} }
//记录已有Path //记录已有Path

@ -1,7 +1,7 @@
import { Path } from "./Path"; import { NestFiler } from "../Common/Filer";
import { Point } from "../Common/Point"; import { Point } from "../Common/Point";
import { Path } from "./Path";
import { PathGeneratorSingle } from "./PathGenerator"; import { PathGeneratorSingle } from "./PathGenerator";
import { NestFiler } from "../Common/Filer";
/** /**
* *
@ -10,9 +10,9 @@ import { NestFiler } from "../Common/Filer";
export class PartState export class PartState
{ {
Rotation: number; Rotation: number;
OrigionMinPoint: Point;//使用 Rotation(O - OrigionMinPoint) 将零件变换到和排料矩形状态相同的状态,然后使用PlacePoint(O)将零件设置到正确的状态 OrigionMinPoint: Point;//m(-OMinP) r(ro) m(placeP) 请参考PlaceUtils.PlaceCS函数
MinPoint: Point;//这个状态下的最小点 MinPoint: Point;//这个状态下的最小点 通常是网洞相对于上级的位置
Contour: Path;//轮廓 Contour: Path;//轮廓
IsMirror: boolean = false; IsMirror: boolean = false;

@ -31,10 +31,17 @@ let v = new Vector3;
let mirrorMtx = new Matrix4().makeBasis(new Vector3(-1), YAxis, ZAxis); let mirrorMtx = new Matrix4().makeBasis(new Vector3(-1), YAxis, ZAxis);
let mirrorMoveMtx = new Matrix4(); let mirrorMoveMtx = new Matrix4();
/**
*
* @param part
* @param [move] 3.5 3,(0.5,0.5)
* @returns
*/
export function PlaceCS(part: Part, move?: Vec2): Matrix4 export function PlaceCS(part: Part, move?: Vec2): Matrix4
{ {
r.makeRotationZ(part.State.Rotation);
m.setPosition(-part.State.OrigionMinPoint.x, -part.State.OrigionMinPoint.y, 0); m.setPosition(-part.State.OrigionMinPoint.x, -part.State.OrigionMinPoint.y, 0);
r.makeRotationZ(part.State.Rotation);
v.set(part.PlacePosition.x * 1e-4, part.PlacePosition.y * 1e-4, 0); v.set(part.PlacePosition.x * 1e-4, part.PlacePosition.y * 1e-4, 0);
if (move) if (move)
{ {

Loading…
Cancel
Save