feat: 提交

This commit is contained in:
2025-08-11 09:36:23 +08:00
parent 04cb7558d0
commit be7f3fffb4
3 changed files with 4918 additions and 70 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -41,15 +41,15 @@ export class ModelProcessPointsProc extends ProcessorBase<ModelProcessPointsInpu
* *
* 先处理放置方式 在处理 优化坐标 会简单很多 * 先处理放置方式 在处理 优化坐标 会简单很多
*/ */
let res = this.handleByPositionType(context.input.block, context.input.targetPosition)
let res1 = this.handleByPlaceXY(res.models, placeX, placeY)
res.models = res1 let resBlock = this.handleByPositionType(context.input.block, context.input.targetPosition)
let res1 = this.handleByPlaceXY(resBlock.models, placeX, placeY)
resBlock.models = res1
output.block = { output.block = {
...output.block, ...output.block,
...res, ...resBlock,
// positionType:context.input.targetPosition
} }
context.output = output context.output = output
resolve() resolve()
@@ -71,7 +71,7 @@ export class ModelProcessPointsProc extends ProcessorBase<ModelProcessPointsInpu
* 提要:models内的造型数据 都是以小板正面 为基准 * 提要:models内的造型数据 都是以小板正面 为基准
* 即 PositionType.FRONT * 即 PositionType.FRONT
* 需要 以下几种情况 * 需要 以下几种情况
* 加工项所在的面 -- 2种 正 反 * 加工项所在的面 -- 2种 正 反 -- 但实际 在改处理器应该是不考虑的
* 小板放置方式 -- 8 种 详见 PositionType 处理器入参 默认为 PositionType.FRONT * 小板放置方式 -- 8 种 详见 PositionType 处理器入参 默认为 PositionType.FRONT
* *
* 细节: * 细节:
@@ -102,19 +102,22 @@ export class ModelProcessPointsProc extends ProcessorBase<ModelProcessPointsInpu
let _width = block.width let _width = block.width
let _length = block.length let _length = block.length
let temp = JSON.parse(JSON.stringify(block))
let resBlock: ModelProcessPointsInputBlock = {
...temp
}
/** 默认 正面 */ /** 默认 正面 */
if (block.positionType == undefined) { if (resBlock.positionType == undefined) {
block.positionType = PositionType.FRONT resBlock.positionType = PositionType.FRONT
} }
//#region 板件 进行分析 翻面 以及 行为 //#region 板件 进行分析 翻面 以及 行为
let face = this.getFace(block.positionType) let face = this.getFace(resBlock.positionType)
let targetFace = this.getFace(targetPosition) let targetFace = this.getFace(targetPosition)
if (face == -1) { if (face == -1) {
// 异常情况 // 异常情况
console.log(`block-${block.id}:block.positionType is invalid`) console.log(`block-${resBlock.id}:block.positionType is invalid`)
} }
if (targetFace == -1) { if (targetFace == -1) {
// 异常情况 // 异常情况
@@ -124,12 +127,10 @@ export class ModelProcessPointsProc extends ProcessorBase<ModelProcessPointsInpu
const isTurn = !(face == targetFace) const isTurn = !(face == targetFace)
/** 翻面后的 放置方式 */ /** 翻面后的 放置方式 */
let tempPosition = block.positionType let tempPosition = resBlock.positionType
if(block.id =='25044454400'){
debugger
}
if (isTurn) { if (isTurn) {
tempPosition = this.getPositionAfterTurnFace(block.positionType) tempPosition = this.getPositionAfterTurnFace(resBlock.positionType)
} }
// 获取行为 左|右|翻转|不操作 // 获取行为 左|右|翻转|不操作
@@ -138,8 +139,8 @@ export class ModelProcessPointsProc extends ProcessorBase<ModelProcessPointsInpu
//#endregion //#endregion
// 处理造型的部分 // 处理造型的部分
for (const i in block.models) { for (const i in resBlock.models) {
let model = {...block.models[i]} let model = { ...resBlock.models[i] }
/** 如果要 翻面 那就先把面 翻过来 */ /** 如果要 翻面 那就先把面 翻过来 */
if (isTurn) { if (isTurn) {
// 翻面 x 不变 Y 变 // 翻面 x 不变 Y 变
@@ -178,17 +179,12 @@ export class ModelProcessPointsProc extends ProcessorBase<ModelProcessPointsInpu
models.push(model) models.push(model)
} }
let handleData = {
width: _width,
length: _length,
models,
positionType:targetPosition,
offsetInfo: block.offsetInfo
}
/** 左转 或者 右转 长宽值 要互换 */ /** 左转 或者 右转 长宽值 要互换 */
if (action == 'turnLeft' || action == 'turnRight') { if (action == 'turnLeft' || action == 'turnRight') {
handleData = { resBlock = {
...handleData, ...resBlock,
width: _length, width: _length,
length: _width, length: _width,
} }
@@ -197,37 +193,37 @@ export class ModelProcessPointsProc extends ProcessorBase<ModelProcessPointsInpu
/** 更加行为 以及是否 翻转 转换 板件的偏移值 */ /** 更加行为 以及是否 翻转 转换 板件的偏移值 */
if (isTurn) { if (isTurn) {
// 翻面 左右封边互换 上下不变 // 翻面 左右封边互换 上下不变
block.offsetInfo = { resBlock.offsetInfo = {
...block.offsetInfo, ...resBlock.offsetInfo,
top: block.offsetInfo.bottom, top: resBlock.offsetInfo.bottom,
bottom: block.offsetInfo.top bottom: resBlock.offsetInfo.top
} }
} }
switch (action) { switch (action) {
case 'turnAround': case 'turnAround':
// 翻转 // 翻转
block.offsetInfo = { resBlock.offsetInfo = {
top: block.offsetInfo.bottom, top: resBlock.offsetInfo.bottom,
bottom: block.offsetInfo.top, bottom: resBlock.offsetInfo.top,
left: block.offsetInfo.right, left: resBlock.offsetInfo.right,
right: block.offsetInfo.left right: resBlock.offsetInfo.left
} }
break; break;
case 'turnLeft': case 'turnLeft':
block.offsetInfo = { resBlock.offsetInfo = {
top: block.offsetInfo.right, top: resBlock.offsetInfo.right,
right: block.offsetInfo.bottom, right: resBlock.offsetInfo.bottom,
bottom: block.offsetInfo.left, bottom: resBlock.offsetInfo.left,
left: block.offsetInfo.top left: resBlock.offsetInfo.top
} }
break break
case 'turnRight': case 'turnRight':
block.offsetInfo = { resBlock.offsetInfo = {
top: block.offsetInfo.left, top: resBlock.offsetInfo.left,
left: block.offsetInfo.bottom, left: resBlock.offsetInfo.bottom,
bottom: block.offsetInfo.right, bottom: resBlock.offsetInfo.right,
right: block.offsetInfo.top right: resBlock.offsetInfo.top
} }
break break
default: default:
@@ -235,16 +231,16 @@ export class ModelProcessPointsProc extends ProcessorBase<ModelProcessPointsInpu
} }
return handleData return resBlock
} }
/** 获取翻面 后的 放置方式 */ /** 获取翻面 后的 放置方式 */
private getPositionAfterTurnFace(v: PositionType) { getPositionAfterTurnFace(v: PositionType) {
let res = transitions_PositionTurnFace[v] let res = transitions_PositionTurnFace[v]
return res return res
} }
/** 获取行为 左|右|翻转|不需要操作 */ /** 获取行为 左|右|翻转|不需要操作 */
private getDir(v1: PositionType, v2: PositionType) { getDir(v1: PositionType, v2: PositionType) {
let flag: RotationAction = 'doNothing' let flag: RotationAction = 'doNothing'
try { try {
flag = transitions_PositionToAction[v1][v2] flag = transitions_PositionToAction[v1][v2]
@@ -254,8 +250,11 @@ export class ModelProcessPointsProc extends ProcessorBase<ModelProcessPointsInpu
} }
return flag return flag
} }
/** 右转 */ /** 右转
private change_turnRight(model: ModelProcessItem, valueX: number, valueY: number) { * @param model 造型数据
* @param valueX 排版长
*/
change_turnRight(model: ModelProcessItem, valueX: number) {
let newModel = { ...model } let newModel = { ...model }
for (const i in newModel.pts) { for (const i in newModel.pts) {
newModel.pts[i] = { newModel.pts[i] = {
@@ -266,8 +265,11 @@ export class ModelProcessPointsProc extends ProcessorBase<ModelProcessPointsInpu
return newModel return newModel
} }
/** 左转 */ /** 左转
private change_turnLeft(model: ModelProcessItem, valueX: number, valueY: number) { * @param model 造型数据
* @param valueX 排版长
*/
change_turnLeft(model: ModelProcessItem, valueX: number) {
let newModel = { ...model } let newModel = { ...model }
for (const i in newModel.pts) { for (const i in newModel.pts) {
newModel.pts[i] = { newModel.pts[i] = {
@@ -277,8 +279,12 @@ export class ModelProcessPointsProc extends ProcessorBase<ModelProcessPointsInpu
} }
return newModel return newModel
} }
/** 翻转 改变 xy 坐标 */ /** 翻转 改变 xy 坐标
private change_turnAround(model: ModelProcessItem, valueX: number, valueY: number) { * @param model 造型数据
* @param valueX 排版长
* @param valueY 排版宽
*/
change_turnAround(model: ModelProcessItem, valueX: number, valueY: number) {
let newModel = { ...model } let newModel = { ...model }
for (const i in newModel.pts) { for (const i in newModel.pts) {
newModel.pts[i] = { newModel.pts[i] = {
@@ -292,7 +298,7 @@ export class ModelProcessPointsProc extends ProcessorBase<ModelProcessPointsInpu
/**翻面 改变 y坐标 */ /**翻面 改变 y坐标 */
private change_turnFace(model: ModelProcessItem, valueY: number) { change_turnFace(model: ModelProcessItem, valueY: number) {
let newModel = { ...model } let newModel = { ...model }
for (const i in newModel.pts) { for (const i in newModel.pts) {
newModel.pts[i].y = valueY - newModel.pts[i].y newModel.pts[i].y = valueY - newModel.pts[i].y
@@ -300,7 +306,7 @@ export class ModelProcessPointsProc extends ProcessorBase<ModelProcessPointsInpu
return newModel return newModel
} }
/** 给 弧度值 取反 */ /** 给 弧度值 取反 */
private reverseBuls(model: ModelProcessItem) { reverseBuls(model: ModelProcessItem) {
let newModel = { ...model } let newModel = { ...model }
for (const i in newModel.buls) { for (const i in newModel.buls) {
newModel.buls[i] = -newModel.buls[i] newModel.buls[i] = -newModel.buls[i]
@@ -308,21 +314,22 @@ export class ModelProcessPointsProc extends ProcessorBase<ModelProcessPointsInpu
return newModel return newModel
} }
/**正面的放置方式 集合*/ /**正面的放置方式 集合*/
private frontArr = [ frontArr = [
PositionType.FRONT, PositionType.FRONT,
PositionType.FRONT_TURN_BACK, PositionType.FRONT_TURN_BACK,
PositionType.FRONT_TURN_LEFT, PositionType.FRONT_TURN_LEFT,
PositionType.FRONT_TURN_RIGHT PositionType.FRONT_TURN_RIGHT
] ]
/** 反面的放置方式 集合*/ /** 反面的放置方式 集合*/
private backArr = [ backArr = [
PositionType.BACK, PositionType.BACK,
PositionType.BACK_TURN_BACK, PositionType.BACK_TURN_BACK,
PositionType.BACK_TURN_LEFT, PositionType.BACK_TURN_LEFT,
PositionType.BACK_TURN_RIGHT PositionType.BACK_TURN_RIGHT
] ]
/** 根据放置方式 获取面 */ /** 根据放置方式 获取面 */
private getFace(positionValue: PositionType) { getFace(positionValue: PositionType) {
let res = -1 let res = -1
if (this.frontArr.includes(positionValue)) { if (this.frontArr.includes(positionValue)) {
res = FaceType.FRONT res = FaceType.FRONT
@@ -338,10 +345,10 @@ export class ModelProcessPointsProc extends ProcessorBase<ModelProcessPointsInpu
handleByPlaceXY(models: ModelProcessItem[], placeX: number, placeY: number) { handleByPlaceXY(models: ModelProcessItem[], placeX: number, placeY: number) {
let newModels: ModelProcessItem[] = [] let newModels: ModelProcessItem[] = []
for (const model of models) { for (const model of models) {
let newModel:ModelProcessItem = {...model} let newModel: ModelProcessItem = { ...model }
let newPts = [] let newPts = []
for (const k in newModel.pts) { for (const k in newModel.pts) {
let p = { let p = {
x: model.pts[k].x + placeX, x: model.pts[k].x + placeX,
y: model.pts[k].y + placeY y: model.pts[k].y + placeY
} }
@@ -431,6 +438,7 @@ export interface ModelProcessItem {
} }
/** 加工面 */
export enum FaceType { export enum FaceType {
/** 正面 */ /** 正面 */
FRONT = 0, FRONT = 0,
@@ -438,8 +446,10 @@ export enum FaceType {
BACK = 1, BACK = 1,
} }
/** 点坐标类 */
export interface IPoint { x: number, y: number; } export interface IPoint { x: number, y: number; }
/** 小板的放置方式 */
export enum PositionType { export enum PositionType {
/** 正面 */ /** 正面 */
FRONT = 0, FRONT = 0,

View File

@@ -1 +1 @@
{"version":"3.2.4","results":[[":modelProcessPoints.test.ts",{"duration":7.6438000202178955,"failed":false}]]} {"version":"3.2.4","results":[[":modelProcessPoints.test.ts",{"duration":3100989.710500002,"failed":true}]]}