feat: 提交
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -1,541 +0,0 @@
|
|||||||
import { ConfigBase, ProcessorBase, ProcessorContext } from "cut-abstractions";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取造型在开料大板的坐标
|
|
||||||
*
|
|
||||||
* 输入的造型数据为 要处理的造型数据
|
|
||||||
*/
|
|
||||||
export class ModelProcessPointsProc extends ProcessorBase<ModelProcessPointsInput, ModelProcessPointsOutput, ModelProcessPointsProcConfig> {
|
|
||||||
get name(): string {
|
|
||||||
return 'ModelProcessPoints';
|
|
||||||
}
|
|
||||||
get version(): string {
|
|
||||||
return '1.0.0';
|
|
||||||
}
|
|
||||||
exec(context: ProcessorContext<ModelProcessPointsInput, ModelProcessPointsOutput, ModelProcessPointsProcConfig>): Promise<void> | void {
|
|
||||||
return new Promise(async (resolve, reject) => {
|
|
||||||
try {
|
|
||||||
if (context.input) {
|
|
||||||
if (context.input.block) {
|
|
||||||
// if (Array.isArray(context.input.block.models) && context.input.block.models.length > 0) {
|
|
||||||
/** 板件的坐标X */
|
|
||||||
let placeX = context.input.block.x
|
|
||||||
/** 板件的坐标Y */
|
|
||||||
let placeY = context.input.block.y
|
|
||||||
|
|
||||||
let output: ModelProcessPointsOutput = {
|
|
||||||
block: {
|
|
||||||
id: context.input.block.id,
|
|
||||||
positionType: context.input.block.positionType || 0,
|
|
||||||
models: [],
|
|
||||||
width: context.input.block.width,
|
|
||||||
length: context.input.block.length,
|
|
||||||
offsetInfo: context.input.block.offsetInfo
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 提要:
|
|
||||||
* 1、这里的造型数据 都是 基于板件(小板)的正面的点阵数据
|
|
||||||
* 2、坐标转换 依据2个要素进行转换 【板件(小板)的优化坐标】 和 【板件(小板)的放置方式】
|
|
||||||
*
|
|
||||||
* 先处理放置方式 在处理 优化坐标 会简单很多
|
|
||||||
*/
|
|
||||||
|
|
||||||
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,
|
|
||||||
...resBlock,
|
|
||||||
}
|
|
||||||
context.output = output
|
|
||||||
resolve()
|
|
||||||
} else {
|
|
||||||
reject('ModelProcessPoints error: input.block is undefined;')
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
reject('ModelProcessPoints error: input is undefined;')
|
|
||||||
}
|
|
||||||
resolve()
|
|
||||||
} catch (error) {
|
|
||||||
reject(error);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 根据小板的放置方式进行偏移
|
|
||||||
*
|
|
||||||
* 提要:models内的造型数据 都是以小板正面 为基准
|
|
||||||
* 即 PositionType.FRONT
|
|
||||||
* 需要 以下几种情况
|
|
||||||
* 加工项所在的面 -- 2种 正 反 -- 但实际 在改处理器应该是不考虑的
|
|
||||||
* 小板放置方式 -- 8 种 详见 PositionType 处理器入参 默认为 PositionType.FRONT
|
|
||||||
*
|
|
||||||
* 细节:
|
|
||||||
* 加工项 为正面 且放置方式为正面的 无需操作 直接输出,其它情况 都需要做处理
|
|
||||||
*
|
|
||||||
* 如果有 翻面的情况 弧度值需要取反
|
|
||||||
*
|
|
||||||
* 思考: 坐标转换的实质 其实 也就是以下几种行为
|
|
||||||
* 面与面的行为: 翻面(a 面到 b 面 )
|
|
||||||
* 单面内的行为: 左转 右转 翻转
|
|
||||||
*
|
|
||||||
* 这里其实 可以有个流程
|
|
||||||
* 先判定 是不是要 翻面
|
|
||||||
* 然后再去 做 单面内的行为 相关的坐标转换 将问题集中在一个面的操作上
|
|
||||||
*
|
|
||||||
* PositionType XXX 转到 PositionType XX 无非就是 【左转 或 右转 或 翻转】 或者 先 翻面 然后 【左转 或 右转 或 翻转】
|
|
||||||
* 那么 就
|
|
||||||
* 有翻面 先 翻面 然后 再 【左| 右 | 翻】 转
|
|
||||||
*
|
|
||||||
* 注: 这里的操作 都依据绘图可视的X Y 轴进行处理
|
|
||||||
* block.width 对应 Y轴的值
|
|
||||||
* block.length 对应 x轴的值
|
|
||||||
*/
|
|
||||||
handleByPositionType(block: ModelProcessPointsInputBlock, targetPosition: PositionType) {
|
|
||||||
|
|
||||||
let _width = block.width
|
|
||||||
|
|
||||||
let _length = block.length
|
|
||||||
let temp = JSON.parse(JSON.stringify(block))
|
|
||||||
let resBlock: ModelProcessPointsInputBlock = {
|
|
||||||
...temp
|
|
||||||
}
|
|
||||||
/** 默认 正面 */
|
|
||||||
if (resBlock.positionType == undefined) {
|
|
||||||
resBlock.positionType = PositionType.FRONT
|
|
||||||
}
|
|
||||||
|
|
||||||
//#region 板件 进行分析 翻面 以及 行为
|
|
||||||
let face = this.getFace(resBlock.positionType)
|
|
||||||
let targetFace = this.getFace(targetPosition)
|
|
||||||
|
|
||||||
if (face == -1) {
|
|
||||||
// 异常情况
|
|
||||||
console.log(`block-${resBlock.id}:block.positionType is invalid`)
|
|
||||||
}
|
|
||||||
if (targetFace == -1) {
|
|
||||||
// 异常情况
|
|
||||||
console.log(`targetFace:targetFace is invalid`)
|
|
||||||
}
|
|
||||||
// 判定是否要翻面
|
|
||||||
const isTurn = !(face == targetFace)
|
|
||||||
|
|
||||||
/** 翻面后的 放置方式 */
|
|
||||||
let tempPosition = resBlock.positionType
|
|
||||||
|
|
||||||
if (isTurn) {
|
|
||||||
tempPosition = this.getPositionAfterTurnFace(resBlock.positionType)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取行为 左|右|翻转|不操作
|
|
||||||
const action = this.getDir(tempPosition, targetPosition)
|
|
||||||
|
|
||||||
//#endregion
|
|
||||||
|
|
||||||
// 处理造型的部分
|
|
||||||
/** 造型输出的数据 */
|
|
||||||
let models: ModelProcessItem[] = []
|
|
||||||
|
|
||||||
for (const i in resBlock.models) {
|
|
||||||
let model = { ...resBlock.models[i] }
|
|
||||||
/** 如果要 翻面 那就先把面 翻过来 */
|
|
||||||
if (isTurn) {
|
|
||||||
// 翻面 x 不变 Y 变
|
|
||||||
model = this.change_turnFace(model, _width)
|
|
||||||
// 然后 弧度值要取反
|
|
||||||
model = this.reverseBuls(model)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据 行为标识 转换坐标
|
|
||||||
* 注: 左转 或者时右转 需要 转换 板件(小板)的 长宽值
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
switch (action) {
|
|
||||||
case 'doNothing':
|
|
||||||
// 啥事也不做
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'turnAround':
|
|
||||||
// 翻转 x 变 y 也变
|
|
||||||
model = this.change_turnAround(model, _length, _width)
|
|
||||||
break;
|
|
||||||
case 'turnLeft':
|
|
||||||
|
|
||||||
model = this.change_turnLeft(model, _length)
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'turnRight':
|
|
||||||
model = this.change_turnRight(model, _length)
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
models.push(model)
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 左转 或者 右转 长宽值 要互换 */
|
|
||||||
if (action == 'turnLeft' || action == 'turnRight') {
|
|
||||||
resBlock = {
|
|
||||||
...resBlock,
|
|
||||||
width: _length,
|
|
||||||
length: _width,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 更加行为 以及是否 翻转 转换 板件的偏移值 */
|
|
||||||
if (isTurn) {
|
|
||||||
// 翻面 左右封边互换 上下不变
|
|
||||||
resBlock.offsetInfo = {
|
|
||||||
...resBlock.offsetInfo,
|
|
||||||
top: resBlock.offsetInfo.bottom,
|
|
||||||
bottom: resBlock.offsetInfo.top
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (action) {
|
|
||||||
case 'turnAround':
|
|
||||||
// 翻转
|
|
||||||
resBlock.offsetInfo = {
|
|
||||||
top: resBlock.offsetInfo.bottom,
|
|
||||||
bottom: resBlock.offsetInfo.top,
|
|
||||||
left: resBlock.offsetInfo.right,
|
|
||||||
right: resBlock.offsetInfo.left
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'turnLeft':
|
|
||||||
resBlock.offsetInfo = {
|
|
||||||
top: resBlock.offsetInfo.right,
|
|
||||||
right: resBlock.offsetInfo.bottom,
|
|
||||||
bottom: resBlock.offsetInfo.left,
|
|
||||||
left: resBlock.offsetInfo.top
|
|
||||||
}
|
|
||||||
break
|
|
||||||
case 'turnRight':
|
|
||||||
resBlock.offsetInfo = {
|
|
||||||
top: resBlock.offsetInfo.left,
|
|
||||||
left: resBlock.offsetInfo.bottom,
|
|
||||||
bottom: resBlock.offsetInfo.right,
|
|
||||||
right: resBlock.offsetInfo.top
|
|
||||||
}
|
|
||||||
break
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return resBlock
|
|
||||||
}
|
|
||||||
/** 获取翻面 后的 放置方式 */
|
|
||||||
getPositionAfterTurnFace(v: PositionType) {
|
|
||||||
let res = transitions_PositionTurnFace[v]
|
|
||||||
|
|
||||||
return res
|
|
||||||
}
|
|
||||||
/** 获取行为 左|右|翻转|不需要操作 */
|
|
||||||
getDir(v1: PositionType, v2: PositionType) {
|
|
||||||
let flag: RotationAction = 'doNothing'
|
|
||||||
try {
|
|
||||||
flag = transitions_PositionToAction[v1][v2]
|
|
||||||
} catch (error) {
|
|
||||||
console.log('逻辑异常!请保证 v1 v2 的放置方式处在同一个面上,或者输入的值在转换关系中没有匹配的值')
|
|
||||||
flag = 'doNothing'
|
|
||||||
}
|
|
||||||
return flag
|
|
||||||
}
|
|
||||||
/** 右转
|
|
||||||
* @param model 造型数据
|
|
||||||
* @param valueX 排版长
|
|
||||||
*/
|
|
||||||
change_turnRight(model: ModelProcessItem, valueX: number) {
|
|
||||||
let newModel = { ...model }
|
|
||||||
for (const i in newModel.pts) {
|
|
||||||
newModel.pts[i] = {
|
|
||||||
x: valueX - newModel.pts[i].y,
|
|
||||||
y: newModel.pts[i].x
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return newModel
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 左转
|
|
||||||
* @param model 造型数据
|
|
||||||
* @param valueX 排版长
|
|
||||||
*/
|
|
||||||
change_turnLeft(model: ModelProcessItem, valueX: number) {
|
|
||||||
let newModel = { ...model }
|
|
||||||
for (const i in newModel.pts) {
|
|
||||||
newModel.pts[i] = {
|
|
||||||
x: newModel.pts[i].y,
|
|
||||||
y: valueX - newModel.pts[i].x
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return newModel
|
|
||||||
}
|
|
||||||
/** 翻转 改变 xy 坐标
|
|
||||||
* @param model 造型数据
|
|
||||||
* @param valueX 排版长
|
|
||||||
* @param valueY 排版宽
|
|
||||||
*/
|
|
||||||
change_turnAround(model: ModelProcessItem, valueX: number, valueY: number) {
|
|
||||||
let newModel = { ...model }
|
|
||||||
for (const i in newModel.pts) {
|
|
||||||
newModel.pts[i] = {
|
|
||||||
x: valueX - newModel.pts[i].x,
|
|
||||||
y: valueY - newModel.pts[i].y
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return newModel
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**翻面 改变 y坐标 */
|
|
||||||
change_turnFace(model: ModelProcessItem, valueY: number) {
|
|
||||||
let newModel = { ...model }
|
|
||||||
for (const i in newModel.pts) {
|
|
||||||
newModel.pts[i].y = valueY - newModel.pts[i].y
|
|
||||||
}
|
|
||||||
return newModel
|
|
||||||
}
|
|
||||||
/** 给 弧度值 取反 */
|
|
||||||
reverseBuls(model: ModelProcessItem) {
|
|
||||||
let newModel = { ...model }
|
|
||||||
for (const i in newModel.buls) {
|
|
||||||
newModel.buls[i] = -newModel.buls[i]
|
|
||||||
}
|
|
||||||
return newModel
|
|
||||||
}
|
|
||||||
/**正面的放置方式 集合*/
|
|
||||||
frontArr = [
|
|
||||||
PositionType.FRONT,
|
|
||||||
PositionType.FRONT_TURN_BACK,
|
|
||||||
PositionType.FRONT_TURN_LEFT,
|
|
||||||
PositionType.FRONT_TURN_RIGHT
|
|
||||||
]
|
|
||||||
|
|
||||||
/** 反面的放置方式 集合*/
|
|
||||||
backArr = [
|
|
||||||
PositionType.BACK,
|
|
||||||
PositionType.BACK_TURN_BACK,
|
|
||||||
PositionType.BACK_TURN_LEFT,
|
|
||||||
PositionType.BACK_TURN_RIGHT
|
|
||||||
]
|
|
||||||
/** 根据放置方式 获取面 */
|
|
||||||
getFace(positionValue: PositionType) {
|
|
||||||
let res = -1
|
|
||||||
if (this.frontArr.includes(positionValue)) {
|
|
||||||
res = FaceType.FRONT
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.backArr.includes(positionValue)) {
|
|
||||||
res = FaceType.BACK
|
|
||||||
}
|
|
||||||
return res
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 根据 优化后的坐标XY偏移 */
|
|
||||||
handleByPlaceXY(models: ModelProcessItem[], placeX: number, placeY: number) {
|
|
||||||
let newModels: ModelProcessItem[] = []
|
|
||||||
for (const model of models) {
|
|
||||||
let newModel: ModelProcessItem = { ...model }
|
|
||||||
let newPts = []
|
|
||||||
for (const k in newModel.pts) {
|
|
||||||
let p = {
|
|
||||||
x: model.pts[k].x + placeX,
|
|
||||||
y: model.pts[k].y + placeY
|
|
||||||
}
|
|
||||||
newPts.push(p)
|
|
||||||
}
|
|
||||||
newModel.pts = newPts
|
|
||||||
newModels.push(newModel)
|
|
||||||
}
|
|
||||||
|
|
||||||
return newModels
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/** 处理器输入-- 获取造型在大板的刀路 */
|
|
||||||
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
|
|
||||||
}
|
|
Reference in New Issue
Block a user