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