开发:优化注释

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
{
let pathP = path.OrigionMinPoint;
let path_OMP = path.OrigionMinPoint;
let path_0 = PathGeneratorSingle.Allocate(path);
let pathSet = new Set<Path>();
//初始化零件的状态集合
for (let pa of rotations)
for (let ro of rotations)
{
let partState = new PartState();
partState.Rotation = pa;
if (pa === 0)
partState.Rotation = ro;
if (ro === 0)
{
partState.Contour = path_0;
partState.OrigionMinPoint = pathP;
partState.MinPoint = path.OrigionMinPoint;
partState.OrigionMinPoint = path_OMP;
partState.MinPoint = path_OMP;
}
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.Area = path_0.Area;
//避免重复的Path进入State
if (pathSet.has(partState.Contour)) continue;
let p0 = path_r.OrigionMinPoint;
let c = Math.cos(-pa);
let s = Math.sin(-pa);
let c = Math.cos(-ro);
let s = Math.sin(-ro);
let x1 = p0.x * c - p0.y * s;
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;
}
//记录已有Path

@ -1,7 +1,7 @@
import { Path } from "./Path";
import { NestFiler } from "../Common/Filer";
import { Point } from "../Common/Point";
import { Path } from "./Path";
import { PathGeneratorSingle } from "./PathGenerator";
import { NestFiler } from "../Common/Filer";
/**
*
@ -10,9 +10,9 @@ import { NestFiler } from "../Common/Filer";
export class PartState
{
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;//轮廓
IsMirror: boolean = false;

@ -31,10 +31,17 @@ let v = new Vector3;
let mirrorMtx = new Matrix4().makeBasis(new Vector3(-1), YAxis, ZAxis);
let mirrorMoveMtx = new Matrix4();
/**
*
* @param part
* @param [move] 3.5 3,(0.5,0.5)
* @returns
*/
export function PlaceCS(part: Part, move?: Vec2): Matrix4
{
r.makeRotationZ(part.State.Rotation);
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);
if (move)
{

Loading…
Cancel
Save