From 147df79e44fcdcd230657706ecfca9845b1fc1f1 Mon Sep 17 00:00:00 2001 From: lixiang <504331699@qq.com> Date: Mon, 11 Aug 2025 10:16:48 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=85=AC=E5=85=B1=E7=B1=BB=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/models/processors/cutPoint.ts | 59 +++++++ src/models/processors/holeToModel.ts | 38 ++++ src/models/processors/modelProcessPoints.ts | 181 ++++++++++++++++++++ 3 files changed, 278 insertions(+) create mode 100644 src/models/processors/cutPoint.ts create mode 100644 src/models/processors/holeToModel.ts create mode 100644 src/models/processors/modelProcessPoints.ts diff --git a/src/models/processors/cutPoint.ts b/src/models/processors/cutPoint.ts new file mode 100644 index 0000000..e16ce25 --- /dev/null +++ b/src/models/processors/cutPoint.ts @@ -0,0 +1,59 @@ +import { ConfigBase } from "../config" +import { IProcessingItem } from "../processItem" + +/** + * 下刀点 入参 + */ +export type CutPointInput = { + + /** (余料板异形点) 开料大板的开料轮廓数据 若没有则需要传 开料大板宽、高*/ + boardPointInfo?: IProcessingItem, + /** 开料大板宽 若有 boardPointInfo 则不需要传 */ + boardWidth?: number, + /** 开料大板长 若有 boardPointInfo 则不需要传 */ + boardLength?: number + /** 小板数据集 */ + blocks?: CutPointInputBlock[] +} +/** 处理器输出---下刀点 */ +export type CutPointOutput = { + blocks: CutPointOutputBlock[] +} + +/** + * 小板类型 输入 + */ +export type CutPointInputBlock = { + /** 小板唯一标识 */ + id: string | number; + /** 排版长 */ + length: number; + /** 排版宽 */ + width: number; + /** 板件坐标X */ + x: number; + /** 板件坐标y */ + y: number; + /** 开料顺序 */ + cutOrder: number; + /** + * 板件轮廓 + * 用以分析下刀点的板件轮廓 + * */ + blockPoints: IProcessingItem + /** 是否异形 true 是异形 false 矩形 */ + isUnRegular: boolean +}; + +/** 小板类型 输出 */ +export type CutPointOutputBlock = CutPointInputBlock & { + /** 下刀点 板件轮廓的下标 */ + cutPointId?: number, +} + +/** 下刀点配置 + * + * 注:暂时没有配置项 + */ +export declare class CutPointConfig extends ConfigBase { +} \ No newline at end of file diff --git a/src/models/processors/holeToModel.ts b/src/models/processors/holeToModel.ts new file mode 100644 index 0000000..aaed91f --- /dev/null +++ b/src/models/processors/holeToModel.ts @@ -0,0 +1,38 @@ +import { ConfigBase } from "../config" +import { IProcessingItem } from "../processItem" + +/** 处理器输入 -孔转造型*/ +export type HoleToModelInput = { + /** 孔信息 */ + holeData: HoleToModelProcessingItem[], + /** 孔所在板件的优化后的坐标 X (可选)*/ + placeX?: number, + /** 孔所在板件的优化后的坐标 Y (可选)*/ + placeY?: number, + /** 孔所在板件的 厚度 */ + thickness: number +} +/** 处理器输出-- 获取造型在大板的刀路 */ +export type HoleToModelOutput = { + /** 孔转造型 后的 造型数据 */ + modelData: HoleToModelProcessingItem[], + /** 未处理的孔数据 以及信息 */ + noHandleItem: noHandleItemType[] +} +export type noHandleItemType = { + /** 未处理的孔信息 */ + holeData: HoleToModelProcessingItem, + /** 未处理 说明 */ + info: string +} +/** 处理器配置-- 获取造型在大板的刀路 */ +export declare class HoleToModelProcConfig extends ConfigBase { + +} + + +/** 加工项的类型 */ +export type HoleToModelProcessingItem = IProcessingItem & { + /** 使用刀具的刀半径 */ + knifeRadius: number +} \ No newline at end of file diff --git a/src/models/processors/modelProcessPoints.ts b/src/models/processors/modelProcessPoints.ts new file mode 100644 index 0000000..6a6e1d7 --- /dev/null +++ b/src/models/processors/modelProcessPoints.ts @@ -0,0 +1,181 @@ +import { ConfigBase } from "../config" + +/** 处理器输入-- 获取造型在大板的刀路 */ +export type ModelProcessPointsInput = { + /** 小板数据 */ + block: ModelProcessPointsInputBlock, + /** 小板的最终的放置位置 */ + targetPosition: PositionType +} +/** 处理器输入--小板 -- 获取造型在大板的刀路 */ +export type ModelProcessPointsInputBlock = { + /** 板件唯一标识 */ + id: string | number, + /** 板件基于大板的 坐标X */ + x: number, + /** 板件基于大板的 坐标y */ + y: number, + /** 板件(小板)长 */ + length: number, + /** 板件(小板)宽 */ + width: number, + /** 造型数据 依据放置方式positionType 下的造型数据 默认为 依据放置方式positionType.FRONT 的造型数据 */ + models: ModelProcessItem[], + /** 板件的原放置方式 默认为正面(0) 不传则为正面 原 placestyle*/ + positionType?: PositionType, + /** 偏移值 */ + offsetInfo: OffsetInfo + +} +/** 板件 上下左右 偏移值信息 */ +export type OffsetInfo = { + top: number, + bottom: number, + left: number, + right: number, +} +/** 处理器输出--小板 -- 获取造型在大板的刀路 */ +export type ModelProcessPointsOutputBlock = { + /** 板件唯一标识 */ + id: string | number + /** 放置方式 */ + positionType: PositionType + /** 造型数据 */ + models: ModelProcessItem[] + /** 板件(小板)长 */ + length: number, + /** 板件(小板)宽 */ + width: number, + /** 偏移值 */ + offsetInfo: OffsetInfo +} +/** 处理器输出-- 获取造型在大板的刀路 */ +export type ModelProcessPointsOutput = { + block: ModelProcessPointsOutputBlock +} + +/** 处理器配置-- 获取造型在大板的刀路 暂无 */ +export declare class ModelProcessPointsProcConfig extends ConfigBase { + +} + + +/** 造型类 */ +export interface ModelProcessItem { + /** 加工项唯一标识 */ + id?: string | number + /** + * 加工点数组 + */ + pts: IPoint[]; + /** + * 凸度数组 + */ + buls: number[]; + /** 加工面 */ + face: FaceType + +} + +/** 加工面 */ +export enum FaceType { + /** 正面 */ + FRONT = 0, + /** 反面 */ + BACK = 1, +} + +/** 点坐标类 */ +export interface IPoint { x: number, y: number; } + +/** 小板的放置方式 */ +export enum PositionType { + /** 正面 */ + FRONT = 0, + /** 正面右转 */ + FRONT_TURN_RIGHT = 1, + /** 正面后转 */ + FRONT_TURN_BACK = 2, + /** 正面左转 */ + FRONT_TURN_LEFT = 3, + /** 反面 */ + BACK = 4, + /** 反面右转 */ + BACK_TURN_RIGHT = 5, + /** 反面后转 */ + BACK_TURN_BACK = 6, + /** 反面左转 */ + BACK_TURN_LEFT = 7, +} + + +/** 行为类型 */ +export type RotationAction = 'doNothing' | 'turnLeft' | 'turnRight' | 'turnAround' +/** + * 原放置方式 依据 目标放置方式 转 行为的 转换关系 + * + * 注:原放置方式 为 翻面 转换后 的数值 + * 若要支持 翻转转换前 需对内容进一步填充 +*/ +export const transitions_PositionToAction: any = { + [PositionType.FRONT]: { + [PositionType.FRONT_TURN_BACK]: 'turnAround', + [PositionType.FRONT_TURN_LEFT]: 'turnLeft', + [PositionType.FRONT_TURN_RIGHT]: 'turnRight', + [PositionType.FRONT]: 'doNothing' + }, + [PositionType.FRONT_TURN_LEFT]: { + [PositionType.FRONT]: 'turnRight', + [PositionType.FRONT_TURN_RIGHT]: 'turnAround', + [PositionType.FRONT_TURN_BACK]: 'turnLeft', + [PositionType.FRONT_TURN_LEFT]: 'doNothing' + }, + [PositionType.FRONT_TURN_RIGHT]: { + [PositionType.FRONT]: 'turnLeft', + [PositionType.FRONT_TURN_LEFT]: 'turnAround', + [PositionType.FRONT_TURN_BACK]: 'turnRight', + [PositionType.FRONT_TURN_RIGHT]: 'doNothing' + }, + [PositionType.FRONT_TURN_BACK]: { + [PositionType.FRONT]: 'turnAround', + [PositionType.FRONT_TURN_LEFT]: 'turnRight', + [PositionType.FRONT_TURN_RIGHT]: 'turnLeft', + [PositionType.FRONT_TURN_BACK]: 'doNothing' + }, + [PositionType.BACK]: { + [PositionType.BACK_TURN_BACK]: 'turnAround', + [PositionType.BACK_TURN_LEFT]: 'turnLeft', + [PositionType.BACK_TURN_RIGHT]: 'turnRight', + [PositionType.BACK]: 'doNothing' + }, + [PositionType.BACK_TURN_LEFT]: { + [PositionType.BACK]: 'turnRight', + [PositionType.BACK_TURN_RIGHT]: 'turnAround', + [PositionType.BACK_TURN_BACK]: 'turnLeft', + [PositionType.BACK_TURN_LEFT]: 'doNothing' + }, + [PositionType.BACK_TURN_RIGHT]: { + [PositionType.BACK]: 'turnLeft', + [PositionType.BACK_TURN_LEFT]: 'turnAround', + [PositionType.BACK_TURN_BACK]: 'turnRight', + [PositionType.BACK_TURN_RIGHT]: 'doNothing' + }, + [PositionType.BACK_TURN_BACK]: { + [PositionType.BACK]: 'turnAround', + [PositionType.BACK_TURN_LEFT]: 'turnRight', + [PositionType.BACK_TURN_RIGHT]: 'turnLeft', + [PositionType.BACK_TURN_BACK]: 'doNothing' + } +} + +/** 放置方式 翻转后的转换关系 */ +export const transitions_PositionTurnFace: any = { + [PositionType.FRONT]: PositionType.BACK, + [PositionType.FRONT_TURN_RIGHT]: PositionType.BACK_TURN_LEFT, + [PositionType.FRONT_TURN_BACK]: PositionType.BACK_TURN_BACK, + [PositionType.FRONT_TURN_LEFT]: PositionType.BACK_TURN_RIGHT, + [PositionType.BACK]: PositionType.FRONT, + [PositionType.BACK_TURN_BACK]: PositionType.FRONT_TURN_BACK, + [PositionType.BACK_TURN_LEFT]: PositionType.FRONT_TURN_RIGHT, + [PositionType.BACK_TURN_RIGHT]: PositionType.FRONT_TURN_LEFT +} \ No newline at end of file -- 2.49.1 From 5872b916065ce1e376fdab0fb82554045ca7f8a5 Mon Sep 17 00:00:00 2001 From: lixiang <504331699@qq.com> Date: Wed, 13 Aug 2025 15:29:43 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=E6=8F=90=E4=BA=A4-=201=E3=80=81?= =?UTF-8?q?=E7=A7=BB=E9=99=A4=E5=85=B3=E7=B3=BB=E8=BD=AC=E6=8D=A2=E7=B1=BB?= =?UTF-8?q?=202=E3=80=81=E7=A7=BB=E9=99=A4=E5=A4=9A=E5=86=99=E7=9A=84Ipoin?= =?UTF-8?q?t=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/models/processors/modelProcessPoints.ts | 72 +-------------------- 1 file changed, 2 insertions(+), 70 deletions(-) diff --git a/src/models/processors/modelProcessPoints.ts b/src/models/processors/modelProcessPoints.ts index 6a6e1d7..3e4d31e 100644 --- a/src/models/processors/modelProcessPoints.ts +++ b/src/models/processors/modelProcessPoints.ts @@ -1,4 +1,5 @@ import { ConfigBase } from "../config" +import { IPoint } from "../processItem" /** 处理器输入-- 获取造型在大板的刀路 */ export type ModelProcessPointsInput = { @@ -85,9 +86,7 @@ export enum FaceType { BACK = 1, } -/** 点坐标类 */ -export interface IPoint { x: number, y: number; } - + /** 小板的放置方式 */ export enum PositionType { /** 正面 */ @@ -111,71 +110,4 @@ export enum PositionType { /** 行为类型 */ export type RotationAction = 'doNothing' | 'turnLeft' | 'turnRight' | 'turnAround' -/** - * 原放置方式 依据 目标放置方式 转 行为的 转换关系 - * - * 注:原放置方式 为 翻面 转换后 的数值 - * 若要支持 翻转转换前 需对内容进一步填充 -*/ -export const transitions_PositionToAction: any = { - [PositionType.FRONT]: { - [PositionType.FRONT_TURN_BACK]: 'turnAround', - [PositionType.FRONT_TURN_LEFT]: 'turnLeft', - [PositionType.FRONT_TURN_RIGHT]: 'turnRight', - [PositionType.FRONT]: 'doNothing' - }, - [PositionType.FRONT_TURN_LEFT]: { - [PositionType.FRONT]: 'turnRight', - [PositionType.FRONT_TURN_RIGHT]: 'turnAround', - [PositionType.FRONT_TURN_BACK]: 'turnLeft', - [PositionType.FRONT_TURN_LEFT]: 'doNothing' - }, - [PositionType.FRONT_TURN_RIGHT]: { - [PositionType.FRONT]: 'turnLeft', - [PositionType.FRONT_TURN_LEFT]: 'turnAround', - [PositionType.FRONT_TURN_BACK]: 'turnRight', - [PositionType.FRONT_TURN_RIGHT]: 'doNothing' - }, - [PositionType.FRONT_TURN_BACK]: { - [PositionType.FRONT]: 'turnAround', - [PositionType.FRONT_TURN_LEFT]: 'turnRight', - [PositionType.FRONT_TURN_RIGHT]: 'turnLeft', - [PositionType.FRONT_TURN_BACK]: 'doNothing' - }, - [PositionType.BACK]: { - [PositionType.BACK_TURN_BACK]: 'turnAround', - [PositionType.BACK_TURN_LEFT]: 'turnLeft', - [PositionType.BACK_TURN_RIGHT]: 'turnRight', - [PositionType.BACK]: 'doNothing' - }, - [PositionType.BACK_TURN_LEFT]: { - [PositionType.BACK]: 'turnRight', - [PositionType.BACK_TURN_RIGHT]: 'turnAround', - [PositionType.BACK_TURN_BACK]: 'turnLeft', - [PositionType.BACK_TURN_LEFT]: 'doNothing' - }, - [PositionType.BACK_TURN_RIGHT]: { - [PositionType.BACK]: 'turnLeft', - [PositionType.BACK_TURN_LEFT]: 'turnAround', - [PositionType.BACK_TURN_BACK]: 'turnRight', - [PositionType.BACK_TURN_RIGHT]: 'doNothing' - }, - [PositionType.BACK_TURN_BACK]: { - [PositionType.BACK]: 'turnAround', - [PositionType.BACK_TURN_LEFT]: 'turnRight', - [PositionType.BACK_TURN_RIGHT]: 'turnLeft', - [PositionType.BACK_TURN_BACK]: 'doNothing' - } -} -/** 放置方式 翻转后的转换关系 */ -export const transitions_PositionTurnFace: any = { - [PositionType.FRONT]: PositionType.BACK, - [PositionType.FRONT_TURN_RIGHT]: PositionType.BACK_TURN_LEFT, - [PositionType.FRONT_TURN_BACK]: PositionType.BACK_TURN_BACK, - [PositionType.FRONT_TURN_LEFT]: PositionType.BACK_TURN_RIGHT, - [PositionType.BACK]: PositionType.FRONT, - [PositionType.BACK_TURN_BACK]: PositionType.FRONT_TURN_BACK, - [PositionType.BACK_TURN_LEFT]: PositionType.FRONT_TURN_RIGHT, - [PositionType.BACK_TURN_RIGHT]: PositionType.FRONT_TURN_LEFT -} \ No newline at end of file -- 2.49.1