From fbb9de77f945b4779be6fdcc03ee9abd971def45 Mon Sep 17 00:00:00 2001 From: "2817212736@qq.com" <2817212736@qq.com> Date: Wed, 30 Jul 2025 17:27:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E"=E6=9C=BA=E5=8F=B0=E5=8A=A0?= =?UTF-8?q?=E5=B7=A5=E9=A1=B9"=20ProcessItem=E7=B1=BB=E5=9E=8B=EF=BC=8C?= =?UTF-8?q?=E7=A7=BB=E9=99=A4samples=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- .../businessCapability/blockDetailHelper.ts | 152 - .../businessRectOptimizeMachine.ts | 283 - samples/businessCapability/业务功能目录.md | 0 samples/confClass.ts | 2762 -- samples/demoDataHandleServer.ts | 33 - samples/demoDatahandle/demoDataHandle1.ts | 75 - samples/demoDatahandle/demoDataHandle2.ts | 18 - samples/demoKnives.ts | 112 - samples/demoParser.ts | 126 - samples/gcodes.ts | 528 - .../RectOptimizeWorker/RectOptimizeMachine.ts | 1746 - .../RectOptimizeWorkerWorker.ts | 66 - .../handleAbility/RectOptimizeWorker/bang.ts | 115 - .../RectOptimizeWorker/新优化.md | 1 - samples/handleAbility/ability_1.ts | 13 - .../handleAbility/blockDetailHelperBase.ts | 132 - samples/handleAbility/blockHelper.ts | 4 - samples/handleAbility/common/ArrayExt.ts | 392 - samples/handleAbility/common/Box2.ts | 183 - samples/handleAbility/common/ClipperCpp.ts | 25 - samples/handleAbility/common/Filer.ts | 31 - .../common/LayoutEngine/Curves2Parts.ts | 255 - .../common/LayoutEngine/PolylineHelper.ts | 369 - .../common/LayoutEngine/Simplify2.ts | 85 - samples/handleAbility/common/Point.ts | 5 - samples/handleAbility/common/Util.ts | 38 - samples/handleAbility/common/Vector2.ts | 335 - samples/handleAbility/common/base/CAD.ts | 1625 - .../handleAbility/common/base/StringFormat.ts | 126 - samples/handleAbility/common/core/Path.ts | 381 - samples/handleAbility/common/工具类.md | 0 samples/handleAbility/knifeHelper.ts | 202 - samples/handleAbility/基础功能目录.md | 2 - samples/moduleManager/module1.ts | 262 - samples/moduleManager/res1.json | 29615 ---------------- src/models/processItem.ts | 27 + 37 files changed, 28 insertions(+), 40098 deletions(-) delete mode 100644 samples/businessCapability/blockDetailHelper.ts delete mode 100644 samples/businessCapability/businessRectOptimizeMachine.ts delete mode 100644 samples/businessCapability/业务功能目录.md delete mode 100644 samples/confClass.ts delete mode 100644 samples/demoDataHandleServer.ts delete mode 100644 samples/demoDatahandle/demoDataHandle1.ts delete mode 100644 samples/demoDatahandle/demoDataHandle2.ts delete mode 100644 samples/demoKnives.ts delete mode 100644 samples/demoParser.ts delete mode 100644 samples/gcodes.ts delete mode 100644 samples/handleAbility/RectOptimizeWorker/RectOptimizeMachine.ts delete mode 100644 samples/handleAbility/RectOptimizeWorker/RectOptimizeWorkerWorker.ts delete mode 100644 samples/handleAbility/RectOptimizeWorker/bang.ts delete mode 100644 samples/handleAbility/RectOptimizeWorker/新优化.md delete mode 100644 samples/handleAbility/ability_1.ts delete mode 100644 samples/handleAbility/blockDetailHelperBase.ts delete mode 100644 samples/handleAbility/blockHelper.ts delete mode 100644 samples/handleAbility/common/ArrayExt.ts delete mode 100644 samples/handleAbility/common/Box2.ts delete mode 100644 samples/handleAbility/common/ClipperCpp.ts delete mode 100644 samples/handleAbility/common/Filer.ts delete mode 100644 samples/handleAbility/common/LayoutEngine/Curves2Parts.ts delete mode 100644 samples/handleAbility/common/LayoutEngine/PolylineHelper.ts delete mode 100644 samples/handleAbility/common/LayoutEngine/Simplify2.ts delete mode 100644 samples/handleAbility/common/Point.ts delete mode 100644 samples/handleAbility/common/Util.ts delete mode 100644 samples/handleAbility/common/Vector2.ts delete mode 100644 samples/handleAbility/common/base/CAD.ts delete mode 100644 samples/handleAbility/common/base/StringFormat.ts delete mode 100644 samples/handleAbility/common/core/Path.ts delete mode 100644 samples/handleAbility/common/工具类.md delete mode 100644 samples/handleAbility/knifeHelper.ts delete mode 100644 samples/handleAbility/基础功能目录.md delete mode 100644 samples/moduleManager/module1.ts delete mode 100644 samples/moduleManager/res1.json create mode 100644 src/models/processItem.ts diff --git a/package.json b/package.json index da1005c..befc479 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cut-abstractions", - "version": "0.1.13", + "version": "0.1.14", "description": "", "files": [ "dist/**/*" diff --git a/samples/businessCapability/blockDetailHelper.ts b/samples/businessCapability/blockDetailHelper.ts deleted file mode 100644 index 9304a1a..0000000 --- a/samples/businessCapability/blockDetailHelper.ts +++ /dev/null @@ -1,152 +0,0 @@ -import { FaceType, PlaceBlock, PlaceBlockDetail, PlaceBorderContour, PlaceMaterial, PlaceStyle, SizeExpand } from "../confClass" -import { BlockDetailHelperBase } from "../handleAbility/blockDetailHelperBase" -import { PolylineHelper } from "../handleAbility/common/LayoutEngine/PolylineHelper" -import { KnifeHelper } from "../handleAbility/knifeHelper" - - -/** 小板明细 相关的计算 孔 造型 以及轮廓 */ -export class BlockDetailHelper extends BlockDetailHelperBase { - /** 预铣(板件外扩)值 */ - preMillingSize = 0; - - constructor(config?: any) { - super() - if(config){ - this.updateConfig(config) - } - } - updateConfig(config) { - if (config) { - let keys = Object.keys(config) - for (const key of keys) { - if (Reflect.has(this, key)) { - this[key] = config[key] - } - } - } - - } - /** 小板初始化:1各种轮廓|走刀路径|,2尺寸扩展后的轮廓与走刀路径 */ - initBlock(block: PlaceBlock, pm: PlaceMaterial) { - if (block.blockDetail == null) { - // 异常情况 - console.error(`【initBlock()】${block.blockNo}没用板件明细,请检查`); - return - } - if (block.blockDetail.borderContour) return // 已初始化 - - // const pm = block.placeMaterial - - const bd = block.blockDetail - - if (pm == null) { - return // 异常 - } - const cutKnifeR = pm.diameter / 2 - const cutGap = pm.cutKnifeGap - // 开料偏移值 ,矩形波倒角 - bd.offsetKnifeRadius = pm.diameter / 2 - bd.isOffsetRounding = true // 默认要倒角 - bd.preMillingSize = pm.preMillingSize - - if (bd.points.length == 0) // 矩形板,设置不倒角 - { - bd.isOffsetRounding = false// sysConfig.RegularBlockFilletCurve; - } - else // 异形板 - { - // 异形板倒角 - bd.isOffsetRounding = true // sysConfig.isUnRegularBlockChamfer - } - - // 初始化 小板基础轮廓 - // 1.原始轮廓,成品轮廓 - - const border_final = this.createFinalBorder(bd, block) - // 2.开料轮廓 <不含预铣> - const border_org = this.createOrgBorder(bd) - - bd.borderContour = new PlaceBorderContour(PlaceStyle.FRONT, border_final, border_org) - - // 3.开料轮廓_带预铣, 外扩尺寸 - bd.borderContour.borderPreMilling = border_org - bd.preMillingExpandSize = new SizeExpand() - // console.log('开料轮廓_带预铣, 外扩尺寸', block, bd.preMillingExpandSize, sysConfig.preMillingSize) - if (this.preMillingSize > 0.0001) { - const rt = this.creatOrgBorderWithPrevCut(block, border_org, this.sysConfig.preMillingSize) - bd.borderContour.borderPreMilling = rt.newBorders - bd.preMillingExpandSize = rt.newSizeExpand - // console.log('开料轮廓_带预铣, 外扩尺寸==》after', block, rt.newSizeExpand) - } - - // 4. 板内走刀路径,板内空间 - const innerGroup = this.analyeInners(bd, cutKnifeR, cutGap) - - bd.borderContour.borderModelThrough = innerGroup.borders_inner_org - bd.borderContour.borderModelThroughR = innerGroup.borders_inner_r - bd.borderContour.cutLinesModelThrough = innerGroup.borders_inner_cut - bd.borderContour.borderInnerPlace = innerGroup.borders_inner_place - bd.borderContour.blockInnerSpace = innerGroup.spaces - - // 5 造型外扩轮廓, 外扩尺寸 - const { pls_model, sizeout: sizeout_model } = this.createPolyline_model(block) - bd.borderContour.polylinesOutModel = pls_model - bd.modelExpandSize = sizeout_model - - // 6. 2V刀路 外扩轮廓,外扩尺寸 - const { pls_2v, sizeout_2v } = this.createPolyline_2vModel(block) - bd.borderContour.polylines2vModel = pls_2v - bd.vKnifeModelExpandSize = sizeout_2v - - // 7.同刀辅助 外扩尺寸 - let isUseSameKnifeToHelpCut = this.sysConfig.helpCutStyle || 0 - let useSameKnifeToHelpCutGap = this.sysConfig.helpCutGap || 0 - const isSameKnifeToCut = isUseSameKnifeToHelpCut && useSameKnifeToHelpCutGap > 0 - if (isSameKnifeToCut == false || bd.isUseSameKnifeToHelpCut == false) { - // 未启动同刀辅助, 或 该小板 不需要同刀辅助 - bd.useSameKnifeToHelpCutGap = 0 - bd.sameKnfieHelpExpandSize = new SizeExpand() - } - else { - const gap = useSameKnifeToHelpCutGap - bd.useSameKnifeToHelpCutGap = gap - bd.sameKnfieHelpExpandSize = new SizeExpand({ left: gap, right: gap, under: gap, upper: gap }) - } - // 2V刀路,预洗,同刀辅助开料,出板造型刀 - this.resetBlock(block, pm) - } - - /** 二维刀路初始化 */ - init2VModel(blockDetail: PlaceBlockDetail, isCNC = false, _knifeHelper: KnifeHelper) { - for (let model of blockDetail.models) { - if (!model.isVKnifeModel) - continue - let vModels: any = [] - model.VLines = vModels - let isFaceB = model.face == FaceType.BACK - if (model.pointList.length < 1) - continue - let ps = model.pointList.map((t) => { return { x: t.pointX, y: t.pointY, bul: t.curve } }) - let pl = PolylineHelper.create(ps) - if (model.VLines?.length > 0) - return // 已经分析了 - model.VLines = [] - for (let os of model.offsetList) { - let knife1 = isCNC ? null : _knifeHelper.getModelKnifeByName(os.name) // getModelKnifeByName(os.name) - let knifeR = os.radius - let knifeId = knife1 ? knife1.knifeId : -1 - try { - let vps_1 = PolylineHelper.getVModelPoints_offset(pl, os.offset, os.depth, os.angle) - let vLine = { isFaceB, name: os.name, value: os.offset, knife: knife1, knifeId, knifeRadius: knifeR, depth: os.depth, points: vps_1, offset: os } - vModels.push(vLine) // 偏移路径 - model.VLines.push(vLine) - } - catch (err) { - console.log('v型刀走刀路径算法出错。' + err) - } - } - model.VLines = vModels - } - } - -} \ No newline at end of file diff --git a/samples/businessCapability/businessRectOptimizeMachine.ts b/samples/businessCapability/businessRectOptimizeMachine.ts deleted file mode 100644 index 0cc5982..0000000 --- a/samples/businessCapability/businessRectOptimizeMachine.ts +++ /dev/null @@ -1,283 +0,0 @@ -import { ConfigBase } from "../../src/models/config"; -import { confItem, HoleArrange, Knife, PlaceBlock, PlaceBlockDetail, PlaceMaterial } from "../confClass"; -import { Big_bang, ComposingType, LineType, WorkerItemType, xbang } from "../handleAbility/RectOptimizeWorker/bang"; - - -/** 配置列表 */ -export const confList: confItem[] = [ - { - key: 'isCutProcess', - label: '开料机(雕刻机)加工', - value: true - }, - { - key: 'isCutAndCNCProcess', - label: '开料机CNC组合', - value: false - }, - { - key: 'isCustomized', - label: '定制加工', - value: false - }, - { - key: 'cutBoardBorder', - label: '总修边宽度', - value: 3 - }, - { - key: 'blockKnifeLineSpacing', - label: '刀路间距', - value: 0 - }, - { - key: 'isDoubleFaceBlockFirst', - label: '双面开料优先排版', - value: true - }, - { - key: 'isRectPlace', - label: '新优化规则排版', - value: false - }, - { - // yuLiaoBoardDo2FaceBlock - key: 'isDoubleFaceBlockInRemain', - label: '余料板允许排入双面加工的小板', - value: true - }, -] -/** - * 新优化 - * 调用流程 - * 1、准备工作 加载配置 + 加载刀库 + 设置 回调函数 - * 2、调用 startPlaceThreed - * 入参:data (数据源 必须包含 小板数据列表和小板明细数据列表) - * pm 优化的材质 - * pm.diameter = knife?.diameter - pm.cutKnifeName = knife.knifeName - */ -export class BusinessRectOptimizeMachine extends ConfigBase { - /** 多线程数据集 */ - workerList: WorkerItemType[] = [] - - /** 优化回调 */ - placeCallBack: Function = () => { } - constructor() { - super() - - - } - /** 设置优化回调 */ - setPlaceTaskCallBackFun(func: Function) { - this.placeCallBack = func - } - /**开始优化线程 输入的数据没有初始化 - * @param data 数据源 包含小板列表和小板明细列表 data内需要包含blockList(小板列表) 和 blockDetailList(小板明细列表) - * @param pm 优化的材质 包含该材质的可用开料大板信息 需包含开料刀的信息 pm.diameter pm.cutKnifeName - */ - startPlaceThreed(data, pm: PlaceMaterial) { - let { blockList, blockDetailList } = data - let bList: any = [] - - blockList.map(e => { - if (e.goodsId == pm.goodsId) { - bList[e.blockNo] = e - let detail = blockDetailList.find(x => x.blockId == e.blockId) - if (!Reflect.has(bList[e.blockNo], 'blockDetail')) { - bList[e.blockNo].blockDetail = new PlaceBlockDetail(detail) - } - // bList[e.blockNo].isTurnFaceToPlace = !this.getDoFace(bList[e.blockNo], this.processMode()) - // 是否翻面后续处理 - bList[e.blockNo].isTurnFaceToPlace = true - pm.blockList.push(e) - } - }) - pm.cutBorder = this.cutBoardBorder - pm.cutKnifeGap = this.blockKnifeLineSpacing - - /** 小板 */ - let bans: xbang[] = [] - - // 实际开料大板的列表 - let big_Bang: Big_bang[] = [] - let big_BangSL: number[] = [] - - - let border = this.cutBoardBorder - let borderOff = (pm.diameter + pm.cutKnifeGap) / 2 - - // 余料板 以及实际开料大板 - for (const cuttingBoard of pm.remainBoardList) { - big_Bang.push({ w: cuttingBoard.width - border * 2 + borderOff * 2, l: cuttingBoard.length - border * 2 + borderOff * 2, x: border - borderOff, y: border - borderOff }) - big_BangSL.push(cuttingBoard.count || 999) - } - // big_Bang = [] - // big_BangSL = [] - // 母板 兜底的 - big_Bang.push({ w: pm.width - border * 2 + borderOff * 2, l: pm.length - border * 2 + borderOff * 2, x: border - borderOff, y: border - borderOff }) - // 生成小板 - for (let key in bList) { - let b = bList[key] - - let bid = b.blockNo - - let width = b.placeFullWidth - let length = b.placeFullLength - let line = this.toLine(b.texture) - - bans.push({ - l: length, - w: width, - line, - face: this.toface(b), - id: bid, - bno: b.blockNo, - holeFaceCount: 3, - isRect: !b.isUnRegular, - hasHole: false, - isdtwosided: true, - }) - } - - let bestCount = 0 - if (bans.length == 0) // 没有板了 - { - let best = [] - let yl: Big_bang[] = [] - let fit = 0 - let resObj = { - data: { bList, best, yl, fit, bans, width: pm.width, length: pm.length, bestCount: bestCount++, pm }, - info: { - times: -1, - type: 'noBan' - } - } - this.placeCallBack(resObj) - return - } - let xyhcs = 50 - if (bans.length > 1000) { xyhcs = 40 } - else if (bans.length > 1500) { xyhcs = 30 } - else if (bans.length > 2000) { xyhcs = 25 } - else if (bans.length > 4000) { xyhcs = 20 } - else if (bans.length > 6000) { xyhcs = 15 } - else if (bans.length > 10000) { xyhcs = 10 } - else if (bans.length > 15000) { xyhcs = 5 } - else if (bans.length > 20000) { xyhcs = 1 } - let isDoubleFaceBlockFirst = this.isDoubleFaceBlockFirst // 双面加工排前面 - let gap = this.blockKnifeLineSpacing - // this.bestfit = 0 - - for (let j = 0; j < 1; j++) { - - let w = new Worker(new URL('../handleAbility/RectOptimizeWorker/RectOptimizeWorker.worker', import.meta.url), { type: 'module' }) - const data = { - type: 'start', - data: [bans, big_Bang, big_BangSL, xyhcs, isDoubleFaceBlockFirst, gap, this.isRectPlace, this.isDoubleFaceBlockInRemain], - } - let item: WorkerItemType = { - w: w, - goodsId: pm.goodsId, - pm, - status: 'start' - } - if (this.workerList.findIndex(e => e.goodsId == item.goodsId) == -1) { - this.workerList.push(item) - } - - - let workItem = this.workerList.find(e => e.goodsId == pm.goodsId) - if (workItem && workItem != undefined) { - workItem.w?.postMessage(data) - - workItem.w.onmessage = async (d) => { - let [best, yl, fit, info] = d.data as [any[], Big_bang[], number, any] - - switch (info.type) { - case 'loop': - let resObj = { - data: { bList, best, yl, fit, bans, width: pm.width, length: pm.length, bestCount: bestCount++, pm }, - info - } - this.placeCallBack(resObj) - break; - case 'stop': - console.error('stop =》dataHandleBase', info, this.workerList) - this.terminateWorker({ goodsId: pm.goodsId }) - break; - case 'isStop': - // console.error('isStop', info) - break; - default: - break; - } - - } - } - - console.log('新算法线程启动', pm.goodsId, this.workerList) - } - } - /** 停止优化 */ - async stopPlaceTask() { - - for (const key in this.workerList) { - await this.terminateWorker({ key }) - - } - } - /** - * 获取加工面 - * @param block - * @param processMode - * @returns - */ - getDoFace(block: PlaceBlock, processMode: number = 0): boolean { - // 模式0: 开料机处理排钻, 造型, 采用大孔面作为正面的模式. 正面多加工, cnc多加工 - if (processMode == 0) { - // 先考虑 设计开料面 - if (block.placeHole == HoleArrange.FRONT) - return true - if (block.placeHole == HoleArrange.BACK) - return false - // 造型单面 作为开料面 - if (block.modelCountFront() > 0 && block.modelCountBack() == 0) - return true - if (block.modelCountFront() == 0 && block.modelCountBack() > 0) - return false - - // 优先考虑 大孔面 多孔面 - return this.getHoleFaceMore(block) - } else { - return false - } - } - processMode() { - let processMode = 0; - if (this.isCutProcess) processMode = 0; - if (this.isCutAndCNCProcess) processMode = 1; - if (this.isCustomized) processMode = 2; - return processMode; - } - /** - * 正纹 = 0, 可翻转 = 1, 反纹 = 2; - * 正文 Positive = 0, 反纹 Reverse = 1, 可翻转 CanReversal = 2, - */ - toLine(texture): LineType { - if (texture == 0) - return LineType.Positive - if (texture == 1) - return LineType.CanReversal - return LineType.Reverse - } - /** 小板加工面:Positive=0正面 Reverse=1反面 Arbitrary=2任意 */ - toface(block: PlaceBlock): ComposingType { - let turnF = block.isTurnFaceToPlace - if (this.isTurnFaceToPlace) - turnF = !turnF - if (!turnF) - return ComposingType.Positive - return ComposingType.Reverse - } -} diff --git a/samples/businessCapability/业务功能目录.md b/samples/businessCapability/业务功能目录.md deleted file mode 100644 index e69de29..0000000 diff --git a/samples/confClass.ts b/samples/confClass.ts deleted file mode 100644 index 4c8cfc4..0000000 --- a/samples/confClass.ts +++ /dev/null @@ -1,2762 +0,0 @@ -import { StringFormat } from "./handleAbility/common/base/StringFormat" -import type * as CAD from './handleAbility/common/base/CAD' -import { Polyline } from "cadapi" -import { ArrayExt } from "./handleAbility/common/ArrayExt" - - -/**配置项属性 */ -export class confItem { - /** 属性key */ - key: string - /** 说明 */ - label: string - /** 属性value 值 */ - value: Array | any -} -/** 内部指令 接收 */ -export class CodeAction { - code?: String - order?: String - codeParams?: any -} -/**内部响应类 */ -export class GCodeResType { - code: number = -1 - data: any = null - msg: string = '' - logError(msg) { - console.error(msg) - } -} - -/** 排孔类型 */ -export enum HoleArrange { - /** 正面 */ - FRONT = 0, - /** 反面 */ - BACK = 1, - /** 随意面 */ - RANDOM_FACE = 2, -} - - -// 加工项 点数据 -export class CodeParams { - /** x坐标 */ - x?: Number | String - /** y坐标 */ - y?: Number | String - /** z坐标 */ - z?: Number | String - /** 调用的代码编号 */ - dir?: Number | String - /** 圆弧半径 */ - r?: Number | String - /** 速度 */ - f?: Number | String - /** IJK 模式的i */ - i?: Number | String - /** IJK 模式的j */ - j?: Number | String - /** IJK 模式的k */ - k?: Number | String - - /** 代码标识 */ - codeKey?: String - /** x坐标 */ - xKey?: String - /** y坐标 */ - yKey?: String - /** z坐标 */ - zKey?: String - /** 圆弧半径 */ - rKey?: String - /** 速度 */ - fKey?: String - /** IJK 模式的i */ - iKey?: String - /** IJK 模式的j */ - jKey?: String - /** IJK 模式的k */ - kKey?: String -} - - -export type _knifeType = Partial - -/** - * 板面类型 - * 0正面 1反面 2侧面 21左侧面 22右侧面 23上侧面 24下侧面 29 弧形侧面 30异形侧面 - */ -export enum FaceType { - /** 正面 */ - FRONT = 0, - /** 反面 */ - BACK = 1, - /** 侧面 */ - SIDE = 2, - /** 左侧面 */ - LEFT_SIDE = 21, - /** 右侧面 */ - RIGHT_SIDE = 22, - /** 上侧面 */ - TOP_SIDE = 23, - /** 下侧面 */ - BOTTOM_SIDE = 24, - /** 弧形侧面 */ - CURVED_SIDE = 29, - /** 异形侧面 */ - SPECIAL_SHAPED_SIDE = 30, - /** 未设置 */ - UNSET = -1 -} - -/** 开料刀 */ -export class Knife { - /** 是否启用 */ - isEnabled = true; - /** 轴号 */ - axleId = 0; - /** 开料刀ID号 */ - knifeId = 1; - /** 加工面(0正面 1反面 2左侧面 3右侧面 4上侧面 5下侧面 6任意) */ - processFace = 0; - /** 刀名称 */ - knifeName = ''; - /** 刀具类型(1铣刀 2成型刀 3钻头 4锯 5刀片) */ - knifeType = KnifeType.MILLING_CUTTER; - /** 功能属性(数组): 1开料/切割 2拉槽 3铣型 4铣孔 5钻孔 6拉米诺 7乐扣 8T型 */ - ability: any = []; - - // /** 默认开料刀 */ - // isDefaultCutKnife = false; - // /** 是否可用于开料切割 */ - // isCuttingKnife = false; - // /** 是否允许铣孔(knifeType为铣刀生效) */ - // isMillingAllowed = false; - /** 刀直径mm */ - diameter = 6; - /** 刀长(最大深度) */ - length = 20; - /** 锯齿厚度,单次加工切缝宽度 */ - sawThiness = 0; - /**锯向: 0横向(或长边) 1纵向(短边) 2自由角度*/ - sawDirection = 0; - /**切向加工方向: 0横向左往右 2横向右往左 3纵向上往下 4纵向下往上 5随意 */ - processDirection = 0; - /**进给速度, 0取系统默认 */ - speed = 0; - /** 进给深度 */ - stepDepth = 0; - // /** 组号 */ - // groupNo = 0; - // /** 主刀 */ - // isMainKnife = false; - // /** 是否高级加工 */ - // isAdvancedProcessEnabled = false; - // /** 是否集合加工 */ - // isBatchProcessEnabled = false; - // /** 副刀偏置长边偏移(Y轴) */ - // auxKnifeOffsetY = 0; - // /** 副刀偏置短边偏移(X轴) */ - // auxKnifeOffsetX = 0; - /** 偏置短边偏移(X轴)-相对于工件原点位置XY坐标的短边方向偏移量 */ - offsetX = 0; - /** 偏置长边偏移(Y轴) -相对于工件原点位置XY坐标的长边方向偏移量*/ - offsetY = 0; - /** 偏置垂直偏移(Z轴) -相对于工件原点位置XY坐标的垂直方向偏移量*/ - offsetZ = 0; - /** 基准坐标-短边(X轴) -钻头在钻包中短边方向(纵向)的相对位置 */ - baseX = 0; - /** 基准坐标-长边(Y轴) -钻头在钻包中长边方向(横向)的相对位置 */ - baseY = 0; - /**组合钻 */ - isModularDrill = false; - /** 是否预启动 */ - isPreStartEnabled = false; - /** 预启动提前动作数 */ - preStartAheadActionCount = 5; - /** 预启动延迟换刀 */ - isPreStartToolChangeDelay = false; - /** 预启动延迟换刀指令 */ - preStartToolChangeDelayCode = ''; - /** 轴启动指令后置 */ - isAxisStartCodePostpost = false; - /** 轴停止指令前置 */ - isAxisStopCodePrepose = false; - /** 钻组独立指令(启用后,刀起始指令、刀结束指令使用钻组起始指令、钻组结束指令替换) */ - drillGroupCode = ''; - - /** 轴启动代码*/ - axisStartCode = ""; - /** 刀启动代码 */ - knifeStartCode = ''; - /** 钻组起始指令 */ - drillGroupStartCode = ''; - /** 钻组结束指令 */ - drillGroupEndCode = ''; - /** 刀停止代码 */ - knifeStopCode = ''; - /** 轴停止指令 */ - axisStopCode = ''; - // /** 高级加工指令 */ - // advancedCode = ''; - /** 开料刀 */ - isCuttingKnife() { - return this.isEnabled && this.ability.includes(AbilityType.CUT); - } - /** 造型刀 */ - isModelingKnife() { - return this.isEnabled && this.ability.includes(AbilityType.MILLING_MODEL); - } - /** 钻刀 */ - isDrillingKnife() { - return this.isEnabled && this.ability.includes(AbilityType.DRILL_HOLE); - } - /** 铣孔 */ - isCutting4HoleKnife() { - return this.isEnabled && this.ability.includes(AbilityType.MILLING_HOLE); - } - /** 设置刀具(轴号, 刀名, 刀直径, 是否主刀, 是否铣孔, 是否开料刀) */ - // set(axleId: number, name: string, diameter: number, isMainKnife: boolean, isMillingAllowed: boolean, isCuttingKnife: boolean) - /** 设置刀具(轴号, 刀名, 刀类型, 刀直径, 刀长, 是否默认刀) */ -} - - -/** 刀类型: MILLING_CUTTER铣刀 FORMING_CUTTER成型刀 DRILL钻头 SAW锯 BLADE刀片 */ -export enum KnifeType { - /** 铣刀 */ - MILLING_CUTTER = 1, - /** 成型刀 */ - FORMING_CUTTER = 2, - /** 钻头 */ - DRILL = 3, - /** 锯 */ - SAW = 4, - /** 刀片 */ - BLADE = 5 -} - -/** 刀功能: - ** 1-CUT开料/切割 2-PULLING_GROOVE拉槽 3-MILLING_MODEL铣型 4-MILLING_HOLE铣孔 - ** 5-DRILL_HOLE钻孔 6-RAMINO拉米诺 7-EASY_FASTEN乐扣 8-T_TYPE T型 */ -export enum AbilityType { - /** 1开料/切割 */ - CUT = 1, - /** 2拉槽 */ - PULLING_GROOVE = 2, - /** 3铣型 */ - MILLING_MODEL = 3, - /** 4铣孔 */ - MILLING_HOLE = 4, - /** 5钻孔 */ - DRILL_HOLE = 5, - /** 6拉米诺 */ - RAMINO = 6, - /** 7乐扣 */ - EASY_FASTEN = 7, - /** 8T型 */ - T_TYPE = 8 -} - -/** 枚举 坐标轴类型 */ -export enum AxisType { - /** X轴正 */ - X_POS = 0, - /** X轴负 */ - X_NEG = 1, - /** Y轴正 */ - Y_POS = 2, - /** Y轴负 */ - Y_NEG = 3, - /** 向上Z轴正 */ - Z_POS = 4, - /** 向下Z轴负 */ - Z_NEG = 5, -} - -/** 枚举 坐标轴类型 */ -export enum OriginZPosition { - /** 台面向上Z轴正 */ - WorkTop = 0, - /** 板面向上Z轴正 */ - BoardFace = 1, -} - -// nc文件编码 -export const ncEncodeMap = { - 'UTF-8': 'UTF-8', - 'GB2312': 'GB2312', - 'UTF-8-BOM': 'UTF-8-BOM', - 'GBK': 'GBK', - 'Big-5': 'Big-5', - 'GB18030': 'GB18030', - 'Unicode': 'Unicode' -} - -// 小板文件名选项 -export const smallPlateOptionsMap = { - 板宽: '{0}', - 板长: '{1}', - 颜色: '{2}', - 材质: '{3}', - 大板号: '{4}', - 工位号: '{5}', - 板厚: '{6}', - 开料顺序: '{7}', - 批次识别: '{8}', - 小板编号: '{9}', - 全局大板号: '{10}', - 品牌: '{11}', -} - -// zip压缩包文件名选项 -export const zipFileOptionsMap = { - '板宽': '{0}', - '板长': '{1}', - '颜色': '{2}', - '材质': '{3}', - '大板号': '{4}', - '工位号': '{5}', - '板厚': '{6}', - '开料顺序': '{7}', - '批次识别': '{8}', - '小板编号': '{9}', - '全局大板号': '{10}', - '品牌': '11', -} - -/** 枚举 大板边角位置 */ -export enum BoardPosition { - /** 左上角 */ - // LEFT_TOP = 0, - // /** 左下角 */ - // LEFT_BOTTOM = 1, - // /** 右下角 */ - // RIGHT_BOTTOM = 2, - // /** 右上角 */ - // RIGHT_TOP = 3, - /** 左上角 */ - LEFT_TOP = 3, - /** 左下角 */ - LEFT_BOTTOM = 0, - /** 右下角 */ - RIGHT_BOTTOM = 1, - /** 右上角 */ - RIGHT_TOP = 2, - /** - * 左下角 = 0, - 右下角 = 1, - 右上角 = 2, - 左上角 = 3 - */ -} - -/** 排版样式 */ -export enum PlaceStyle { - /** 正面 */ - 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 enum EdgeType { - /** 下=0 */ - BOTTOM = 0, - /** 右=1 */ - RIGHT = 1, - /** 上=2 */ - TOP = 2, - /** 左=3 */ - LEFT = 3, -} - -/** 开料小板 */ -export class PlaceBlock { - /** 小板明细(异形,孔,造型) */ - blockDetail: PlaceBlockDetail | null = null - // 订单信息---------------------------------------------------------- - - /** 订单号 */ - orderId: number = 0 - /** 板材ID */ - goodsId = '' - // 小板属性----------------------------------------------------------- - // 房间名, 柜体名, 小板ID, 小板编号,小板名称, 板材名称, 备注 - // 房间ID - roomId = '' - /** 房间名 */ - roomName = '' - /** 柜体号 */ - bodyId = '' - /** 柜体名 */ - bodyName = '' - /** 小板ID */ - blockId = 0 - /** 原小板ID */ - oldBlockId: number = 0 - /** 板编号 */ - blockNo: number = 0 - /** 自定义板编号 */ - customPlateNo: any = '' - /** 明细ID */ - itemId: number = 0 - /** 标签板号 */ - labelNo = '' - /** 板名称 */ - blockName = '' - /** 板件备注 */ - plateRemark = '' - /** 备注1 */ - remark1 = '' - /** 备注2 */ - remark2 = '' - /** 备注3 */ - remark3 = '' - /** 备注4 */ - remark4 = '' - /** 备注5 */ - remark5 = '' - /** 铰链备注 */ - extraRemark: object = {} - - // 尺寸,封边,开料尺寸----------------------------------------------------- - - /** 板宽 */ - width = 0 - /** 板长 */ - length = 0 - /** 板厚 */ - thickness = 0 - /** 面积 Size */ - area = 0 - - /** 左封边 BorderLeft */ - sealLeft = 0 - /** 右封边 BorderRight */ - sealRight = 0 - /** 上封边 BorderUpper */ - sealTop = 0 - /** 下封边 BorderUnder */ - sealBottom = 0 - - /** 无封边板宽 开料板宽 CuttingWidth */ - cutWidth = 0 - /** 无封边板长 开料板长 CuttingLength */ - cutLength = 0 - /** 无封边面积 开料面积 CuttingSize */ - cutArea = 0 - - // 高级------------------------------------------------------------- - - /** 自增小板 */ - isAdditionalBlock = false - /** 余料板 IsScrapBlock */ - isRemainBlock = false - /** 开料纹路 */ - texture = TextureType.ROTATABLE_TEXTURE // 可翻转 - /** 排版面 PaiKong */ - placeHole = HoleArrange.RANDOM_FACE // 随意面 - /** 异型偏移x BorderLengthHeavy */ - abnormalOffsetX = 0 - /** 异型偏移y BorderLengthLight */ - abnormalOffsetY = 0 - - /** 正面有大孔 */ - bigHoleInFaceA(): boolean { - let res = false - if (this.blockDetail && this.blockDetail.bigHoleInFaceA) { - res = true - } - return res - } - - /** 是否异形 */ - isUnRegular = false - // isUnRegular(): boolean { - // return this.blockDetail && this.blockDetail.isUnRegular || false - // } - - /** 正面孔数 */ - holeCountFront(): number { - return this.blockDetail && this.blockDetail.holeCountFront || 0 - } - - /** 反面孔数 */ - holeCountBack(): number { - return this.blockDetail && this.blockDetail.holeCountBack || 0 - } - - /** 通孔数 */ - holeCountThrough(): number { - return this.blockDetail && this.blockDetail.holeCountThrough || 0 - } - - /** 侧孔数 HoleCount_Side */ - holeCountSide(): number { - return this.blockDetail && this.blockDetail.holeCountSide || 0 - } - - /** 左侧孔数 HoleCount_Left */ - holeCountLeft() { return this.blockDetail && this.blockDetail.holeCountLeft } - /** 右侧孔数 HoleCount_Right */ - holeCountRight() { return this.blockDetail && this.blockDetail.holeCountRight } - /** 侧孔数 HoleCount_Upper */ - holeCountTop() { return this.blockDetail && this.blockDetail.holeCountTop } - /** 侧孔数 HoleCount_Under */ - holeCountBottom() { return this.blockDetail && this.blockDetail.holeCountBottom } - /** 正面造型数 */ - modelCountFront(): number { - return this.blockDetail && this.blockDetail.modelCountFront || 0 - } - - /** 反面造型数 */ - modelCountBack(): number { - return this.blockDetail && this.blockDetail.modelCountBack || 0 - } - - /** 打穿造型数 */ - modelCountThrough(): number { - return (this.blockDetail && this.blockDetail.modelCountThrough) || 0 - } - - /** 有挖穿造型 */ - hasModelThrough(): boolean { - return (this.blockDetail && this.blockDetail.hasModelThrogh) || false - } - - /** 需双面处理 */ - isDoubleFaceProcess(): boolean { - if (this.placeHole == HoleArrange.RANDOM_FACE) // 随意面 - { - return (this.blockDetail && this.blockDetail.isTwoFaceProcess) || false - } - else if (this.placeHole == HoleArrange.FRONT) // 正面 - { - return this.holeCountBack() + this.modelCountBack() > 0 - } - else { - return this.holeCountFront() + this.modelCountFront() > 0 - } - } // (根据排版规格计算) - - /** 优化排版时,需反面(不是真正的反面开料) */ - isTurnFaceToPlace = false - - /** 优化排版时,可双面排版 */ - isTwoFaceToPlace = false - /** 是否弧形地脚,不处理异形 IsHXDJX */ - isCurvedGroundLine = false - /** 封边偏移值x */ - offsetX(): number { - return (this.blockDetail && this.blockDetail.offsetX) || 0 - } - - /** 封边偏移值y */ - offsetY(): number { - return (this.blockDetail && this.blockDetail.offsetY) || 0 - } - - // 异形、孔、造型明细列表 - points(): BlockPoint[] { - return (this.blockDetail && this.blockDetail.points) || [] - } - - orgPoints(): BlockPoint[] { - return (this.blockDetail && this.blockDetail.orgPoints) || [] - } - - holes(): BlockHole[] { - return (this.blockDetail && this.blockDetail.holes) || [] - } - - models(): BlockModel[] { - return (this.blockDetail && this.blockDetail.models) || [] - } - - holeListOrgFaceA(): BlockHole[] { - return (this.blockDetail && this.blockDetail.holeListFaceA) || [] - } - - holeListOrgFaceB(): BlockHole[] { - return (this.blockDetail && this.blockDetail.holeListFaceB) || [] - } - - holeListOrgThrough(): BlockHole[] { - return (this.blockDetail && this.blockDetail.holeListThrough) || [] - } - - holeListOrgFaceSide(): SideHole[] { - return (this.blockDetail && this.blockDetail.holeListSide) || [] - } - - modelListOrgFaceA(): BlockModel[] { - return (this.blockDetail && this.blockDetail.modelListFaceA) || [] - } - - modelListOrgFaceB(): BlockModel[] { - return (this.blockDetail && this.blockDetail.modelListFaceB) || [] - } - - modelListOrgTrough(): BlockModel[] { - - return (this.blockDetail && this.blockDetail?.modelListThrough) || [] - } - - // 排版情况 - /** 已排版 */ - isPlaced = false - /** 全局大板Id */ - fullBoardId = 0 - /** 大板ID */ - boardId = 0 - /** 排单ID */ - placeId = 0 - /** 坐标X */ - placeX = 0 - /** 坐标Y */ - placeY = 0 - /** 排版方式 */ - placeStyle: PlaceStyle = PlaceStyle.FRONT // 正面 - /** 下刀点区域 */ - cutRegion = BlockRegion.LEFT_BOTTOM // 左下 - /** 开料顺序 */ - cutOrder = 0 - /** 下刀点位 */ - cutPointId = 0 - /** 开料宽 */ - placeWidth = 0 - /** 开料长 */ - placeLength = 0 - /** 开料左封边 */ - placeSealLeft = 0 - /** 开料右封边 */ - placeSealRight = 0 - /** 开料上封边 */ - placeSealTop = 0 - /** 开料下封边 */ - placeSealBottom = 0 - /** 原造型下刀超出板外情况 OrgSizeOutOff */ - orgSizeExpand: SizeExpand = new SizeExpand() - /** 造型下刀超出板外情况 尺寸扩展 SizeOutOff */ - sizeExpand() { return this.blockDetail ? this.blockDetail.currentSizeExpand : '' }; - /** 排版宽 加上预铣等外括 ,开料刀半径 ,缝隙 */ - // placeFullWidth() { return this.cutWidth + this.blockDetail.currentSizeExpand.width } - placeFullWidth() { return this.cutWidth + (this.blockDetail ? this.blockDetail?.currentSizeExpand?.width || 0 : 0) } - /** 排版长 加上预铣等外括 ,开料刀半径 ,缝隙 */ - placeFullLength() { return this.cutLength + (this.blockDetail ? this.blockDetail?.currentSizeExpand?.length || 0 : 0) } - /** 坐标偏移情况 */ - placeOffX = 0 - placeOffY = 0 - /** 原始排版坐标 */ - placeOrgX() { return this.placeX - this.placeOffX } - placeOrgY() { return this.placeY - this.placeOffY } - /** 反面开料 */ - isTurnOver(): boolean { - return this.placeStyle > 3 - } - - /** 后转180 */ - isTurnBack(): boolean { - return ( - this.placeStyle == PlaceStyle.BACK_TURN_BACK - || this.placeStyle == PlaceStyle.FRONT_TURN_BACK - ) - } - - /** 反纹开料 */ - isTurnDown(): boolean { - return this.placeStyle % 2 == 1 - } - - /** 自动排版 */ - isAutoPlaced = true - /** 超出板外 */ - isOutBoard = false - /** 已重叠 */ - isOverlap = false - /** 高方向 */ - placeDirection = '→' - /** 长边方向 */ - placeDirection_Length = '→' - - // 开料情况 - - // isUseSameKnifeToHelpCut() { return this.blockDetail ? this.blockDetail.isHelpCut : false; }; - /** 是否排钻 IsDoHoling */ - isDrilling = true - /** 是否造型 IsDoModeling */ - isModeling = true - /** 超限板标识 : -1=不是; 0=不判断 1=是 */ - overBlockFlag = 0 - /** 开料时需翻面 IsDoOtherFace */ - isCutOtherFace = false - /** 开料反面要处理 NeedTurnFaceToDo */ - isCutTurnOver = false - - /** 开料面孔数 HoleCount_DoFaceA */ - holeCountFaceA(): number { - return this.holeListFaceA.length - } - - /** 开料反面孔数 HoleCount_DoFaceB */ - holeCountFaceB(): number { - return this.holeListFaceB.length - } - - /** 开料左侧孔数 HoleCount_DoLeft */ - holeCountSideLeft = 0 - /** 开料右侧孔数 HoleCount_DoRight */ - holeCountSideRight = 0 - /** 开料上侧孔数 HoleCount_DoUpper */ - holeCountSideTop = 0 - /** 开料下侧孔数 HoleCount_DoUnder */ - holeCountSideBottom = 0 - /** 开料面造型数 ModelCount_DoFaceA */ - modelCountFaceA(): number { - return this.modelListFaceA.length - } - - /** 开料反面造型数 ModelCount_DoFaceB */ - modelCountFaceB(): number { - return this.modelListFaceB.length - } // 不显示 - - /** 开料面孔 Holes_DoFaceA */ - holeListFaceA: BlockHole[] = [] // 不显示 - /** 开料反面孔 Holes_DoFaceB */ - holeListFaceB: BlockHole[] = [] // 不显示 - /** 开料面造型 Models_DoFaceA */ - modelListFaceA: BlockModel[] = [] // 不显示 - /** 开料反面造型 Models_DoFaceB */ - modelListFaceB: BlockModel[] = [] - - /** 贴标位置x NotePosX */ - labelPosX = 0 - /** 贴标位置y NotePosY */ - labelPosY = 0 - - // CNC高级对接-------------------------------------------------------- - - /** CNC正面条码 CNC_NoteA */ - isCncLabelA = false - /** CNC反面条码 CNC_NoteB */ - isCncLabelB = false - /** CNC翻面条码 CNC_NoteT */ - isCncLabelTurnOver = false - /** 类型 */ - type = '' - /** 加工组 */ - processGroupName = '' - /** 开门类型 */ - openDoorType = OpenDoorType.NONE // 无 - /** 自增小板的id接口获取 */ - _blockId = '' - - constructor(data: any = null) { - if (data != null) { - - for (const key in data) { - if (Reflect.has(this, key)) { - if (['goodsId'].includes(key)) { - this[key] = data[key].toString() - } else if (['width', 'length', 'thickness', 'sealLeft', 'sealRight', 'sealTop', 'sealBottom'].includes(key)) { - this[key] = StringFormat.toFixed(data[key], 3) - } else if (key == 'texture') { - this.texture = data.texture - } else if (key == 'placeHole') { - this.placeHole = data.placeHole - } else if (key == 'remarkJson') { - let remarkList = JSON.parse(data.remarkJson == null || data.remarkJson == '' ? '[]' : data.remarkJson) - this.remark1 = remarkList[0] == null ? '' : remarkList[0] - this.remark2 = remarkList[1] == null ? '' : remarkList[1] - this.remark3 = remarkList[2] == null ? '' : remarkList[2] - this.remark4 = remarkList[3] == null ? '' : remarkList[3] - this.remark5 = remarkList[4] == null ? '' : remarkList[4] - } - else { - try { - if (Object.getOwnPropertyDescriptor(this, key)?.writable == true) { - this[key] = data[key] - } - - } catch (error) { - console.log(error) - } - - } - } else { - // console.log('PlaceBlock Init', key) - } - } - this.cutWidth = this.width - this.sealLeft - this.sealRight - this.cutLength = this.length - this.sealTop - this.sealBottom - this.cutArea = this.cutWidth * this.cutLength * 0.000001 - this._blockId = data.blockId - - } - } - - getRemark(rname, st = '', ed = '') { - if (!this.extraRemark) - return '' - if (!this.extraRemark[rname]) - return '' - let text: string = this.extraRemark[rname] - if (st != '') { - let index = text.indexOf(st) - if (index > -1) { - // text = text.substr(index + st.length, 99999); - text = text.substring(index + st.length, 99999) - } - } - if (ed != '') { - let index = text.indexOf(ed) - if (index > -1) { - text = text.substring(0, index) - } - } - return text - } -} -/** 小板明细(异形,造型,孔) */ -export class PlaceBlockDetail { - // 数据库定义列 - /** 用户ID */ - organId: number = 0 - /** 数据类型 */ - dataType: number = 0 - /** 订单号 */ - orderId: number = 0 - /** 小板ID */ - blockId: number = 0 - /** 原柜体编号rawBoxNo */ - rawBoxNo: number = 0 - /** 异形定义明细 */ - pointDetail: any = [] - /** 造型定义明细 */ - modelDetail: any = [] - /** 排钻定义明细 */ - holeDetail: any = [] - - /** 封边偏移值x */ - offsetX = 0 - /** 封边偏移值y */ - offsetY = 0 - /** 开料宽度 KaiLiaoWidth */ - cutWidth = 0 - /** 开料长度 KaiLiaoLength */ - cutLength = 0 - - /** 异形点阵 */ - points: BlockPoint[] = [] - /** 异形点阵含封边 */ - orgPoints: BlockPoint[] = [] - /** 原轮廓数据 */ - orgContourData = null - - /** 排钻 */ - holes: BlockHole[] = [] - /** 正面孔列表(不包含通孔和孔深大于板厚) Holes_FaceA */ - holeListFaceA: BlockHole[] = [] - /** 反面孔列表(不包含通孔和孔深大于板厚) Holes_FaceB */ - holeListFaceB: BlockHole[] = [] - /** 穿孔列表(通孔和孔深大于板厚) Holes_Through */ - holeListThrough: BlockHole[] = [] - /** 侧孔列表 Holes_FaceSide */ - holeListSide: SideHole[] = [] - - /** 造型点阵 */ - models: BlockModel[] = [] - /** 正面造型列表(不包含打穿) Models_FaceA */ - modelListFaceA: BlockModel[] = [] - /** 反面造型列表(不包含打穿) Models_FaceB */ - modelListFaceB: BlockModel[] = [] - /** 打穿造型列表 Models_Through */ - modelListThrough: BlockModel[] = [] - /** 侧面造型 BlockModel SideModels 20241111 改为 BlockModel */ - modelListSide: SideModel[] = [] - - - // /** 切割板宽 */ - // cuttingWidth = 0; - // /** 切割板厚 */ - // cuttingLength = 0; - /** 板厚 */ - thickness = 18 - /** 是否异形 */ - isUnRegular = false - /** 正面有打孔 */ - bigHoleInFaceA = false - /** 正面孔数 */ - holeCountFront = 0 - /** 反面孔数 */ - holeCountBack = 0 - /** 穿孔数 */ - holeCountThrough = 0 - /** 侧孔数 */ - holeCountSide = 0 - /** 左侧孔数 */ - holeCountLeft = 0 - /** 右侧孔数 */ - holeCountRight = 0 - /** 上侧孔数 */ - holeCountTop = 0 - /** 下侧孔数 */ - holeCountBottom = 0 - - /** 斜孔数量 */ - holeCountBevelled = 0 - - - /** 正面造型数 */ - modelCountFront = 0 - /** 反面造型数 */ - modelCountBack = 0 - /** 打穿造型数 */ - modelCountThrough = 0 - - /** 侧面造型数量 */ - modelCountSide(): number { - return this.modelListSide.length - } - /** 下侧造型数量 */ - modelCountBottom(): number { - return this.modelListSide.filter(sideModel => sideModel.face == 0).length - } - /** 右侧造型数量 */ - modelCountRight(): number { - return this.modelListSide.filter(sideModel => sideModel.face == 1).length - } - /** 下侧造型数量 */ - modelCountTop(): number { - return this.modelListSide.filter(sideModel => sideModel.face == 2).length - } - /** 下侧造型数量 */ - modelCountLeft(): number { - return this.modelListSide.filter(sideModel => sideModel.face == 3).length - } - - /** 是否有挖穿的造型 */ - hasModelThrogh = false - - /** 双面处理 Do2Face */ - isTwoFaceProcess = false - // isTwoFaceProcess(): boolean - // { - // return this.blockDetail && this.blockDetail.isTwoFaceProcess - // } - // 为了缺角空间 放在右边 - /** 当需要正面正纹的,最佳放置方式: 正面或正面后转 Ps00 */ - placeStyleFront = PlaceStyle.FRONT // 正面 - /** 正面反纹放置方式 Ps01 */ - placeStyleFrontReverse = PlaceStyle.FRONT_TURN_RIGHT // 正面右转 - /** 反面正纹放置方式 Ps10 */ - placeStyleBack = PlaceStyle.BACK // 反面 - /** 反面反纹放置方式 Ps11 */ - placeStyleBackReverse = PlaceStyle.BACK_TURN_LEFT // 反面左转 - - /** 开料序号贴标位置x */ - labelPosX = -1 - /** 开料序号贴标位置y */ - labelPosY = -1 - - /** 是否初始化 */ - isInited = false - /** 是否已检查 */ - isChecked = false - - /** 全部二维刀路径集合 { model, modelID, lineID, isFaceB, name, value, knife, knifeRadius, depth, points, offset} */ - // vKnifeModels: any[]; - - /** 是否偏移倒角 IsOffsetRounding */ - isOffsetRounding = false - /** 偏移值刀半径 CutR */ - offsetKnifeRadius = 0 - - /** 当前的预铣值 preCutValue */ - preMillingSize = 0 - /** 该板需要辅助开料 isNeedHelpCut */ - isUseSameKnifeToHelpCut = false - /** 同刀辅助值 */ - useSameKnifeToHelpCutGap = 2 - - /** 预铣外扩尺寸 preCutSizeOutOff */ - preMillingExpandSize: SizeExpand | null = null - /** 板外造型外扩尺寸 modelKnifeOutOff */ - modelExpandSize: SizeExpand | null = null - /** 2V刀路V外扩尺寸 */ - vKnifeModelExpandSize: SizeExpand | null = null - /** 同刀辅助外扩尺寸 sameKnfieHelpOutOff */ - sameKnfieHelpExpandSize: SizeExpand | null = null - /** 当前外扩 currentOutOff */ - currentSizeExpand: SizeExpand | null = null - /** 边框轮廓,走刀路径等(包含偏移后的轮廓结合) borderUnit */ - borderContour: PlaceBorderContour | null = null - - // 板件扩展尺寸 数据集 - plateExtraRemark: any - - /** 优化前的配置及其轮廓等用于恢复 */ - savedSetting - - /** 备注 数据集 */ - remarkParams: any - constructor(data: any = null, sourceType: number = 2) { - if (data != null) { - this.remarkParams = data.remarkParams - this.orderId = data.orderId - this.dataType = data.dataType - this.orderId = data.orderId - this.blockId = data.blockId - this.rawBoxNo = data.rawBoxNo - - // 封边偏移值 - this.offsetX = data.offSet && data.offSet.x ? StringFormat.toFixed(data.offSet.x, 3) : 0 - this.offsetY = data.offSet && data.offSet.y ? StringFormat.toFixed(data.offSet.y, 3) : 0 - // 开料长宽(不含封边) - this.cutWidth = data.cutSize ? StringFormat.toFixed(data.cutSize.width, 3) : 0 - this.cutLength = data.cutSize ? StringFormat.toFixed(data.cutSize.height, 3) : 0 - // 初始化 异形点阵 - data.pointDetail.forEach((p) => { this.points.push(new BlockPoint(p)) }) - // 初始化 异形点阵 含封边 - if (!data.orgPointDetail) { - data.orgPointDetail = [] - } - data.orgPointDetail.forEach((p) => { this.orgPoints.push(new BlockPoint(p)) }) - - if (!data.holes) { - data.holes = data.holeDetail || [] - } - // 初始化 排钻列表 - data.holes.forEach((h) => { this.holes.push(new BlockHole(h)) }) - // 初始化 侧孔列表 - if (!data.holeListSide) { - data.holeListSide = data.sideHoleDetail || [] - } - data.holeListSide.forEach((sh) => { this.holeListSide.push(new SideHole(sh)) }) - // 初始化 造型列表 - data.modelDetail.forEach((t) => { this.models.push(new BlockModel(t)) }) - // 初始化 侧面造型列表 - if (!data.modelListSide) { - data.modelListSide = [] - } - - this.plateExtraRemark = data.plateExtraRemark - - data.modelListSide.forEach((t) => { this.modelListSide.push(new SideModel(t)) }) // 侧面 - - this.holeListFaceA = this.holes.filter(t => t.face == FaceType.FRONT) // 正面 - this.holeListFaceB = this.holes.filter(t => t.face == FaceType.BACK) // 反面 - this.holeListThrough = [] - - this.modelListFaceA = this.models.filter(t => t.face == FaceType.FRONT && (t.depth < this.thickness || t.isVKnifeModel())) - this.modelListFaceB = this.models.filter(t => t.face == FaceType.BACK && (t.depth < this.thickness || t.isVKnifeModel())) - this.modelListThrough = this.models.filter(t => t.depth > this.thickness - 0.01 && t.isVKnifeModel() == false) - - this.holeCountFront = this.holeListFaceA.length - this.holeCountBack = this.holeListFaceB.length - this.holeCountThrough = this.holeListThrough.length - this.holeCountSide = this.holeListSide.length - - this.modelCountFront = this.modelListFaceA.length - this.modelCountBack = this.modelListFaceB.length - this.modelCountThrough = this.modelListThrough.length - - this.hasModelThrogh = this.modelListThrough.length > 0 - this.bigHoleInFaceA = this.holeListFaceA.some(t => t.holeType == HoleType.BIG_HOLE) // 大孔 - - } - - this.isUnRegular = this.points.length > 0 - - } - - /** 保存 开料配置 */ - saveSetting() { - this.savedSetting = {} - - this.savedSetting.offsetKnifeRadius = this.offsetKnifeRadius - this.savedSetting.preMillingSize = this.preMillingSize - this.savedSetting.isUseSameKnifeToHelpCut = this.isUseSameKnifeToHelpCut - this.savedSetting.useSameKnifeToHelpCutGap = this.useSameKnifeToHelpCutGap - // SizeExpand - this.savedSetting.preMillingExpandSize = this.preMillingExpandSize - this.savedSetting.modelExpandSize = this.modelExpandSize - this.savedSetting.vKnifeModelExpandSize = this.vKnifeModelExpandSize - this.savedSetting.sameKnfieHelpExpandSize = this.sameKnfieHelpExpandSize - this.savedSetting.currentExpandSize = this.currentSizeExpand - // 轮廓,铣刀路径 - if (this.borderContour != null) { - this.savedSetting.borderContour = this.borderContour.clone() - } - - } - - loadSetting() { - if (!this.savedSetting) - return - this.offsetKnifeRadius = this.savedSetting.offsetKnifeRadius - this.preMillingSize = this.savedSetting.preMillingSize - this.isUseSameKnifeToHelpCut = this.savedSetting.isUseSameKnifeToHelpCut - this.useSameKnifeToHelpCutGap = this.savedSetting.useSameKnifeToHelpCutGap - // SizeOutOff - this.preMillingExpandSize = this.savedSetting.preMillingExpandSize - this.modelExpandSize = this.savedSetting.modelExpandSize - this.vKnifeModelExpandSize = this.savedSetting.vKnifeModelExpandSize - this.sameKnfieHelpExpandSize = this.savedSetting.sameKnfieHelpExpandSize - this.currentSizeExpand = this.savedSetting.currentSizeExpand - // 轮廓,铣刀路径 - this.borderContour = this.savedSetting.borderContour - } -} -/** 开门类型(0无 1左 2右 3上 4下) */ -export enum OpenDoorType { - /** 无 */ - NONE = 0, - /** 左 */ - LEFT = 1, - /** 右 */ - RIGHT = 2, - /** 上 */ - TOP = 3, - /** 下 */ - BOTTOM = 4, -} - -/** 纹理类型 */ -export enum TextureType { - /** 正纹 */ - NORMAL_TEXTURE = 0, - /** 可翻转 */ - ROTATABLE_TEXTURE = 1, - /** 反纹 */ - REVERSE_TEXTURE = 2, -} - -/** 排钻 */ -export class BlockHole { - /** 孔类别 */ - holeType: HoleType = 0 - /** 面 */ - face: FaceType = 0 - /** 侧孔所在面 */ - sideFace: FaceType = FaceType.FRONT // 正面 - /** 坐标x */ - pointX: number = 0 - /** 坐标y */ - pointY: number = 0 - /** 坐标z */ - pointZ: number = 0 - /** 半径 */ - radius: number = 5 - /** 深度 */ - depth: number = 12 - /** 终点坐标 */ - endPoint: string = '' - /** 角度 */ - angle: number = 0 - /** CNC不能加工 cncUndo */ - isCncCanNotProcess: boolean = false - /** 不能加工类型 unDoType */ - cncCanNotProcessType = '' - /** 是否在开料机上处理 IsDo */ - isCutting: boolean = true - - knife: Knife | null = null - - - constructor(data: any = null) { - if (data != null) { - this.holeType = data.holeType - this.face = data.face - this.pointX = StringFormat.toFixed(data.pointX, 3) - this.pointY = StringFormat.toFixed(data.pointY, 3) - this.pointZ = StringFormat.toFixed(data.pointZ, 3) - this.radius = StringFormat.toFixed(data.radius, 3) - this.depth = StringFormat.toFixed(data.depth, 3) - this.angle = data.angle ? data.angle : 0 - this.endPoint = data.endPoint - } - } - - ToSideHole(block: PlaceBlock): SideHole { - let newH = new SideHole() - newH.holeType = this.holeType - newH.faceId = 0 - newH.sideFace = SideFaceType.BOTTOM // 下侧面 - newH.pointX = this.pointX - newH.pointY = this.pointY - newH.pointZ = this.pointZ - - newH.radius = 4 - let diameter = this.radius * 2 - if (Math.abs(diameter - 8.3) < 0.1 || Math.abs(diameter - 6.3) < 0.1 || Math.abs(diameter - 11.5) < 0.1 || Math.abs(diameter - 12) < 0.1) { - newH.radius = this.radius - } - newH.depth = this.depth - - let cells = this.endPoint.split(',') - if (cells.length >= 3) { - // 起点坐标 - let bx = Number.parseFloat(cells[0]) - let by = Number.parseFloat(cells[1]) - - // x 相等 , 侧孔方向 上下 - if (Math.abs(bx - this.pointX) < 0.1) { - let toUpper = this.isToTop(block, by) - if (toUpper) // y+ 向上 - { - newH.pointX2 = bx - newH.pointY2 = this.pointY + this.depth - newH.direct = 0 - newH.faceId = 0 - newH.sideFace = SideFaceType.BOTTOM_SIDE // 下侧面 - } // y- 向下 - else { - newH.pointX2 = bx - newH.pointY2 = this.pointY - this.depth - newH.direct = 2 - newH.faceId = 2 - newH.sideFace = SideFaceType.TOP_SIDE // 上侧面 - } - } - else if (Math.abs(by - this.pointY) < 0.1) { - let toRight = this.isToRight(block, bx) - // y相等, 侧孔方向左右 - if (toRight) { - // x+ 向右 - newH.pointX2 = this.pointX + this.depth - newH.pointY2 = by - newH.direct = 3 - newH.faceId = 3 - newH.sideFace = SideFaceType.LEFT_SIDE // 左侧面 - } // x- 向左 - else { - newH.pointX2 = this.pointX - this.depth - newH.pointY2 = by - newH.direct = 1 - newH.faceId = 1 - newH.sideFace = SideFaceType.RIGHT_SIDE // 右侧面 - } - } // x ,y 都不相等 - else { - newH.pointX2 = bx - newH.pointY2 = by - newH.direct = -1 - newH.faceId = 4 - newH.sideFace = SideFaceType.SPECIAL_SHAPED_SIDE // 异形侧面 - } - } - - return newH - } - - /** 向右(bx: 起点坐标X) */ - private isToRight(block: PlaceBlock, bx: number): boolean { - // 在左侧外 - if (bx < 0) - return true - // 在板内 靠左侧 - if (bx > 22 && bx < 40) - return true - - // 在右侧外 - if (bx > block.width) - return false - // 在右侧外 - if (bx > block.width - 40 && bx < block.width - 22) - return false - - for (let i = 0; i < block.points.length; i++) { - let j = i + 1 - if (j == block.points.length) - j = 0 - let p1 = block.points[i] - let p2 = block.points[j] - if (Math.abs(p1.pointX - this.pointX) < 3 && Math.abs(p2.pointX - this.pointX) < 3 && (p1.pointY > this.pointY != p2.pointY > this.pointY)) { - return p1.pointY > p2.pointY - } - } - - return false - } - - /** 向上(起点坐标Y) */ - private isToTop(block: PlaceBlock, by: number): boolean { - // 在下侧外 - if (by < 0) - return true - // 靠近下侧 - if (by > 22 && by < 40) - return true - - if (by > block.length) - return false - if (by > block.length - 40 && by < block.length - 20) - return false - - for (let i = 0; i < block.points.length; i++) { - let j = i + 1 - if (j == block.points.length) - j = 0 - let p1 = block.points[i] - let p2 = block.points[j] - if (Math.abs(p1.pointY - this.pointY) < 3 && Math.abs(p2.pointY - this.pointY) < 3 && (p1.pointX > this.pointX != p2.pointX > this.pointX)) { - return p1.pointX < p2.pointX - } - } - - return false - } -} -/** 异形点 */ -export class BlockPoint { - /** 坐标x */ - pointX: number = 0 - /** 坐标y */ - pointY: number = 0 - /** 凹凸度 */ - curve: number = 0 - /** 半径 */ - radius: number = 0 - /** 封边 */ - sealSize: number = 0 - /** 是否这条边需预洗 */ - isPreCutRequired = false - - constructor(data: any = null) { - if (data != null) { - let x = data.PointX != undefined ? data.PointX : data.pointX - let y = data.PointY != undefined ? data.PointY : data.pointY - let curve = data.Curve != undefined ? data.Curve : data.curve - let radius = 1 / curve - this.pointX = StringFormat.toFixed(x) - this.pointY = StringFormat.toFixed(y) - this.curve = curve - this.radius = StringFormat.toFixed(Math.abs(radius)) - if (Math.abs(this.curve) < 1e-5) { - this.curve = 0 - this.radius = 0 - } - this.sealSize = data.SealSize != undefined ? data.SealSize : data.sealSize || 0 - } - } - - copy(): BlockPoint { - let nw = new BlockPoint() - nw.pointX = this.pointX - nw.pointY = this.pointY - nw.curve = this.curve - nw.radius = this.radius - nw.sealSize = this.sealSize - return nw - } -} - -/** 侧孔 */ -export class SideHole { - /** 孔类别 */ - holeType: HoleType = 0 - /** 面 */ - faceId: number = 0 - /** 侧孔所在面 */ - sideFace: SideFaceType = SideFaceType.BOTTOM // 正面 - /** 方向 0向上 1向左 2向下 3向右 -1斜 */ - direct: number = 0 - /** 坐标x */ - pointX: number = 0 - /** 坐标y */ - pointY: number = 0 - /** 坐标z */ - pointZ: number = 0 - /** 半径 */ - radius: number = 5 - /** 深度 */ - depth: number = 12 - - /** 坐标x */ - pointX2: number = 0 - /** 坐标y */ - pointY2: number = 0 - - // cncUndo: boolean = true; //cnc不能做. - /** CNC不能处理 */ - isCncCanNotProcess: boolean = true - - /** 是否可处理 IsDo */ - isProcess: boolean = true - - knife: Knife | null = null - - constructor(data: any = null) { - if (data != null) { - this.holeType = data.holeType - this.faceId = data.face - this.sideFace = data.sideFace - this.direct = data.sideFace - this.pointX = StringFormat.toFixed(data.pointX, 3) - this.pointY = StringFormat.toFixed(data.pointY, 3) - this.pointZ = StringFormat.toFixed(data.pointZ, 3) - this.radius = StringFormat.toFixed(data.radius, 3) - this.depth = StringFormat.toFixed(data.depth, 3) - this.pointX2 = StringFormat.toFixed(data.pointX2, 3) - this.pointY2 = StringFormat.toFixed(data.pointY2, 3) - } - } -} - -/** 孔类型 */ -export enum HoleType { - /** 大孔 */ - BIG_HOLE = 0, - /** 小孔 */ - TINY_HOLE = 10, - /** 木削 */ - WOOD_DUST = 20, - /** 木削大孔 */ - WOOD_DUST_BIG_HOLE = 21, - /** 层板钉 */ - LAMINATED_NAIL = 30, - /** 通孔 */ - THROUGH_HOLE = 40, - /** 造型孔 */ - MODELING_HOLE = -10, - /** 连接杆 */ - CONNECTING_ROD = 50, -} - -/** 板件造型 */ -export class BlockModel { - /** 订单号 */ - orderId: string = '' - /** 小板号 */ - blockId: number = 0 - /** 造型Id */ - modelId: number = 0 - /**线ID */ - lineId: number = 0; - /** 纹路Id */ - textureId: number = 0 - /** 板面 */ - face: FaceType = FaceType.UNSET - /** 刀号 */ - knifeName: string = '' - /** 刀半径 */ - knifeRadius: number = 0 - /** 深度 */ - depth: number = 0 - /** 是否可以挖空后排版 */ - canSpace = false - /** 是否是矩形 */ - isRect = false - /** 是否倾斜 至少有一条边是斜的 */ - isTilt = false - - type = '' - - knife: Knife | null | undefined = null - /** 有轮廓 */ - hasContour() { - let val = false - try { - if (this.originModeling != null && this.originModeling.outline != 0 && this.originModeling?.outline.map(e => e?.pts).length > 0) { - val = true - } - } catch (error) { - console.log('handle hasContour error',error) - } - - return val // this.originModeling?.outline.map(e=>e?.pts).length >0 //this.originModeling?.outline?.pts?.length > 0 - } - - modelWidth: any = 0 - modelLength: any = 0 - - modelStartPoint: any = null - modelEndPoint: any = null - /** - * 造型轮廓(孔转的造型,没有造型轮廓) - * OriginModeling.outline.pts.x | y ; outline.buls - */ - originModeling: any = null - - /** 点列表 */ - pointList: BlockModelPoint[] = [] - /** 实际替代刀直径 */ - realKnifeRadius = 0 - /** 实际替代刀点阵 */ - realPointList: BlockModelPoint[] = [] - /** 实际刀编号 */ - realKnifeId = -1 - - /** cnc不能加工 cncUndo */ - isCncCanNotProcess: boolean = true - /** 超限类型(cnc为何不能加工) unDoType */ - cncCanNotProcessType = '' - - /** 是否在开料机加工 IsDo */ - isCutting: boolean = true - - /** 二维造型的偏移数组 */ - offsetList: ModelOffsetData[] = [] - - /** 转换过的二维刀路路径{isFaceB, name刀名称, offset偏移, knife刀, knifeId刀Id, knifeRadius刀半径, depth深度, points{x,y,z,bul,r}, orgOffset(源偏移)} */ - VLines :any[] = [] - - offsetInfo = '' - /** 是否二维造型 */ - isVKnifeModel(): boolean { - return this.offsetList.length > 0 - } - - /** 是否三维造型 */ - is3VModel(): boolean { - return this.offsetList.length == 0 && this.pointList.some(t => Math.abs(t.depth - this.depth) > 0.01) - } - - constructor(data: any = null) { - if (data != null) { - this.modelId = data.modelId - this.lineId = data.lineId - this.textureId = data.textureId - this.face = data.face - this.knifeName = data.knifeName ? data.knifeName.trim() : '' - this.knifeRadius = StringFormat.toFixed(data.knifeRadius, 3) - this.depth = StringFormat.toFixed(data.depth, 3) - - if (data.modelPoint) - data.modelPoint.forEach(pt => { - - this.pointList.push(new BlockModelPoint(pt)) - }) - if (data.modelOffSet) - data.modelOffSet.forEach(os => this.offsetList.push(new ModelOffsetData(os))) - - if (this.offsetList.length > 0) { - let names: any = [] - for (let os of this.offsetList) { - if (os.name == this.knifeName) - continue - if (names.includes(os.name)) - continue - names.push(name) - } - if (names.length == 0) - this.offsetInfo = `${this.offsetList.length - 1}` - else - this.offsetInfo = `${this.offsetList.length - 1}(${names.join(' ')})` - } - - if (data.originModeling) { - this.originModeling = JSON.parse(JSON.stringify(data.originModeling)) - // 计算造型 - // this.countModelWidthAndLength(this) - } - } - } -} - -/** 造型点 */ -export class BlockModelPoint { - /** 坐标X */ - pointX: number = 2 - /** 坐标Y */ - pointY: number = 2 - /** 半径 */ - radius: number = 0 - /** 深度 */ - depth: number = 6 - /** 凹凸度 */ - curve: number = 0 - - constructor(data: any = null) { - if (data != null) { - this.pointX = StringFormat.toFixed(data.PointX || data.pointX) - this.pointY = StringFormat.toFixed(data.PointY || data.pointY) - this.radius = StringFormat.toFixed(Math.abs(data.Radius || data.radius)) - this.depth = StringFormat.toFixed(data.Depth || data.depth) - this.curve = data.Curve || data.curve - } - } - - copy(): BlockModelPoint { - let obj = new BlockModelPoint() - obj.pointX = this.pointX - obj.pointY = this.pointY - obj.radius = this.radius - obj.depth = this.depth - obj.curve = this.curve - return obj - } -} - -/** 二维造型的偏移数据 */ -export class ModelOffsetData { - /** 刀名称 */ - name: string = '' - /** 偏移 */ - offset: number = 0 - /** 刀半径 */ - radius: number = 0 - /** 深度 */ - depth: number = 0 - /** 角度 */ - angle: number = 0 - /** 板面类型 */ - face: FaceType = FaceType.UNSET - - fullName() { - return `偏移${this.offset} 深${this.depth} 刀${this.name}` - } - - constructor(data: any = null) { - if (data != null) { - let off = 0 - if (data.offset != undefined) { - off = data.offset - } else if (data.value != undefined) { - off = data.value - } else if (data.value != undefined) { - off = data.value - } - this.name = data.Name != undefined ? data.Name : data.name - this.offset = StringFormat.toFixed(data.offset || data.value || data.value) - this.radius = StringFormat.toFixed(data.Radius || data.radius) - this.depth = StringFormat.toFixed(data.Deep || data.depth) - this.face = data.Face != undefined ? data.Face : data.face - this.angle = StringFormat.toFixed(data.Angle || data.angle) - } - } -} - -/** - * 侧面造型 所在的面 0 下 1 右 2上 3 左 其它待测试 - */ -export enum SideFaceType { - /** 下 */ - BOTTOM = 0, - /** 右 */ - RIGHT = 1, - /** 上 */ - TOP = 2, - /** 左 */ - LEFT = 3, - - /** 左侧面 */ - LEFT_SIDE = 21, - /** 右侧面 */ - RIGHT_SIDE = 22, - /** 上侧面 */ - TOP_SIDE = 23, - /** 下侧面 */ - BOTTOM_SIDE = 24, - /** 弧形侧面 */ - CURVED_SIDE = 29, - /** 异形侧面 */ - SPECIAL_SHAPED_SIDE = 30, -} - -/** 侧边造型 - * - * 侧面造型的点阵判断逻辑 - * - * 提要: - * 1、 face 为 该造型在该板件的第几条边上 - * 2、 originModeling 内的造型轮廓点阵的 X Y轴 为 : - * 以该造型为正面 且小板板面朝上 造型为正面的左下角为原点 板厚 为 Y 横象为X - * 注:最终使用的时候 要得到该造型 对应机台的 轮廓数据和刀路数据 - * - * 平行判断 参考 checkIsTilt 修改一个新的方法 - * 是否在板内 可使用 isPointInBlock - * - * 要求:要得到 - * - * 转换逻辑 - * 1、通过face 获取 该造型所在的边 - * 2、将这条边 与 板件的坐标轴做比较 判断平行 - * 情况1:与板件的X轴 平行 则造型 可能为 上 || 下 ,使用 isPointInBlock 判断 具体是上 还是下 - * 情况2:与板件的Y轴 平行 则造型 可能为 左 || 右 , 使用 isPointInBlock 判断 具体是左 还是右 - * 情况3:都不平行 则 朝向的值为斜边 - * 最终得到造型的朝向 - * 3、依据边的坐标和造型的朝向 可以 根据造型的轮廓数据转为 对应机台的轮廓数据 和刀路数据 -*/ -export class SideModel { - /** 订单号 */ - orderId: string = '' - /** 小板号 */ - blockId: number = 0 - /** 造型Id */ - modelId: number = 0 - /**线ID */ - lineId: number = 0; - /** 纹路Id */ - textureId: number = 0 - /** 板面 造型所在的边 第几条边 */ - face: SideFaceType = 0 - /** 刀号 */ - knifeName: string = '' - /** 刀半径 */ - knifeRadius: number = 0 - /** 深度 */ - depth: number = 0 - /** 是否可以挖空后排版 */ - canSpace = false - /** 是否是矩形 */ - isRect = false - /** 是否倾斜 至少有一条边是斜的 */ - isTilt = false - /** 暂时没用 */ - type = '' - - /** 造型方向 -2 未知(是异常情况 要排查) -1 斜的 0 下 1右 2上 3左 10 左下斜 11 右下斜 12 右上斜 13 左上斜 */ - - direction = 0 - - - knife: Knife | null = null - /** 有轮廓 */ - hasContour() { return this.originModeling != null && this.originModeling.outline != 0 && this.originModeling?.outline?.pts?.length > 0 } - - /** 侧面造型 宽 */ - modelWidth: any = 0 - - /** 侧面造型 长 */ - modelLength: any = 0 - - /** 侧面造型 起点 */ - modelStartPoint: any = null - - /** 侧面造型 终点 */ - modelEndPoint: any = null - /** - * 造型轮廓(孔转的造型,没有造型轮廓) - * OriginModeling.outline.pts.x | y ; outline.buls - */ - originModeling: any = null - - /** 点列表 */ - pointList: BlockSideModelPoint[] = [] - /** 实际替代刀直径 */ - realKnifeRadius = 0 - /** 实际替代刀点阵 */ - realPointList: BlockSideModelPoint[] = [] - /** 实际刀编号 */ - realKnifeId = -1 - - /** cnc不能加工 cncUndo */ - isCncCanNotProcess: boolean = true - /** 超限类型(cnc为何不能加工) unDoType */ - cncCanNotProcessType = '' - - /** 是否在开料机加工 IsDo */ - isCutting: boolean = true - - /** 二维造型的偏移数组 */ - offsetList: ModelOffsetData[] = [] - - /** 转换过的二维刀路路径{isFaceB, name刀名称, offset偏移, knife刀, knifeId刀Id, knifeRadius刀半径, depth深度, points{x,y,z,bul,r}, orgOffset(源偏移)} */ - VLines = [] - - offsetInfo = '' - /** 是否二维造型 */ - isVKnifeModel(): boolean { - return this.offsetList.length > 0 - } - - /** 是否三维造型 */ - is3VModel(): boolean { - return this.offsetList.length == 0 && this.pointList.some(t => Math.abs(t.depth - this.depth) > 0.01) - } - - constructor(data: any = null) { - if (data != null) { - this.modelId = data.modelId - this.lineId = data.lineId - this.textureId = data.textureId - this.face = data.face - this.knifeName = data.knifeName ? data.knifeName.trim() : '' - this.knifeRadius = StringFormat.toFixed(data.knifeRadius, 3) - this.depth = StringFormat.toFixed(data.depth, 3) - - - // if (data.originModeling) - // { - // this.originModeling = JSON.parse(JSON.stringify(data.originModeling)) - // MachineHelper.countModelWidthAndLength(this) - // } - } - } - -} - -/** 小板区域 */ -export enum BlockRegion { - /** 左下 = 0 */ - LEFT_BOTTOM = 0, - /** 右下 = 1 */ - RIGHT_BOTTOM = 1, - /** 右上 = 2 */ - RIGHT_TOP = 2, - /** 左上 = 3 */ - LEFT_TOP = 3, -} - -/** 造型偏移 */ -export class SizeExpand { - /** 左 */ - left: number = 0 - /** 右 */ - right: number = 0 - /** 上 */ - top: number = 0 - /** 下 */ - bottom: number = 0 - /** 板外扩宽 */ - width: number = 0 - /** 板外扩长 */ - length: number = 0 - /** 排版外扩宽 */ - outWidth: boolean - /** 排版外扩长 */ - outLength: boolean - /** 是否完成 */ - hasDone: boolean - - constructor(data: any = null) { - if (data != null) { - this.left = data.left || 0 - this.right = data.right || 0 - this.bottom = data.bottom || 0 - this.top = data.top || 0 - this.width = (this.left + this.right) || 0 - this.length = (this.top + this.bottom) || 0 - } - } - - /** 设置长宽 */ - setSize() { - this.width = this.left + this.right - this.length = this.top + this.bottom - } - - toString() { - return `左:${this.left.toFixed(2)} 右:${this.right.toFixed(2)} 上:${this.top.toFixed(2)} 下:${this.bottom.toFixed(2)}` - } -} - -/** - * 板件侧面早些点阵 - */ -export class BlockSideModelPoint { - /** 坐标X */ - pointX: number = 2 - /** 坐标Y */ - pointY: number = 2 - /** 坐标Z */ - pointZ: number = 2 - /** 半径 */ - radius: number = 0 - /** 深度 */ - depth: number = 6 - /** 凹凸度 */ - curve: number = 0 - - constructor(data: any = null) { - if (data != null) { - this.pointX = StringFormat.toFixed(data.pointX || data.x) - this.pointY = StringFormat.toFixed(data.pointY || data.y) - this.pointZ = StringFormat.toFixed(data.pointZ || data.z) - this.radius = StringFormat.toFixed(Math.abs(data.radius || 0)) - this.depth = StringFormat.toFixed(data.depth) - this.curve = data.curve || data.buls || 0 - - if (this.radius == 0 && this.curve != 0) { - this.radius = 1 / this.curve - } - } - } - - copy(): BlockSideModelPoint { - let obj = new BlockSideModelPoint() - obj.pointX = this.pointX - obj.pointY = this.pointY - obj.radius = this.radius - obj.depth = this.depth - obj.curve = this.curve - return obj - } -} - - -/** 放置板的边框集合,内部轮廓,偏移后轮廓 */ -export class PlaceBorderContour { - /** 放置方式 */ - placeStyle: PlaceStyle = PlaceStyle.FRONT // 正面 - /** 1成品轮廓 必须提前生成 */ - borderFinal: CAD.Curve2d[] - /** 2原始轮廓 <不含预铣> 必须提前生成 */ - borderOrg: CAD.Curve2d[] - /** 2.原始轮廓含预铣 border_preCut */ - borderPreMilling: CAD.Curve2d[] = [] - - /** 2原始多段线 《不含预铣》 必须提前生成,用于 计算造型,2v板外干涉轮廓 */ - polylineOrg: Polyline | null = null - - /** 3.1开料轮廓 <含预铣> */ - border: CAD.Curve2d[] = [] - - /** 3.2真.开料轮廓.同刀辅助._有预铣带预铣) border_tdfz */ - borderSameKnifeHelpCut: CAD.Curve2d[] = [] - /** 走刀路径(预铣) */ - cutLines: CAD.Curve2d[] = [] - - /** 走刀路径2(预铣 同刀辅助) cutLines_tdfz */ - cutLinesSameKnifeHelpCut: CAD.Curve2d[] = [] - - /** 排版轮廓+预铣+同刀辅助+刀半径+缝隙/2 再与造型外扩并集 border_moving */ - borderMoving: CAD.Curve2d[] = [] - /** 优化轮廓,用于王者优化 border_wxyh */ - borderKingOptimize: CAD.Curve2d[] = [] - - /** 板内轮廓挖穿造型(borders_inner) */ - borderModelThrough: CAD.Curve2d[][] = [] - /** 板内轮廓挖穿r(borders_inner_r) */ - borderModelThroughR: number[] = [] - /** 板内挖穿造型走刀路径,内部走刀轮廓(cutLines_inner) */ - cutLinesModelThrough: CAD.Curve2d[][] = [] - /** 板内排版轮廓,用于手动排版定位(borders_inner_place) */ - borderInnerPlace: CAD.Curve2d[][] = [] - /** 板内空间:挖穿造型(spaces_inner) */ - blockInnerSpace: PlaceSpace[] = [] - /** 板外空间:缺角(spaces_outer) */ - blockOuterSpace: PlaceSpace[] = [] - - /** 空间,包括造型矩形与缺角空间 */ - spaces: PlaceSpace[] = [] - - /** 2v刀路,板外轮廓 */ - polylines2vModel: Polyline[] = [] - - /** 造型,板外轮廓 */ - polylinesOutModel: Polyline[] = [] - - /** 翻转后的这些轮廓集合 */ - placeContours: PlaceBorderContour[] - - constructor(placeStyle: PlaceStyle, borderFinal: CAD.Curve2d[], borderOrg: CAD.Curve2d[]) { - this.placeStyle = placeStyle - this.borderFinal = borderFinal - this.borderOrg = borderOrg - this.placeContours = [] - } - - /** 开料刀 半径变化了 */ - cutKnifeChanged() { - this.cutLines = [] - this.cutLinesSameKnifeHelpCut = [] - this.borderMoving = [] - // this.borderKingOptimize = null; - - this.borderModelThrough = [] - this.borderInnerPlace = [] - this.blockInnerSpace = [] - this.blockOuterSpace = [] - if (this.placeContours) - this.placeContours.forEach(t => t.cutKnifeChanged()) - } - - /** 预铣值变化, 将有关轮廓全部清理 */ - preValueChanged() { - // console.log('预铣值变化, 将有关轮廓全部清理') - this.border = [] - this.borderSameKnifeHelpCut = [] - this.cutLines = [] - this.cutLinesSameKnifeHelpCut = [] - this.borderMoving = [] - // this.borderKingOptimize = null; - this.blockOuterSpace = [] - if (this.placeContours) - this.placeContours.forEach(t => t.preValueChanged()) - } - - /** 同刀辅助 变化了 */ - sameKnifeGapChanged() { - this.borderSameKnifeHelpCut = [] - this.cutLinesSameKnifeHelpCut = [] - this.borderMoving = [] - // this.borderKingOptimize = null; - this.blockOuterSpace = [] - if (this.placeContours) - this.placeContours.forEach(t => t.sameKnifeGapChanged()) - } - - /** 克隆 */ - clone(): PlaceBorderContour { - let newObj = new PlaceBorderContour(this.placeStyle, this.borderFinal, this.borderOrg) - newObj.borderPreMilling = this.borderPreMilling - newObj.polylineOrg = this.polylineOrg - newObj.border = this.border - newObj.borderSameKnifeHelpCut = this.borderSameKnifeHelpCut - newObj.cutLines = this.cutLines - newObj.cutLinesSameKnifeHelpCut = this.cutLinesSameKnifeHelpCut - newObj.borderMoving = this.borderMoving - // newObj.borderKingOptimize = this.borderKingOptimize; - newObj.borderModelThrough = this.borderModelThrough - newObj.borderModelThroughR = this.borderModelThroughR - newObj.cutLinesModelThrough = this.cutLinesModelThrough - newObj.borderInnerPlace = this.borderInnerPlace - newObj.blockInnerSpace = this.blockInnerSpace - newObj.blockOuterSpace = this.blockOuterSpace - newObj.spaces = this.spaces - newObj.polylines2vModel = this.polylines2vModel - newObj.polylinesOutModel = this.polylinesOutModel - newObj.placeContours = [] - for (let pc of this.placeContours) { - if (pc) { - let npc = pc.clone() - newObj.placeContours.push(npc) - } - } - console.log('克隆', newObj) - return newObj - } -} - - -/** 优化空间 */ -export class PlaceSpace { - /** 大板ID */ - boardId: number - /** 空间ID */ - spaceId: number - /** 坐标x */ - x: number - /** 坐标y */ - y: number - /** 宽 */ - width: number - /** 长 */ - length: number - /** 是否是小板内部造型空间 IsInner */ - isBlockInnerSpace = false - /** 顶点Y */ - topY(): number { return this.y + this.length } - /** 右边X */ - topX(): number { return this.x + this.width }; - - constructor(x: number, y: number, width: number, length: number) { - this.boardId = 0 - this.spaceId = 0 - this.x = x - this.y = y - this.width = width - this.length = length - } - - /** 克隆 */ - clone(): PlaceSpace { - let obj = new PlaceSpace(this.x, this.y, this.width, this.length) - return obj - } - - static create(x1, y1, x2, y2): PlaceSpace { - return new PlaceSpace(x1, y1, x2 - x1, y2 - y1) - } -} - -/** 开料板材 */ -export class PlaceMaterial { - /** 订单号(*) */ - orderId = '' - /** 板材ID(*) */ - goodsId = '' - /** 板材名称(*) */ - goodsName = '' - /** 规格(*) */ - spec = '' - /** 材质(*) */ - material = '' - /** 颜色(*) */ - color = '' - /** 品牌(*) */ - brand = '' - /** 有纹路 */ - hasTexture = false - /** 最后保存时间 */ - updateTime = '' - /** 纹路标识 */ - get textureFlag(): string { return this.hasTexture ? '有' : '无' } - /** 板材全名 */ - get fullName(): string { return `${this.hasTexture ? '' : '【无纹】'}${this.thickness} ${this.goodsName} ${this.material} ${this.color}` } - /** 板材原宽 */ - orgWidth = 1220 - /** 板材原长 */ - orgLength = 2440 - /** 板宽,用于生产 */ - width = 1220 - /** 板长 */ - length = 2440 - /** 板厚 */ - thickness = 18 - /** 全部尺寸 */ - get fullSize(): string { return `${this.length}*${this.width}*${this.thickness}` } - - /** 修边值(*) Border */ - cutBorder = 3 - /** 开料刀直径(*) CutDia */ - diameter = 6 - /** 开料刀路间隙(*) CutGap */ - cutKnifeGap = 1 - /** 预铣值 PreCutValue */ - preMillingSize = 0 - /** 是否辅助开料 HelpCut */ - isHelpCut = false - /** 辅助开料标识 */ - get strHelpCut() { return this.isHelpCut ? '✔' : '✘' } - /** 同刀辅助开料偏移 SameKnifeHelpCutGap */ - helpCutGap = 0 - - /** 开料刀ID */ - cutKnifeId = -1 - /** 开料刀名称 */ - cutKnifeName = '' - /** 辅助刀ID */ - helpKnifeId = -1 - /** 辅助刀名称 */ - helpKnifeName = '' - get strHelpKnifeName() { return this.isHelpCut ? this.helpKnifeName : '' } - - /** 是否已优化(*) isSorted */ - isOptimized = false - get optimizedFlag() { return this.isOptimized ? '是' : '-' } - /** 大板数(*) */ - boardCount = 0 - /** 余料板数 */ - remainBoardCount = 0 - /** 最小板号(*) */ - minBoardId = 0 - /** 最大板号(*) */ - maxBoardId = 0 - /** 当前板号 */ - currentBoardId = 0 - - /** 总平均利用率(*) AvgLyr_All */ - avgUsageRateAll = 0 - /** 前N块板(不包含最后一块板)的平均利用率(*) AvgLyr_NoLastOne */ - avgUsageRateExcludeLastBoard = 0 - /** 最后一块板的利用率(*) Lyr_LastOne */ - usageRateLastBoard = 0 - /** 分配到该板材的 小板数量 */ - allBlockCount = 0 - /**分配到该板材的优化后小板数量 -- 选择优化的板件数目 */ - selectedBlockCount = 0 - /** 分配到该板材的优化后 未被优化的 小板数量 */ - noPlaceBlockCount = 0 - /** 优化时大板数(*) */ - optimizingBoardCount = 0 - /** 优化时余料板数 */ - optimizingRemainBoardCount = 0 - /** 优化时不含余料的大板数 */ - get OptimizingNoRemainBoardCount() { return this.optimizingBoardCount - this.optimizingRemainBoardCount } - /** 优化时总平均利用率(*) */ - optimizingAvgUsageRateAll = 0 - /** 优化时前N块板(不包含最后一块板)的平均利用率(*) */ - optimizingAvgUsageRateExcludeLastBoard = 0 - /** 优化时最后一块板的利用率(*) */ - optimizingUsageRateLastBoard = 0 - - /** 优化时间 */ - - placeTime - /** 使用大板情况(*) */ - usedBoardInfo = '' - /** 小板排版情况(*) */ - blockPlaceInfo = '' - /** 余料板情况 */ - remainBoardInfo = '' - - /** 翻面开料的大板数 BoardCount_do2Face */ - boardCountFlipFace = 0 - /** 小板数 */ - blockCount = 0 - /** 小板总面积 */ - blockArea = 0 - - /** 封边长度 [{t:1,l:233}, {t:2,l:100}] */ - edgeSealLengthList = [] - edgeSealLengthStr() { - let s = '' - for (let rt of this.edgeSealLengthList) { - s += `[${rt.t}]${rt.l}米;` - } - return s - } - - /** 余料前利用(异形优化) */ - // ScrapBoardList: ScrapBoard[] = []; - remainBoardList: RemainBoard[] = [] - /** 后余料板 */ - remainList: any[] = [] - - /** 大板(优化)列表 */ - boardList: PlaceBoard[] = [] - /** 小板(优化)列表 */ - blockList: PlaceBlock[] = [] - /** 是否有锁定的大板 */ - hasBoardLocked() { return this.boardList.some(t => t.isLocked) } - - /** 最优优化结果(临时) */ - tempBestPlaceResult: MaterialPlaceResult | null = null - tempBestPlaceResultLast: MaterialPlaceResult | null = null - tempBestPlaceResultLastTime = 0 - /** 需要最后一片重新计算 */ - rePlaceLastBoardRequired = false - tempPlaceUnregular: boolean = false - /** 最优优化结果(临时)标识 */ - tempPlaceResultFlag() { return (this.tempBestPlaceResult) ? '有' : '-' } - /** 最优优化结果是否只使用没锁定的 */ - tempPlaceResultOnyUnlockedBoard = false - /** 最后优化错误信息 */ - tempPlaceResultError: string = '' - /** 移动小板临时仓 */ - moveBlockList: PlaceBlock[] = [] - - /** 新优化前原配置,用于取消优化后还原到原先的配置 */ - savedSetting - - constructor(data: any = null) { - if (data != null) { - this.boardList = data?.boardList || [] - this.boardCount = data?.boardCount || 0 - this.orderId = data.orderId - this.goodsId = data.goodsId - this.goodsName = data.goodsName - this.spec = data.spec - this.material = data.material - this.color = data.color - this.brand = data.brand - this.hasTexture = true - if (!(data.hasTexture == null || data.hasTexture == undefined)) - this.hasTexture = data.hasTexture - this.orgWidth = StringFormat.toFixed(Number(data.orgWidth || data.width)) - this.orgLength = StringFormat.toFixed(Number(data.orgLength || data.length)) - this.width = StringFormat.toFixed(Number(data.width)) - this.length = StringFormat.toFixed(Number(data.length)) - this.thickness = StringFormat.toFixed(Number(data.thickness)) - this.cutBorder = StringFormat.toFixed(Number(data.cutBorder)) - this.diameter = StringFormat.toFixed(Number(data.diameter)) - this.cutKnifeGap = StringFormat.toFixed(Number(data.cutKnifeGap)) - this.preMillingSize = data.preMillingSize || 0 - this.isHelpCut = data.isHelpCut || false - this.helpCutGap = data.helpCutGap || 0 - this.cutKnifeId = data.cutKnifeId || -1 - this.helpKnifeId = data.helpKnifeId || -1 - this.isOptimized = Boolean(data.isOptimized) - this.boardCount = StringFormat.toFixed(Number(data.boardCount)) - this.remainBoardCount = StringFormat.toFixed(data.remainBoardCount ? Number(data.remainBoardCount) : 0) - this.minBoardId = Number(data.minBoardId) - this.maxBoardId = Number(data.maxBoardId) - this.avgUsageRateAll = StringFormat.toFixed(Number(data.avgUsageRateAll)) - this.avgUsageRateExcludeLastBoard = StringFormat.toFixed(Number(data.avgUsageRateExcludeLastBoard)) - this.usageRateLastBoard = StringFormat.toFixed(Number(data.usageRateLastBoard)) - this.usedBoardInfo = data.usedBoardInfo - this.blockPlaceInfo = data.blockPlaceInfo - this.remainBoardInfo = data.remainBoardInfo ? data.remainBoardInfo : '' - // this.remainBoardList = data.remainBoardList ? data.remainBoardList : [] - - if (Array.isArray(data.remainBoardList)) { - this.remainBoardList = data.remainBoardList - } else { - this.remainBoardList = data.remainBoardInfo ? JSON.parse(this.remainBoardInfo) : '' - } - - this.updateTime = data['this.updateTime'] || '' - } - } - - /** 保存 原尺寸,开料刀,预铣,辅助开料 */ - saveSetting() { - let setting: any = {} - // 尺寸, - setting.orgWidth = this.orgWidth - setting.orgLength = this.orgLength - setting.width = this.width - setting.length = this.length - setting.thickness = this.thickness - - setting.preMillingSize = this.preMillingSize - setting.isHelpCut = this.isHelpCut - setting.helpCutGap = this.helpCutGap - - setting.diameter = this.diameter - setting.cutKnifeId = this.cutKnifeId - setting.cutKnifeName = this.cutKnifeName - setting.helpKnifeId = this.helpKnifeId - setting.helpKnifeName = this.helpKnifeName - this.savedSetting = setting - - // 小板备份资料 - let createTime = Date.now() - for (let block of this.blockList) { - if (block.blockDetail) { - let savedObj = block.blockDetail.savedSetting - if (savedObj && savedObj.createTime == createTime) - break // 已备份 - - - block.blockDetail.saveSetting() - block.blockDetail.savedSetting.createTime = createTime - } - - } - } - - loadSetting() { - if (this.savedSetting == null) - return - // 尺寸, - this.orgWidth = this.savedSetting.orgWidth - this.orgLength = this.savedSetting.orgLength - this.width = this.savedSetting.width - this.length = this.savedSetting.length - this.thickness = this.savedSetting.thickness - - this.preMillingSize = this.savedSetting.preMillingSize - this.isHelpCut = this.savedSetting.isHelpCut - this.helpCutGap = this.savedSetting.helpCutGap - this.diameter = this.savedSetting.diameter - this.cutKnifeId = this.savedSetting.cutKnifeId - this.cutKnifeName = this.savedSetting.cutKnifeName - this.helpKnifeId = this.savedSetting.helpKnifeId - this.helpKnifeName = this.savedSetting.helpKnifeName - - for (let block of this.blockList) { - if (block.blockDetail) { - block.blockDetail.loadSetting() - block.blockDetail.savedSetting = null - } - - } - } -} - -/** 排单大板 */ -export class PlaceBoard { - /** 数据源ID */ - sourceId = 0 - - /** 大板编码(余料板号) */ - boardNo = '' - /** 大板ID */ - boardId = 0 - /** 大板ID(按全排单) */ - fullBoardId = 0 - /** 大板宽 */ - width = 0 - /** 大板长/高 */ - length = 0 - /** 面积 */ - area = 0 - - /** 小板数 */ - blockCount = 0 - /** 利用面积 BlockSize */ - blockArea = 0 - /** 利用率 */ - usageRate = 0 - /** 余料板异形 IsOddmengt */ - isAdnormal() { return this.points && this.points.length > 0 } - /** 余料板异形点{x,y,bul} */ - points: any[] = [] - - /** 是否加工2面, 需反面 IsDo2Face */ - isTwoFaceProcessing() { - let res = this.blockList.some(e => e.isDoubleFaceProcess()) - return res - } - /** 是否锁定 */ - isLocked = false - - /** 是否开料 */ - isCuted = false - /** 开料状态 - * - * 0 未开料 1 开料中 2 已开料 - */ - cutedType = 0 - /** 小板列表 */ - blockList: PlaceBlock[] = [] - /** 余料板列表 ScrapBlockList */ - remainBlockList: RemainBlock[] = [] - /** 需要生成余料空间 needToScrapSpace */ - isCreateRemainSpace = false - /** 异形大板的轮廓线 */ - polyline?: Polyline - /** 无法加工的左边出现造型 */ - hasModelOnLeft = false - /** 无法加工的右边出现造型 */ - hasModelOnRight = false - - /** 构造函数 */ - constructor(boardId: number, width: number, length: number, sourceId = 0, boardNo = '') { - this.sourceId = sourceId - this.boardId = boardId - this.width = width - this.length = length - this.boardNo = boardNo - this.area = width * length * 0.000001 - this.blockList = [] - } - - reset() { - this.blockCount = this.blockList.length - this.blockArea = ArrayExt.sum(this.blockList, t => t.area) - this.usageRate = (100 * this.blockArea) / this.area - // this.isTwoFaceProcessing = this.blockList.some(t => t.isCutOtherFace) - } - - addBlock(block: PlaceBlock) { - if (this.blockList.includes(block)) - return - this.blockList.push(block) - this.reset() - } - - removeBlock(block: PlaceBlock) { - let index = this.blockList.findIndex(t => t == block) - if (index == -1) - return - this.blockList.splice(index, 1) - this.reset() - } - - getSize(): string { - return `${this.width}*${this.length}` - } -} - -/** 实际开料的板材 || 余料板材 */ -export class RemainBoard { - /** 余料板ID */ - id: number | string = '' - /** 源排单ID */ - orgPlanId: number | string = '' - /** 排单ID */ - planId: number | string = '' - /** 状态(未使用 = 0, 已使用 = 1) */ - status: number = 0 - /** 商品ID */ - goodsId: number | string = '' - /** 商品名 */ - goodsName: string = '' - /** 材质 */ - material: string = '' - // /** 材料名 */ - // materialName: string = ''; - /** 颜色 */ - color: string = '' - /** 宽 */ - width: number = 0 - /** 长 */ - length: number = 0 - /** 品牌 */ - brand: string = '' - // /** 保存仓库 */ - // storeHouse: string = ''; - /** 纹路 */ - texture?: string - /** 排单号 */ - planCode: string = '' - /** 数量 */ - count: number = 0 - /** 排版宽 */ - placeWidth() { return this.placeStyle % 2 == 0 ? this.width : this.length } - /** 排版长 */ - placeLength() { return this.placeStyle % 2 == 0 ? this.length : this.width } - /** 厚度 */ - thickness: number | undefined - /** 轮廓 */ - outLineJson: string = '{}' - /** 备注 */ - remark: string = '' - /** */ - basePolyline: Polyline | undefined - /** 排版样式 */ - placeStyle: PlaceStyle = PlaceStyle.FRONT - /** 排版多段线 */ - placePolyline: Polyline | undefined - /** 是否已使用 */ - isUsed: boolean = false - /** 是否已入库 */ - isStored = false - - /** 是否开料 */ - isCuted = false - - /**是否开料 */ - cutedType = 0 - /** 实际优化板材的优化数据 */ - // placeBoardList: BoardPlaceResult[] = [] - /** 实际开料大板的数量 */ - usedCount = 0 - - /** 总利用率 */ - avgUsageRateAll = 0 - /** 前N块板利用率 */ - avgUsageRateExcludeLastBoard = 0 - /** 最后一块板利用率 */ - usageRateLastBoard = 0 - copy(): RemainBoard { - let obj = new RemainBoard() - obj.id = this.id - obj.planId = this.planId - obj.status = this.status - obj.goodsId = this.goodsId - obj.goodsName = this.goodsName - obj.material = this.material - obj.color = this.color - obj.width = this.width - obj.length = this.length - obj.thickness = this.thickness - obj.outLineJson = this.outLineJson - obj.remark = this.remark - obj.placeStyle = this.placeStyle - obj.isUsed = this.isUsed - obj.texture = this.texture - return obj - } -} - -/** 余料小板 */ -export class RemainBlock { - /** 余料板ID */ - remainId: number = 0 - /** 排版坐标x */ - placeX: number - /** 排版坐标y */ - placeY: number - /** 开料宽 */ - placeWidth: number - /** 开料长 */ - placeLength: number - /** 是否不规则 */ - isUnRegular = false - /** 是否重叠 */ - isOverlap = false - /** 是否已录入余料库 */ - isStored = false - - private pointlist: any = [] - points() { - if (this.pointlist.length == 0) { - this.pointlist.push({ x: 0, y: 0 }) - this.pointlist.push({ x: this.placeWidth, y: 0 }) - this.pointlist.push({ x: this.placeWidth, y: this.placeLength }) - this.pointlist.push({ x: 0, y: this.placeLength }) - } - return this.pointlist - } - - private pl: Polyline | null = null - get polyline() { return this.pl } - set polyline(v) { this.pl = v; this.polylineOffset = null } - /** 多段线偏移 */ - polylineOffset?: Polyline | null - - constructor(x, y, width, length) { - this.placeX = x - this.placeY = y - this.placeWidth = width - this.placeLength = length - } - - /** 修改大小 */ - reSize(width, length) { - if (this.isUnRegular) - return - this.placeWidth = width - this.placeLength = length - this.pointlist = [] - this.pl = null - this.polylineOffset = null - } - - setPoints(pts) { - this.pointlist = pts - if (this.pointlist.length == 0 || this.pointlist.length == 4) - this.isUnRegular = false - - else - this.isUnRegular = true - - this.polyline = null - this.polylineOffset = null - } - - load(data) { - this.remainId = data.remainId - this.placeX = data.placeX - this.placeY = data.placeY - this.placeWidth = data.placeWidth - this.placeLength = data.placeLength - this.isUnRegular = data.isUnRegular - this.pointlist = data.pointlist - this.isStored = data.isStored || false - } -} - -/** 板材优化结果 */ -export class MaterialPlaceResult { - /** 线程ID */ - threadId = 0 - /** 使用时间 */ - usedTime = 0 - /** 优化次数 */ - placeCount = 0 - /** 大板数 */ - boardCount = 0 - /** 总平均利用率 */ - avgUsageRateAll = 0 - /** 前N块板(不包含最后一块板)的平均利用率 */ - avgUsageRateExcludeLastBoard = 0 - /** 最后一块板的利用率 */ - usageRateLastBoard = 0 - /** 余料板数 */ - remainBoardCount = 0 - /** 大板列表 */ - boards: BoardPlaceResult[] = [] - /** 小板优化数据 */ - results: BlockPlaceResult[] = [] - /** 优化是否全部完成 */ - placeStoped = false - /** 余料板利用情况 */ - remailBoardList: any[] = [] - - constructor() { - - } - - /** 比other 更好 */ - isBetterThan(other: MaterialPlaceResult): boolean { - if (this.boardCount < other.boardCount) - return true - if (this.usageRateLastBoard < other.usageRateLastBoard) - return true - return false - } -} - - -export class BoardPlaceResult { - /** 大板ID */ - boardId = 0 - /** 宽 */ - width = 0 - /** 长 */ - length = 0 - /** 是否余料板 */ - isRemainBoard = false - /** 余料板编码 */ - remainNo = '' - /** 余料板ID */ - remainId = 0 - /** 是否废弃物 */ - isScrap = false - /** 点列表 */ - points: any[] = [] - /** 小板排版结果 */ - blocks: BlockPlaceResult[] = [] - /** 小板排版 */ - objects: any[] = [] - /** 面积 */ - area = 0 - /** 是否双面加工 */ - isTwoFaceProcess = false - - cutedType = 0 - isLock = false - /**当前大板的利用率 */ - // avgUsageRate = 0 - - constructor() { - - } - - /** 是否有异形板重叠 */ - hasOverLapBlock() { - for (let i = 0; i < this.blocks.length; i++) { - let b1 = this.blocks[i] - for (let j = i + 1; j < this.blocks.length; j++) { - let b2 = this.blocks[j] - if (this.isOverLap(b1, b2)) - return true - } - } - return false - } - - /** 两块板是否是否重叠 */ - isOverLap(b1: BlockPlaceResult, b2: BlockPlaceResult): boolean { - let l1 = { x: b1.placeX, y: b1.placeY + b1.length } - let r1 = { x: b1.placeX + b1.width, y: b1.placeY } - let l2 = { x: b2.placeX, y: b2.placeY + b2.length } - let r2 = { x: b2.placeX + b2.width, y: b2.placeY } - - if (l1.x > r2.x || l2.x > r1.x) - return false - if (l1.y < r2.y || l2.y < r1.y) - return false - return true - } -} - -/** 小板优化结果 */ -export class BlockPlaceResult { - /** 小板号 */ - blockId = 0 - - /** 小板编号 */ - blockNo = '' - /** 大板ID */ - boardId: number - /** 排版情况: 排版ID */ - placeId: number - /** 排版情况: 大板坐标X */ - placeX: number // 坐标 - /** 排版情况: 大板坐标Y */ - placeY: number - /** 宽 */ - width: number - /** 长 */ - length: number - /** 排版情况正纹 */ - placeStyle: PlaceStyle - /** 面积 */ - area: number - - constructor(blockId: number, boardId: number, placeId: number, x: number, y: number, width: number, length: number, pstyle: PlaceStyle, area: number) { - this.blockId = blockId - this.boardId = boardId - this.placeId = placeId - this.placeX = x - this.placeY = y - this.placeStyle = pstyle - this.width = width - this.length = length - this.area = area - } -} \ No newline at end of file diff --git a/samples/demoDataHandleServer.ts b/samples/demoDataHandleServer.ts deleted file mode 100644 index 4e9cf7f..0000000 --- a/samples/demoDataHandleServer.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { Processor, ProcessorCollection, ProcessorModule } from "../src/device"; - - -export class ProcessorManager implements ProcessorCollection { - private processors = new Map>(); - private currentProcessor?: Processor; - - constructor(){ - - } - /** 注册模块流程 */ - registerProcessor(name: string, processor: Processor): this { - this.processors.set(name, processor); - return this; - } - /** 使用处理器 */ - useProcessor(name: string): Processor { - const processor = this.processors.get(name); - if (!processor) { - throw new Error(`Processor ${name} not found`); - } - this.currentProcessor = processor; - return processor; - } - /** 获取处理器 */ - getProcessor(name: string): Processor | undefined { - return this.processors.get(name); - } - /** 获取正在使用的处理器 */ - getCurrentProcessor(): Processor | undefined { - return this.currentProcessor; - } -} \ No newline at end of file diff --git a/samples/demoDatahandle/demoDataHandle1.ts b/samples/demoDatahandle/demoDataHandle1.ts deleted file mode 100644 index 6c7a550..0000000 --- a/samples/demoDatahandle/demoDataHandle1.ts +++ /dev/null @@ -1,75 +0,0 @@ - -import { ProcessorModule, StepControllerProcessor } from "../../src/device"; -import { RectOptimizeMachineModule } from "../moduleManager/module1"; -/** - * demo 开料机处理器 - * - * -*/ -export class demoHandleGroupCutting { - processorName = "cutting" - processor: StepControllerProcessor - constructor() { - - const callbackStyleModule: ProcessorModule = { - moduleName: "callbackStyle", - process(input, next, context) { - - console.log("做优化"); - const _input = input - const _next = next - const _context = context - // 可以在这里调用异步操作 - - Reflect.set(context, 'CallBack', callBack1) - // 决定是否调用 next - - function callBack1(v) { - console.log('接收到其它模块回传的数据', v); - } - // 调用 next 继续流程 - return next(input); - } - }; - const demoModule: ProcessorModule = { - moduleName: "demoModule", - - process(input, next, context) { - // 写入上下文 - context.processedAt = new Date().toLocaleString(); - context.originalLength = input.length; - // 设置下一步需要的上下文 - context.previousStep = "demoModule"; - if (context.CallBack) { - context.CallBack("demoModule end and callback") - } - return next(input); - } - }; - - this.processor = new StepControllerProcessor(); - this.processor.use([ - { - moduleName: "traditional", - handle(input, next) { - // 第一个流程 - console.log(`第一个模块功能:有${input?.blockList.length}片小板,可以做些计算`) - return next ? next(input) : input; - } - }, - callbackStyleModule, - demoModule, - RectOptimizeMachineModule, - { - moduleName: "final", - process(input, next) { - // 不调用 next,终止流程 - console.log('结束了') - return next(input); - } - } - ]) - - } - -} \ No newline at end of file diff --git a/samples/demoDatahandle/demoDataHandle2.ts b/samples/demoDatahandle/demoDataHandle2.ts deleted file mode 100644 index 586a535..0000000 --- a/samples/demoDatahandle/demoDataHandle2.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { DeviceBase } from "../../src/device"; -import { ConfigBase } from "../../src/models/config"; -import { BusinessRectOptimizeMachine } from "../businessCapability/businessRectOptimizeMachine"; - -/** - * 某个处理器 一个 功能 和 业务功能的集合 - * 可以包含多个业务功能和 基础功能 - * - * -*/ -export class demoHandleGroup extends DeviceBase { - - constructor(){ - super() - } - - -} \ No newline at end of file diff --git a/samples/demoKnives.ts b/samples/demoKnives.ts deleted file mode 100644 index f866673..0000000 --- a/samples/demoKnives.ts +++ /dev/null @@ -1,112 +0,0 @@ -import { _knifeType, Knife } from "./confClass" - -/** demo 刀具数据 */ -export const knifeData :Knife= { - "isEnabled": true, - "axleId": 2, - "knifeId": 2, - "knifeName": "T1", - "knifeType": 3, - "ability": [ - 5 - ], - "diameter": 5, - "length": 20, - "sawThiness": 7, - "sawDirection": 2, - "processDirection": 4, - "speed": 0, - "stepDepth": 0, - "offsetX": 0, - "offsetY": 0, - "offsetZ": 0, - "baseX": 0, - "baseY": 0, - "isModularDrill": false, - "isPreStartEnabled": false, - "preStartAheadActionCount": 5, - "isPreStartToolChangeDelay": false, - "preStartToolChangeDelayCode": "", - "isAxisStartCodePostpost": false, - "isAxisStopCodePrepose": false, - "drillGroupCode": "", - "axisStartCode": "M03 S18000\n", - "knifeStartCode": `M06 T1\nG43 H1\n`, - "drillGroupStartCode": "T1", - "drillGroupEndCode": "", - "knifeStopCode": "", - "axisStopCode": "M05\n", -} -export const knifeData1:_knifeType = { - "isEnabled": true, - "axleId": 2, - "knifeId": 2, - "knifeName": "T2", - "knifeType": 3, - "ability": [ - 5 - ], - "diameter": 6, - "length": 20, - "sawThiness": 7, - "sawDirection": 2, - "processDirection": 4, - "speed": 0, - "stepDepth": 0, - "offsetX": 0, - "offsetY": 0, - "offsetZ": 0, - "baseX": 0, - "baseY": 0, - "isModularDrill": false, - "isPreStartEnabled": false, - "preStartAheadActionCount": 5, - "isPreStartToolChangeDelay": false, - "preStartToolChangeDelayCode": "", - "isAxisStartCodePostpost": false, - "isAxisStopCodePrepose": false, - "drillGroupCode": "", - "axisStartCode": "M03 S18000\n", - "knifeStartCode": `M06 T2\nG43 H2\n`, - "drillGroupStartCode": "T2", - "drillGroupEndCode": "", - "knifeStopCode": "", - "axisStopCode": "M05\n", -} -export const knifeData2:_knifeType = { - "isEnabled": true, - "axleId": 2, - "knifeId": 2, - "knifeName": "T3", - "knifeType": 3, - "ability": [ - 5 - ], - "diameter": 6, - "length": 20, - "sawThiness": 7, - "sawDirection": 2, - "processDirection": 4, - "speed": 0, - "stepDepth": 0, - "offsetX": 0, - "offsetY": 0, - "offsetZ": 0, - "baseX": 0, - "baseY": 0, - "isModularDrill": false, - "isPreStartEnabled": false, - "preStartAheadActionCount": 5, - "isPreStartToolChangeDelay": false, - "preStartToolChangeDelayCode": "", - "isAxisStartCodePostpost": false, - "isAxisStopCodePrepose": false, - "drillGroupCode": "", - - "axisStartCode": "M03 S18000\n", - "knifeStartCode": `M06 T2\nG43 H2\n`, - "drillGroupStartCode": "T3", - "drillGroupEndCode": "", - "knifeStopCode": "", - "axisStopCode": "M05\n", -} \ No newline at end of file diff --git a/samples/demoParser.ts b/samples/demoParser.ts deleted file mode 100644 index 10d186f..0000000 --- a/samples/demoParser.ts +++ /dev/null @@ -1,126 +0,0 @@ - -import { ConfigBase } from "../src/base"; -import { ParserBase } from "../src/parsers"; -import { _knifeType, CodeParams } from "./confClass"; -import { knifeData, knifeData1, knifeData2 } from "./demoKnives"; -import { GCodeAction } from "./gcodes"; -export class DemoParser extends ParserBase { - usedKnife?:_knifeType - knifeList:_knifeType[] = [ - knifeData, - knifeData1, - knifeData2 - ] - constructor(config?: Record) { - super(); - // if(config){ - // if(config['knives']){ - // - // } - // } - - - const gcodeActions = new GCodeAction(); - this.codeManager['FSTART'] = { - name: 'FileStart', - // type:'Global', - // paramType:'array', - exec:(params) =>{ - return `G54 G90\nM03\n` - } - }; - this.codeManager['FEND'] = { - name: 'FileEnd', - exec:(params) =>{ - return `M30\n`; - } - } - this.codeManager['G0'] = { - name: 'G0', - paramType: 'kv:number', - exec:(params: CodeParams) => { - return gcodeActions.G0(params) + '\n'; - } - } - this.codeManager['G2'] = { - name: 'G2', - paramType: 'kv:number', - exec:(params: CodeParams)=> { - return gcodeActions.G2(params) + '\n'; - } - } - this.codeManager['G3'] = { - name: 'G3', - paramType: 'kv:number', - exec:(params: CodeParams)=> { - return gcodeActions.G3(params) + '\n'; - } - } - this.codeManager['TD'] = { - name: '', - exec:(diameter:number)=> { - let code = '' - let _knife: any - - if (diameter) { - _knife = this.knifeList?.find(e => e.diameter == diameter) - } - - - if (_knife != undefined) { - code += this.checkChangeKnife(_knife) - this.usedKnife = _knife - // code += _knife.axisStartCode - code += _knife.knifeStartCode - } - return code - } - } - this.codeManager['TN'] = { - name: 'TN', - exec:(knifeName:string) =>{ /**根据刀名称找刀 换刀 */ - let code = '' - let _knife: any = null - if (knifeName) { - _knife = this.knifeList?.find(e => e.knifeName == knifeName) - } - - if (_knife != undefined) { - code += this.checkChangeKnife(_knife) - this.usedKnife = _knife - // code += _knife.axisStartCode - code += _knife.knifeStartCode - } - return code - } - } - this.codeManager['TE'] = { - name:'TE', - exec:()=>{ - if(!this.usedKnife) return ''; - return this.usedKnife.knifeStopCode+'\n'; - } - } - } - - /** 内部功能逻辑 换刀时判断是否需要 上一把刀的停止代码 */ - private checkChangeKnife(knife: _knifeType) { - let code = ''; - /** true 需要 输出停刀代码 false 不需要 */ - let flag = false - // 必须要有刀 - if (this.usedKnife) { - let keys = Object.keys(knife) - for (const key of keys) { - if (knife[key] != this.usedKnife[key]) { - flag = true - continue - } - } - } - if (flag) { - code += this.exec('TE',[]); - } - return code; - } -} \ No newline at end of file diff --git a/samples/gcodes.ts b/samples/gcodes.ts deleted file mode 100644 index 6bdd2cb..0000000 --- a/samples/gcodes.ts +++ /dev/null @@ -1,528 +0,0 @@ -import { CodeParams } from "./confClass" - -function checkVal(val) { - let r = true - if ((val == undefined || val == '')) { - r = false - } - return r -} - -/**G代码指令 - * 目前 只需要做 G0 - G3 - */ -export enum GCode { - /**快速定位 空程移动 范例:G00 X100 Y50(刀具快速移动至X100、Y50位置) */ - G0 = 'G0', - /**快速定位 空程移动 范例:G00 X100 Y50(刀具快速移动至X100、Y50位置)*/ - G00 = 'G00', - /**直线 直线插补 范例:G01 X200 Y300 F150(刀具以150mm/min的进给速度直线移动至X200、Y300)*/ - G1 = 'G1', - /**直线 范例:G01 X200 Y300 F150(刀具以150mm/min的进给速度直线移动至X200、Y300)*/ - G01 = 'G01', - /** 顺时针 范例:G17 G02 X150 Y50 I50 J0 F100(在XY平面,以半径50mm顺时针圆弧插补至X150、Y50)*/ - G2 = 'G2', - /** 顺时针 范例:G17 G02 X150 Y50 I50 J0 F100(在XY平面,以半径50mm顺时针圆弧插补至X150、Y50)*/ - G02 = 'G02', - /** 逆时针 范例:G17 G03 X150 Y50 I50 J0 F100(在XY平面,以半径50mm逆时针圆弧插补至X150、Y50)*/ - G3 = 'G3', - /** 逆时针 范例:G17 G03 X150 Y50 I50 J0 F100(在XY平面,以半径50mm逆时针圆弧插补至X150、Y50)*/ - G03 = 'G03', - /**暂停 范例:G04 X2(暂停2秒)*/ - G4 = 'G4', - /**暂停 范例:G04 X2(暂停2秒)*/ - G04 = 'G04', - /** 通过中间点圆弧插补 - * 1. 通过中间点圆弧插补 - * 示例:G05 X60 Z50 IX50 IZ60 F120 刀具从当前位置出发,经过中间点 (50, 60),最终到达终点 (60, 50),形成圆弧轨迹。 - * 2. 高精轨迹控制(HPCC)模式 - * 功能:G05 可启动高精轨迹控制模式(HPCC),通过曲线拟合和参数优化,实现高精度、高速度的轨迹加工,适用于复杂曲面或高精度零件。 - * 指令格式: - * 启动:G05 P10000(P值设为10000) - * 关闭:G05 P0(P值设为0) - * 3、注意事项: - * 轴类型限制:建议线性轴参与HPCC模式,旋转轴需谨慎设置。 - 与其他功能冲突: - 在HPCC模式下,G61(准确停止检查)、G63(攻螺纹)等功能可能失效,需退出HPCC模式后恢复。 - 启用 RTCP(旋转刀具中心点)或 STCP 模式时,禁止同时启用HPCC功能。 - 不支持的功能: - 不支持单节停止(C40/M00)、反向手轮模拟、图形模拟等。 - 剩余距离显示可能不准确,因显示的是离曲线终点的距离,而非单节终点。 - * */ - G5 = 'G5', - /** 通过中间点圆弧插补 */ - G05 = 'G05', - /** 抛物线插补 */ - G6 = 'G6', - /** 抛物线插补 */ - G06 = 'G06', - /** z样条曲线插补 */ - G7 = 'G7', - /** z样条曲线插补 */ - G07 = 'G07', - /** 进给加速 */ - G8 = 'G8', - /** 进给加速 */ - G08 = 'G08', - /** 进给减速 */ - G9 = 'G9', - /** 进给减速 */ - G09 = 'G09', - /** 参数写入方式有效 */ - G10 = 'G10', - /** 参数写入方式取消 */ - G11 = 'G11', - /** 极坐标变成 */ - G16 = 'G16', - /** XY平面选择 */ - G17 = 'G17', - /** XZ平面选择 */ - G18 = 'G18', - /** YZ平面选择 */ - G19 = 'G19', - /** 英制输入 */ - G20 = 'G20', - /** 公制输入 */ - G21 = 'G21', - /** 半径尺寸编程方式 */ - G22 = 'G22', - /** 系统操作界面上使用 */ - G220 = 'G220', - /** 直径尺寸编程方式 */ - G23 = 'G23', - /** 系统操作界面上使用 */ - G230 = 'G230', - /** 子程序结束 */ - G24 = 'G24', - /** 跳转加工 */ - G25 = 'G25', - /** 循环加工 */ - G26 = 'G26', - /** 参考点返回 */ - G28 = 'G28', - /** 倍率注销 */ - G30 = 'G30', - /** 倍率定义 */ - G31 = 'G31', - /** 等螺距螺纹切削,英制 */ - G32 = 'G32', - /** 等螺距螺纹切削,公制 */ - G33 = 'G33', - /** 增螺距螺纹切削 */ - G34 = 'G34', - /** 减螺距螺纹切削 */ - G35 = 'G35', - //** 刀具半径补正取消 */ - G40 = 'G40', - //** 刀具半径补正 左*/ - G41 = 'G41', - //** 刀具半径补正 右*/ - G42 = 'G42', - //** 刀具长度补正+ */ - G43 = 'G43', - //** 刀具长度补正- */ - G44 = 'G44', - //** 道具偏置+/+ */ - G45 = 'G45', - //** 道具偏置+/- */ - G46 = 'G46', - //** 道具偏置-/- */ - G47 = 'G47', - //** 道具偏置-/+ */ - G48 = 'G48', - //** 刀具长度 补正取消 */ - G49 = 'G49', - //** 局部坐标系设定 */ - G52 = 'G52', - //** 机床坐标系选择 */ - G53 = 'G53', - //** 工件坐标系选择1 */ - G54 = 'G54', - //** 工件坐标系选择2 */ - G55 = 'G55', - //** 工件坐标系选择3 */ - G56 = 'G56', - //** 工件坐标系选择4 */ - G57 = 'G57', - //** 工件坐标系选择5 */ - G58 = 'G58', - //** 工件坐标系选择6 */ - G59 = 'G59', - //** 坐标系旋转有效 */ - G68 = 'G68', - //** 坐标系旋转取消 */ - G69 = 'G69', - /** 高速深孔钻 */ - G73 = 'G73', - /** 精搪孔 */ - G76 = 'G76', - /** 固定循环取消/取消循环指令 */ - G80 = 'G80', - /**程序停止 */ - M00 = 'M00', - /**选择性停止 */ - M01 = 'M01', - /** 程序结束 */ - M02 = 'M02', - /**主轴正转 */ - M03 = 'M03', - /**主轴反转 */ - M04 = 'M04', - /**主轴停止 */ - M05 = 'M05', - /**自动换刀 */ - M06 = 'M06', -} - -/**G代码基类 */ -export class GCodeAction { - - /** 空程直线 */ - G0(params: CodeParams) { - const { x, y, z, f, xKey, yKey, zKey, fKey, codeKey } = params - let val: string = GCode.G0 - if (typeof (codeKey) == 'string' && codeKey != '') { - val = codeKey - } - let _xkey = xKey || 'X' - let _yKey = yKey || 'Y' - let _zKey = zKey || 'Z' - let _fKey = fKey || 'F' - if (checkVal(x)) { - val += ` ${_xkey}${x}` - } - if (checkVal(y)) { - val += ` ${_yKey}${y}` - } - if (checkVal(z)) { - val += ` ${_zKey}${z}` - } - if (checkVal(f)) { - val += ` ${_fKey}${f}` - } - return val - } - /** 空程直线 */ - G00(params: CodeParams) { - const { x, y, z, f, xKey, yKey, zKey, fKey, codeKey } = params - let val: string = GCode.G00 - if (typeof (codeKey) == 'string' && codeKey != '') { - val = codeKey - } - let _xkey = xKey || 'X' - let _yKey = yKey || 'Y' - let _zKey = zKey || 'Z' - let _fKey = fKey || 'F' - if (checkVal(x)) { - val += ` ${_xkey}${x}` - } - if (checkVal(y)) { - val += ` ${_yKey}${y}` - } - if (checkVal(z)) { - val += ` ${_zKey}${z}` - } - if (checkVal(f)) { - val += ` ${_fKey}${f}` - } - return val - } - /** 直线 */ - G1(params: CodeParams) { - const { x, y, z, f, xKey, yKey, zKey, fKey, codeKey } = params - let val: string = GCode.G1 - if (typeof (codeKey) == 'string' && codeKey != '') { - val = codeKey - } - let _xkey = xKey || 'X' - let _yKey = yKey || 'Y' - let _zKey = zKey || 'Z' - let _fKey = fKey || 'F' - - - if (checkVal(x)) { - val += ` ${_xkey}${x}` - } - if (checkVal(y)) { - val += ` ${_yKey}${y}` - } - if (checkVal(z)) { - val += ` ${_zKey}${z}` - } - if (checkVal(f)) { - val += ` ${_fKey}${f}` - } - - - - return val - } - /** 直线 */ - G01(params: CodeParams) { - const { x, y, z, f, xKey, yKey, zKey, fKey, codeKey } = params - let val: string = GCode.G01 - if (typeof (codeKey) == 'string' && codeKey != '') { - val = codeKey - } - let _xkey = xKey || 'X' - let _yKey = yKey || 'Y' - let _zKey = zKey || 'Z' - let _fKey = fKey || 'F' - - - if (checkVal(x)) { - val += ` ${_xkey}${x}` - } - if (checkVal(y)) { - val += ` ${_yKey}${y}` - } - if (checkVal(z)) { - val += ` ${_zKey}${z}` - } - if (checkVal(f)) { - val += ` ${_fKey}${f}` - } - return val - } - /** 顺时针 弧线 - * @param x x坐标 - * @param y y坐标 - * @param z z坐标 - * @param i 圆弧 对于起点的偏移量 x - * @param y 圆弧 对于起点的偏移量 Y - * @param z 圆弧 对于起点的偏移量 Y - * @param f 速度 - */ - G2(params: CodeParams) { - const { x, y, z, i, j, k, r, f, xKey, yKey, zKey, fKey, iKey, jKey, kKey, codeKey } = params - let val: string = GCode.G2 - if (typeof (codeKey) == 'string' && codeKey != '') { - val = codeKey - } - let _xkey = xKey || 'X' - let _yKey = yKey || 'Y' - let _zKey = zKey || 'Z' - let _fKey = fKey || 'F' - let _iKey = iKey || 'I' - let _jKey = jKey || 'J' - let _kKey = kKey || 'K' - - if (checkVal(x)) { - val += ` ${_xkey}${x}` - } - if (checkVal(y)) { - val += ` ${_yKey}${y}` - } - if (checkVal(z)) { - val += ` ${_zKey}${z}` - } - if (checkVal(r)) { - val += ` R${r}` - } else { - if (checkVal(i)) { - val += ` ${_iKey}${i}` - } - if (checkVal(j)) { - val += ` ${_jKey}${j}` - } - if (checkVal(k)) { - val += ` ${_kKey}${k}` - } - } - if (checkVal(f)) { - val += ` ${_fKey}${f}` - } - return val - } - /** 顺时针 弧线 - * @param x x坐标 - * @param y y坐标 - * @param z z坐标 - * @param i 圆弧 对于起点的偏移量 x - * @param y 圆弧 对于起点的偏移量 Y - * @param z 圆弧 对于起点的偏移量 Y - * @param f 速度 - */ - G02(params: CodeParams) { - const { x, y, z, i, j, k, r, f, xKey, yKey, zKey, fKey, iKey, jKey, kKey, codeKey } = params - let val: string = GCode.G02 - if (typeof (codeKey) == 'string' && codeKey != '') { - val = codeKey - } - let _xkey = xKey || 'X' - let _yKey = yKey || 'Y' - let _zKey = zKey || 'Z' - let _fKey = fKey || 'F' - let _iKey = iKey || 'I' - let _jKey = jKey || 'J' - let _kKey = kKey || 'K' - - if (checkVal(x)) { - val += ` ${_xkey}${x}` - } - if (checkVal(y)) { - val += ` ${_yKey}${y}` - } - if (checkVal(z)) { - val += ` ${_zKey}${z}` - } - - if (checkVal(r)) { - val += ` R${r}` - } else { - if (checkVal(i)) { - val += ` ${_iKey}${i}` - } - if (checkVal(j)) { - val += ` ${_jKey}${j}` - } - if (checkVal(k)) { - val += ` ${_kKey}${k}` - } - } - if (checkVal(f)) { - val += ` ${_fKey}${f}` - } - return val - } - /** 逆时针 弧线 - * @param x x坐标 - * @param y y坐标 - * @param z z坐标 - * @param i 圆弧 对于起点的偏移量 x - * @param y 圆弧 对于起点的偏移量 Y - * @param z 圆弧 对于起点的偏移量 Y - * @param f 速度 - */ - G3(params: CodeParams) { - const { x, y, z, i, j, k, r, f, xKey, yKey, zKey, fKey, iKey, jKey, kKey, codeKey } = params - let val: string = GCode.G3 - if (typeof (codeKey) == 'string' && codeKey != '') { - val = codeKey - } - let _xkey = xKey || 'X' - let _yKey = yKey || 'Y' - let _zKey = zKey || 'Z' - let _fKey = fKey || 'F' - let _iKey = iKey || 'I' - let _jKey = jKey || 'J' - let _kKey = kKey || 'K' - - if (checkVal(x)) { - val += ` ${_xkey}${x}` - } - if (checkVal(y)) { - val += ` ${_yKey}${y}` - } - if (checkVal(z)) { - val += ` ${_zKey}${z}` - } - - if (checkVal(r)) { - val += ` R${r}` - } else { - if (checkVal(i)) { - val += ` ${_iKey}${i}` - } - if (checkVal(j)) { - val += ` ${_jKey}${j}` - } - if (checkVal(k)) { - val += ` ${_kKey}${k}` - } - } - if (checkVal(f)) { - val += ` ${_fKey}${f}` - } - return val - } - /** 逆时针 弧线 - * @param x x坐标 - * @param y y坐标 - * @param z z坐标 - * @param i 圆弧 对于起点的偏移量 x - * @param y 圆弧 对于起点的偏移量 Y - * @param z 圆弧 对于起点的偏移量 Y - * @param f 速度 - */ - G03(params: CodeParams) { - const { x, y, z, i, j, k, r, f, xKey, yKey, zKey, fKey, iKey, jKey, kKey, codeKey } = params - let val: string = GCode.G03 - if (typeof (codeKey) == 'string' && codeKey != '') { - val = codeKey - } - let _xkey = xKey || 'X' - let _yKey = yKey || 'Y' - let _zKey = zKey || 'Z' - let _fKey = fKey || 'F' - let _iKey = iKey || 'I' - let _jKey = jKey || 'J' - let _kKey = kKey || 'K' - - if (checkVal(x)) { - val += ` ${_xkey}${x}` - } - if (checkVal(y)) { - val += ` ${_yKey}${y}` - } - if (checkVal(z)) { - val += ` ${_zKey}${z}` - } - - if (checkVal(r)) { - val += ` R${r}` - } else { - if (checkVal(i)) { - val += ` ${_iKey}${i}` - } - if (checkVal(j)) { - val += ` ${_jKey}${j}` - } - if (checkVal(k)) { - val += ` ${_kKey}${k}` - } - } - - if (checkVal(f)) { - val += ` ${_fKey}${f}` - } - return val - } - /** 主轴正转 - * - * @param s 转速 - */ - M03(s: any) { - let val: string = GCode.M03 - if (checkVal(s)) { - val += ` S${s}` - } - return val - } - /**主轴反向转 - * @param s 转速 - */ - M04(s: any) { - let val: string = GCode.M04 - if (checkVal(s)) { - val += ` S${s}` - } - return val - } - - /**主轴停止 */ - M05() { - let val: string = GCode.M05 - - return val - } - /**换刀指令 */ - M06(t: String) { - let val: string = GCode.M06 - if (checkVal(t)) { - val += ` T${t}` - } - return val - } - -} \ No newline at end of file diff --git a/samples/handleAbility/RectOptimizeWorker/RectOptimizeMachine.ts b/samples/handleAbility/RectOptimizeWorker/RectOptimizeMachine.ts deleted file mode 100644 index b3e83d6..0000000 --- a/samples/handleAbility/RectOptimizeWorker/RectOptimizeMachine.ts +++ /dev/null @@ -1,1746 +0,0 @@ -import type { Big_bang, Con, Inv, xbang } from './bang' -import { LineType } from './bang' - -export class RectOptimizeMachine { - private _Stop = false - - public CallBack: (best: Inv, yl: Big_bang[], fit: number, info: any) => void | Promise - - Stop(d?:any) { - console.log('优化 stop=》RectOptimizeMachine',d) - this._Stop = true - } - - /** - * @param xbangs 小板 - * @param bigBang 大板(N个元素,前N-1个元素表示余料板且余料板须为矩形,第N个元素表示大板) - * @param bigBangSL 余料板数量(bigBang中前N-1个元素对应的数量,如果bigBang中只有一个元素即只有大板没有余料板,则为空数组) - * @param xyhcs 新优化次数 - * @param isdtwosided 双面加工的小板是否优先排入 - * @param gap 排版缝隙 = 开料刀直径 + 缝隙 - * @param hssf 规则排版 - * @param YuLiaoBoardDo2FaceBlock 余料板是否排入双面加工的小板 - */ - async Start(xbangs: xbang[], bigBang: Big_bang[], bigBangSL: number[], xyhcs: number, isdtwosided: boolean, gap: number, hssf: boolean, YuLiaoBoardDo2FaceBlock: boolean) { - this._Stop = false - - // let bestFit = Infinity; //最佳的利用率 35*10 + 最后一张板 - let bestFit = Number.POSITIVE_INFINITY // 最佳的利用率 35*10 + 最后一张板 - let bestInv: Inv - - let i = 0 - let inv; let re_ylb; let fit: any = null - - while (!this._Stop) { - - const qfsh = hssf ? false : i % 2 === 0 // 电子锯算法, 永远不合并空间 - - let tempArr = SnameYH(xbangs.slice(), bigBang, bigBangSL, xyhcs, qfsh, isdtwosided, gap, YuLiaoBoardDo2FaceBlock) - - inv = tempArr[0] - re_ylb = tempArr[1] - if (xbangs.length > 1000) { - // debugger - } - fit = GetInvFit(inv) - let info = { - times: i, - type: 'loop' - } - if (fit < bestFit) { - bestFit = fit - bestInv = inv - this.CallBack(inv, re_ylb, fit, info) - } - /** 优化次数限制 逻辑 */ - // if (xyhcs == i) { - // await this.Stop(info); - // info.type = 'stop' - // this.CallBack(inv, re_ylb, fit, info) - // } - await Sleep(Math.max(5, 20 - Math.floor(xbangs.length / 10000))) - i++ - } - } -} - -// 优化所有余料 -function YLYH_all(xbangs: xbang[], yuliao_bang: Big_bang[], ylzs: number[], xyhcs: number, qfsh: boolean, isdtwosided: boolean, gap: number, YuLiaoBoardDo2FaceBlock: boolean): [Inv, xbang[], Big_bang[]] // 余料优化 -{ - let get_regelt: Inv = [] - let temp_yan_bang: Big_bang[] = [] - let re_Bigbang: Big_bang[] = [] - temp_yan_bang = [] - // console.log('余料总数:', ylzs) - for (let i = 0; i < ylzs.length; i++) { - if (xbangs.length == 0) { - break - } - else { - temp_yan_bang = [] - for (let sl = 0; sl < ylzs[i]; sl++) { - temp_yan_bang.push(yuliao_bang[i]) - } - let temp:any = [] - temp = ylyh(xbangs, temp_yan_bang, xyhcs, qfsh, isdtwosided, gap, YuLiaoBoardDo2FaceBlock) - for (let yhsl = 0; yhsl < temp[0].length; yhsl++) { - get_regelt.push(temp[0][yhsl]) - } - for (let ylsl = 0; ylsl < temp[2].length; ylsl++) { - re_Bigbang.push(temp[2][ylsl]) - } - xbangs = temp[1].slice() - // re_Bigbang.push(temp[2].slice()); - } - } - return [get_regelt, xbangs, re_Bigbang] -} - -// 优化余料中的一个尺寸的小板 -function ylyh(xbangs: xbang[], yuliao_bang: Big_bang[], xyhcs: number, qfsh: boolean, isdtwosided: boolean, gap: number, YuLiaoBoardDo2FaceBlock: boolean): [Inv, xbang[], Big_bang[]] // 余料优化 -{ - let finbang: xbang[] - let yh_result: Inv = [] - let l: number - let w: number - let ylzs: number// 余料张数 - let temp_yan_bang: Big_bang[] = [] - let re_yan_bang: Big_bang[] = [] - let temp_max_YH: Inv = [] - temp_yan_bang = [] - temp_yan_bang.push(yuliao_bang[0]) - l = yuliao_bang[0].l - w = yuliao_bang[0].w - - if (YuLiaoBoardDo2FaceBlock) // 余料板允许加入双面小板 - { - finbang = find_bang_k_g(l, w, xbangs, false).slice() - } - else { - finbang = find_bang_k_g(l, w, xbangs, true).slice() - } - - if (finbang.length > 0) { - if (YuLiaoBoardDo2FaceBlock) // 余料板允许加入双面小板 - { - temp_max_YH = YHJS(finbang, temp_yan_bang, xyhcs, qfsh, isdtwosided, gap) // 余料板 不优先 双面加工板 - } - else { - temp_max_YH = YHJS(finbang, temp_yan_bang, xyhcs, qfsh, false, gap) - } - - if (yuliao_bang.length > temp_max_YH.length) { - ylzs = temp_max_YH.length - } - else { - ylzs = yuliao_bang.length - } - for (let i = 0; i < ylzs; i++) { - yh_result.push(temp_max_YH[i]) - re_yan_bang.push(yuliao_bang[0]) - for (let n = 0; n < temp_max_YH[i].length; n++) { - for (let bsl = xbangs.length - 1; bsl >= 0; bsl--) - if (temp_max_YH[i][n].bangid == xbangs[bsl].id) { - xbangs.splice(bsl, 1) - } - } - } - } - return [yh_result, xbangs, re_yan_bang] -} -// 相同板材优化 -function SnameYH(xbangs: xbang[], B_bang: Big_bang[], ylsl: number[], xyhcs: number, qfsh: boolean, isdtwosided: boolean, gap: number, YuLiaoBoardDo2FaceBlock: boolean): [Inv, Big_bang[]] { - let same_yh_bang: Inv = [] - let temp_max_YH: Inv = [] - let ylbang_max_yh: Big_bang[] = [] - let temp_same_yh: [Inv, xbang[]] - let isend: boolean = false - let Bigbang: Big_bang[] = [] - Bigbang.push(B_bang[B_bang.length - 1]) - - let ylbang: Big_bang[] = B_bang.slice() - ylbang.pop() - - let tempresult = [] - - tempresult = YLYH_all(xbangs, ylbang, ylsl, xyhcs, qfsh, isdtwosided, gap, YuLiaoBoardDo2FaceBlock) // 余料优化 - - for (let i = 0; i < tempresult[0].length; i++) { - same_yh_bang.push(tempresult[0][i]) - } - xbangs = tempresult[1].slice() - ylbang_max_yh = tempresult[2].slice() - - while (isend === false) { - if (xbangs.length == 0) { break } - temp_max_YH = YHJS(xbangs, Bigbang, xyhcs, qfsh, isdtwosided, gap) - temp_same_yh = Get_bs_bang(temp_max_YH, xbangs, isdtwosided) - for (let i = 0; i < temp_same_yh[0].length; i++) { - same_yh_bang.push(temp_same_yh[0][i]) - xbangs = temp_same_yh[1].slice() - } - } - - return [same_yh_bang, ylbang_max_yh] -} - -// 优化计算. -function YHJS(xbangs: xbang[], B_bang: Big_bang[], cs: number, qfsh: boolean, isdtwosided: boolean, gap: number): Inv { - let xbangs_bak = xbangs.slice() - let bestFit = Number.POSITIVE_INFINITY - // let bestFit = Infinity; - let bestInv: Inv - for (let i = 0; i < cs; i++) { - xbangs = xbangs_bak.slice() - - let result_yh: Inv - if (qfsh) - result_yh = CBJS(xbangs, B_bang, gap, isdtwosided) - else - result_yh = CBJS1(xbangs, B_bang, gap, isdtwosided) - - let fit = GetInvFit(result_yh) - if (fit < bestFit) { - bestFit = fit - bestInv = result_yh - } - } - return bestInv -} - -// 得到利用率最高板材,及返回倍数板及剩下的小板 -function Get_bs_bang(inv: Inv, listbang: xbang[], isdtwosided: boolean): [Inv, xbang[]] { - let [bestCon] = arrayMax(inv, GetConFit)// 最优大板 - - let temp_yh_bang: Con = [] - let temp_list_yh_bang: Inv = [] - let isfindend: boolean = false - - while (isfindend == false) { - if (listbang.length == 0) { break } - - let unPlacelist = listbang.slice() - for (let br of bestCon) { - let temp_result = find_same_bang(br.pbg, br.pbk, unPlacelist, isdtwosided) - if (temp_result.findid > -1) // 找到合适的板 - { - temp_yh_bang.push( - { - bangid: temp_result.id, - line: temp_result.line, - x: br.x, - y: br.y, - pbg: temp_result.pbg, - pbk: temp_result.pbk, - }, - ) - unPlacelist.splice(temp_result.findid, 1)// 这里不会错误的原因是 必然会有一次成功 并且下面会备份这个数组 - } - else // 没找到 合适的板 退出 - { - isfindend = true - break - } - } - if (isfindend == false) // 找到合适的 - { - temp_list_yh_bang.push(temp_yh_bang) - temp_yh_bang = [] - listbang = unPlacelist.slice()// 备份数组 - } - } - return [temp_list_yh_bang, listbang] -} - -function GetInvFit(inv: Inv) { - let fit = (inv.length - 1) * 10 - fit += GetConFit(arrayLast(inv)) - return fit -} - -function GetConFit(con: Con) { - let fit = 0 - for (let p of con) - fit += p.pbg * p.pbk * 1e-6 - return fit -} - -// 初步优化计算 横竖算法,无空间合并 -function CBJS1(Listbang: xbang[], yanbang: Big_bang[], dt: number, isdtwosided: boolean): Inv // [(YHB_LST)[], (Big_bang[])[], (Big_bang[])[]] -{ - let yanbang_bk: Big_bang[] = yanbang.slice() - // let zfkj: Big_bang[] = []; - // let list_zfkj: (Big_bang[])[] = []; - let list_yh_bng: Inv = [] - // let list_yang_bang: (Big_bang[])[] = []; - let result_yh: Con = [] - - while (Listbang.length > 0) { - // zfkj = []; - yanbang = yanbang_bk.slice() - result_yh = [] - while (yanbang.length > 0) { - let lx: number = Math.floor(Math.random() * 3) // lx:0 面积最大 1 最高 2 最宽 - let fs: boolean // fs:留板方式,0:左右 1:上下 - if (Math.floor(Math.random() * 2) == 0) { fs = false } else { fs = true } - let get_result = [] - get_result = jsyb(yanbang[0], lx, fs, dt, Listbang, isdtwosided) // lx:0面积最大 1最高 2最宽 fs:取板方式,false:左右(取同宽) true:上下(取同高) dt:刀头间隙 - yanbang.shift() - if (get_result[0] > 0) { - for (let i = 0; i < get_result[0]; i++) - yanbang.push(get_result[2][i]) - } - if (get_result[1] > 0) { - for (let i = 0; i < get_result[1]; i++) - result_yh.push(get_result[3][i]) - } - Listbang = get_result[4].slice() - if (Listbang.length == 0) { break } - } - // list_zfkj.push(zfkj); - list_yh_bng.push(result_yh) - // list_yang_bang.push(yanbang); - // list_zfkj.push(zfkj); - // Draw_Yan_bang(yanbang, 3, 0); - // Draw_Yan_bang(zfkj, 5, 0); - } - - // return [list_yh_bng, list_zfkj, list_yang_bang]; - return list_yh_bng -} - -// 初步优化计算 交叉算法,有空间合并 -function CBJS(Listbang: xbang[], yanbang: Big_bang[], dt: number, isdtwosided: boolean): Inv // [(YHB_LST)[], (Big_bang[])[], (Big_bang[])[]] -{ - let yanbang_bk: Big_bang[] = yanbang.slice() - // let zfkj: Big_bang[] = []; - // let list_zfkj: (Big_bang[])[] = []; - let list_yh_bng: Inv = [] - // let list_yang_bang: (Big_bang[])[] = []; - let result_yh: Con = [] - - // let temp: number = 0; - while (Listbang.length > 0)// while (temp < 2)// - { - // temp++; - // zfkj = []; - yanbang = yanbang_bk.slice() - result_yh = [] - while (yanbang.length > 0) { - let lx: number = Math.floor(Math.random() * 3) // lx:0 面积最大 1 最高 2 最宽 - let fs: boolean // fs:留板方式,0:左右 1:上下 - if (Math.floor(Math.random() * 2) == 0) { fs = false } else { fs = true } - let get_result = [] - let temp_yanbang = [] - temp_yanbang = HBKJ(yanbang, Listbang, dt) - yanbang = temp_yanbang[0] - get_result = jsyb1(yanbang[temp_yanbang[1]], lx, fs, dt, Listbang, isdtwosided) // lx:0面积最大 1最高 2最宽 fs:取板方式,false:取同宽) true:取同高) dt:刀头间隙 - yanbang.splice(temp_yanbang[1], 1) - if (get_result[0] > 0) { - for (let i = 0; i < get_result[0]; i++) - yanbang.push(get_result[2][i]) - } - if (get_result[1] > 0) { - for (let i = 0; i < get_result[1]; i++) - result_yh.push(get_result[3][i]) - } - Listbang = get_result[4].slice() - if (Listbang.length == 0) { break } - } - // list_zfkj.push(zfkj); - list_yh_bng.push(result_yh) - // list_yang_bang.push(yanbang); - // list_zfkj.push(zfkj); - // Draw_Yan_bang(yanbang, 3, 0); - // Draw_Yan_bang(zfkj, 5, 0); - } - - // return [list_yh_bng, list_zfkj, list_yang_bang]; - return list_yh_bng -} - -// 空间合并(相加) -function hb(yanbang: Big_bang[], dt: number): Big_bang[] { - let i: number = -1 - yanbang.sort((a1, a2) => a1.x - a2.x) - while (true) { - i++ - - if (yanbang.length < 2 || i === yanbang.length - 1) - break - - if (yanbang[i].y === yanbang[i + 1].y - && yanbang[i].x + yanbang[i].w + dt === yanbang[i + 1].x - && yanbang[i].l === yanbang[i + 1].l) { - yanbang[i].w = yanbang[i].w + yanbang[i + 1].w + dt - yanbang.splice(i + 1, 1) - i = -1 - } - } - return yanbang -} - -// 整理空间 -function zlkj(yanbang: Big_bang[], listbang: xbang[], dt: number): [Big_bang[], boolean] // false 继续合并 ture 不在合并 -{ - let k: number - let g: number - let isjshb: boolean = true// false 继续合并 ture 不在合并 - let minY: number = 100000 - let yanindex: number - if (listbang.length == 0) - return [yanbang, true] - - for (let i = 0; i < yanbang.length; i++) { - if (yanbang[i].y < minY) { - minY = yanbang[i].y - yanindex = i - } - } - k = yanbang[yanindex].w - g = yanbang[yanindex].l - if (yanindex == 0 && yanbang.length > 1) { - if (yanbang[yanindex].x + yanbang[yanindex].w + dt == yanbang[yanindex + 1].x)// && yanbang[i].y + yanbang[i].l == yanbang[i + 1].y + yanbang[i + 1].l) - { - if (find_max_mz(g, k, listbang, false).findid == -1) { - yanbang[yanindex].y = yanbang[yanindex + 1].y - yanbang[yanindex].l = yanbang[yanindex + 1].l - isjshb = false - } - } - } - else if (yanindex == yanbang.length - 1 && yanbang.length > 1) { - if (yanbang[yanindex - 1].x + yanbang[yanindex - 1].w + dt == yanbang[yanindex].x && yanbang.length > 1)// && yanbang[i].y + yanbang[i].l == yanbang[i - 1].y + yanbang[i - 1].l && (yanbang[i - 1].x + yanbang[i - 1].w + dt == yanbang[i].x)) - { - if (find_max_mz(g, k, listbang, false).findid == -1) { - yanbang[yanindex].y = yanbang[yanindex - 1].y - yanbang[yanindex].l = yanbang[yanindex - 1].l - isjshb = false - } - } - } - else if (yanbang.length > 1) { - if (yanbang[yanindex - 1].y > yanbang[yanindex + 1].y) { - if (yanbang[yanindex].x + yanbang[yanindex].w + dt == yanbang[yanindex + 1].x)// && yanbang[i].y + yanbang[i].l == yanbang[i + 1].y + yanbang[i + 1].l) - { - if (find_max_mz(g, k, listbang, false).findid == -1) { - yanbang[yanindex].y = yanbang[yanindex + 1].y - yanbang[yanindex].l = yanbang[yanindex + 1].l - isjshb = false - } - } - } - else { - if (yanbang[yanindex - 1].x + yanbang[yanindex - 1].w + dt == yanbang[yanindex].x)// && yanbang.length > 1 && yanbang[i].y + yanbang[i].l == yanbang[i - 1].y + yanbang[i - 1].l && (yanbang[i - 1].x + yanbang[i - 1].w + dt == yanbang[i].x)) - { - if (find_max_mz(g, k, listbang, false).findid == -1) { - yanbang[yanindex].y = yanbang[yanindex - 1].y - yanbang[yanindex].l = yanbang[yanindex - 1].l - isjshb = false - } - } - } - } - // console.log("zlkj"); - // console.log(g, k); - // console.log(yanbang); - // console.log(listbang); - - // Sleep(0); - return [yanbang, isjshb] -} - -// 合并空间 -function HBKJ(yanbang: Big_bang[], listbang: xbang[], dt: number): [Big_bang[], number] { - let get_result: Big_bang[] - let minY: number = 10000 - let yanindex: number - - get_result = hb(yanbang, dt) - yanbang = get_result - - let isend: boolean = false - while (isend == false) { - if (yanbang.length == 1) { break } - for (let i = 0; i < yanbang.length; i++) { - let temp_result = [] - temp_result = zlkj(yanbang, listbang, dt) - if (temp_result[1] == false) { - yanbang = temp_result[0] - get_result = hb(yanbang, dt) - yanbang = get_result - } - else - isend = true - } - } - for (let i = 0; i < yanbang.length; i++) { - if (yanbang[i].y < minY) { - minY = yanbang[i].y - yanindex = i - } - } - return [yanbang, yanindex] -} - -// 寻找符合面积的板 -function find_bang_k_g(g: number, k: number, Listbang: xbang[], oneFaceBlock: boolean): xbang[] // g 高 k 宽 listbang:小板列表 lx:0 面积最大 1 最高 2 最宽 isdtwosided: boolean true 翻板提前 -{ - let finbang: xbang[] = [] - if (oneFaceBlock == true) { - for (let i = 0; i < Listbang.length; i++) { - if (Listbang[i].line == 0) { - if (Listbang[i].l <= g && Listbang[i].w <= k && Listbang[i].isdtwosided == false) { - finbang.push(Listbang[i]) - } - } - else if (Listbang[i].line == 1) { - if (Listbang[i].l <= k && Listbang[i].w <= g && Listbang[i].isdtwosided == false) { - finbang.push(Listbang[i]) - } - } - else { - if (Listbang[i].l <= g && Listbang[i].w <= k && Listbang[i].isdtwosided == false) { - finbang.push(Listbang[i]) - } - else if (Listbang[i].l <= k && Listbang[i].w <= g && Listbang[i].isdtwosided == false) { - finbang.push(Listbang[i]) - } - } - } - } - else { - for (let i = 0; i < Listbang.length; i++) { - if (Listbang[i].line == 0) { - if (Listbang[i].l <= g && Listbang[i].w <= k) { - finbang.push(Listbang[i]) - } - } - else if (Listbang[i].line == 1) { - if (Listbang[i].l <= k && Listbang[i].w <= g) { - finbang.push(Listbang[i]) - } - } - else { - if (Listbang[i].l <= g && Listbang[i].w <= k) { - finbang.push(Listbang[i]) - } - else if (Listbang[i].l <= k && Listbang[i].w <= g) { - finbang.push(Listbang[i]) - } - } - } - } - - return finbang -} // 寻找面积最的板 - -// 寻找面积最大的板 -function find_max_mz(g: number, k: number, Listbang: xbang[], isdtwosided: boolean): findbang // g 高 k 宽 listbang:小板列表 lx:0 面积最大 1 最高 2 最宽 isdtwosided: boolean true 翻板提前 -{ - let max: number = 0 - let bangindex: number = -1 - let line: LineType = LineType.Positive - let pbg: number = 0 - let pbk: number = 0 - let bangid: number = 0 - let temp_max: number - - if (isdtwosided == true) { - for (let i = 0; i < Listbang.length; i++) { - temp_max = Listbang[i].l * Listbang[i].w / 1000000 - if (Listbang[i].line == 0) { - if (Listbang[i].l <= g && Listbang[i].w <= k && max < temp_max && Listbang[i].isdtwosided == true) { - max = temp_max - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - } - } - else if (Listbang[i].line == 1) { - if (Listbang[i].l <= k && Listbang[i].w <= g && max < temp_max && Listbang[i].isdtwosided == true) { - max = temp_max - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - } - } - else { - if (Listbang[i].l <= g && Listbang[i].w <= k && max < temp_max && Listbang[i].isdtwosided == true) { - max = temp_max - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - } - else if (Listbang[i].l <= k && Listbang[i].w <= g && max < temp_max && Listbang[i].isdtwosided == true) { - max = temp_max - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - } - } - } - if (bangindex == -1) { - for (let i = 0; i < Listbang.length; i++) { - temp_max = Listbang[i].l * Listbang[i].w / 1000000 - if (Listbang[i].line == 0) { - if (Listbang[i].l <= g && Listbang[i].w <= k && max < temp_max) { - max = temp_max - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - } - } - else if (Listbang[i].line == 1) { - if (Listbang[i].l <= k && Listbang[i].w <= g && max < temp_max) { - max = temp_max - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - } - } - else { - if (Listbang[i].l <= g && Listbang[i].w <= k && max < temp_max) { - max = temp_max - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - } - else if (Listbang[i].l <= k && Listbang[i].w <= g && max < temp_max) { - max = temp_max - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - } - } - } - } - } - else { - for (let i = 0; i < Listbang.length; i++) { - temp_max = Listbang[i].l * Listbang[i].w / 1000000 - if (Listbang[i].line == 0) { - if (Listbang[i].l <= g && Listbang[i].w <= k && max < temp_max) { - max = temp_max - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - } - } - else if (Listbang[i].line == 1) { - if (Listbang[i].l <= k && Listbang[i].w <= g && max < temp_max) { - max = temp_max - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - } - } - else { - if (Listbang[i].l <= g && Listbang[i].w <= k && max < temp_max) { - max = temp_max - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - } - else if (Listbang[i].l <= k && Listbang[i].w <= g && max < temp_max) { - max = temp_max - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - } - } - } - } - return { - findid: bangindex, - line, - pbg, - pbk, - id: bangid, - } -} // 寻找面积最的板 - -// 寻找最高的板 -function find_max_g(g: number, k: number, Listbang: xbang[], isdtwosided: boolean): findbang // g 高 k 宽 listbang:小板列表 lx:0 面积最大 1 最高 2 最宽 -{ - let max: number = 0 - let bangindex: number = -1 - let line: LineType = LineType.Positive - let pbg: number = 0 - let pbk: number = 0 - let bangid: number = 0 - if (isdtwosided == true) { - for (let i = 0; i < Listbang.length; i++) { - if (Listbang[i].line == 0) { - if (Listbang[i].l <= g && Listbang[i].w <= k && max < Listbang[i].l && Listbang[i].isdtwosided == true) { - max = Listbang[i].l - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - } - } - else if (Listbang[i].line == 1) { - if (Listbang[i].l <= k && Listbang[i].w <= g && max < Listbang[i].w && Listbang[i].isdtwosided == true) { - max = Listbang[i].w - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - } - } - else { - if (Listbang[i].l <= g && Listbang[i].w <= k && max < Listbang[i].l && Listbang[i].isdtwosided == true) { - max = Listbang[i].l - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - } - else if (Listbang[i].l <= k && Listbang[i].w <= g && max < Listbang[i].w && Listbang[i].isdtwosided == true) { - max = Listbang[i].w - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - } - } - } - if (bangindex == -1) { - for (let i = 0; i < Listbang.length; i++) { - if (Listbang[i].line == 0) { - if (Listbang[i].l <= g && Listbang[i].w <= k && max < Listbang[i].l) { - max = Listbang[i].l - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - } - } - else if (Listbang[i].line == 1) { - if (Listbang[i].l <= k && Listbang[i].w <= g && max < Listbang[i].w) { - max = Listbang[i].w - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - } - } - else { - if (Listbang[i].l <= g && Listbang[i].w <= k && max < Listbang[i].l) { - max = Listbang[i].l - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - } - else if (Listbang[i].l <= k && Listbang[i].w <= g && max < Listbang[i].w) { - max = Listbang[i].w - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - } - } - } - } - } - else { - for (let i = 0; i < Listbang.length; i++) { - if (Listbang[i].line == 0) { - if (Listbang[i].l <= g && Listbang[i].w <= k && max < Listbang[i].l) { - max = Listbang[i].l - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - } - } - else if (Listbang[i].line == 1) { - if (Listbang[i].l <= k && Listbang[i].w <= g && max < Listbang[i].w) { - max = Listbang[i].w - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - } - } - else { - if (Listbang[i].l <= g && Listbang[i].w <= k && max < Listbang[i].l) { - max = Listbang[i].l - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - } - else if (Listbang[i].l <= k && Listbang[i].w <= g && max < Listbang[i].w) { - max = Listbang[i].w - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - } - } - } - } - return { - findid: bangindex, - line, - pbg, - pbk, - id: bangid, - } -} - -// 寻找同高的板 -function find_same_g(g: number, k: number, Listbang: xbang[], isdtwosided: boolean): findbang // g 高 k 宽 listbang:小板列表 lx:0 面积最大 1 最高 2 最宽 -{ - let max: number = g - let bangindex: number = -1 - let line: LineType = LineType.Positive - let pbg: number = 0 - let pbk: number = 0 - let bangid: number = 0 - if (isdtwosided == true) { - for (let i = 0; i < Listbang.length; i++) { - if (Listbang[i].line == 0) { - if (Listbang[i].l <= g && Listbang[i].w <= k && max == Listbang[i].l && Listbang[i].isdtwosided == true) { - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - break - } - } - else if (Listbang[i].line == 1) { - if (Listbang[i].l <= k && Listbang[i].w <= g && max == Listbang[i].w && Listbang[i].isdtwosided == true) { - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - break - } - } - else { - if (Listbang[i].l <= g && Listbang[i].w <= k && max == Listbang[i].l && Listbang[i].isdtwosided == true) { - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - break - } - else if (Listbang[i].l <= k && Listbang[i].w <= g && max == Listbang[i].w && Listbang[i].isdtwosided == true) { - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - break - } - } - } - if (bangindex == -1) { - for (let i = 0; i < Listbang.length; i++) { - if (Listbang[i].line == 0) { - if (Listbang[i].l <= g && Listbang[i].w <= k && max == Listbang[i].l) { - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - break - } - } - else if (Listbang[i].line == 1) { - if (Listbang[i].l <= k && Listbang[i].w <= g && max == Listbang[i].w) { - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - break - } - } - else { - if (Listbang[i].l <= g && Listbang[i].w <= k && max == Listbang[i].l) { - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - break - } - else if (Listbang[i].l <= k && Listbang[i].w <= g && max == Listbang[i].w) { - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - break - } - } - } - } - } - else { - for (let i = 0; i < Listbang.length; i++) { - if (Listbang[i].line == 0) { - if (Listbang[i].l <= g && Listbang[i].w <= k && max == Listbang[i].l) { - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - break - } - } - else if (Listbang[i].line == 1) { - if (Listbang[i].l <= k && Listbang[i].w <= g && max == Listbang[i].w) { - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - break - } - } - else { - if (Listbang[i].l <= g && Listbang[i].w <= k && max == Listbang[i].l) { - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - break - } - else if (Listbang[i].l <= k && Listbang[i].w <= g && max == Listbang[i].w) { - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - break - } - } - } - } - return { - findid: bangindex, - line, - pbg, - pbk, - id: bangid, - } -}// 寻找同高的板 - -// 寻找最宽的板 -function find_max_k(g: number, k: number, Listbang: xbang[], isdtwosided: boolean): findbang // g 高 k 宽 listbang:小板列表 lx:0 面积最大 1 最高 2 最宽 -{ - let max: number = 0 - let bangindex: number = -1 - let line: LineType = LineType.Positive - let pbg: number = 0 - let pbk: number = 0 - let bangid: number = 0 - if (isdtwosided == true) { - for (let i = 0; i < Listbang.length; i++) { - if (Listbang[i].line == 0) { - if (Listbang[i].l <= g && Listbang[i].w <= k && max < Listbang[i].w && Listbang[i].isdtwosided == true) { - max = Listbang[i].w - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - } - } - else if (Listbang[i].line == 1) { - if (Listbang[i].l <= k && Listbang[i].w <= g && max < Listbang[i].l && Listbang[i].isdtwosided == true) { - max = Listbang[i].l - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - } - } - else { - if (Listbang[i].l <= g && Listbang[i].w <= k && max < Listbang[i].w && Listbang[i].isdtwosided == true) { - max = Listbang[i].w - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - } - else if (Listbang[i].l <= k && Listbang[i].w <= g && max < Listbang[i].l && Listbang[i].isdtwosided == true) { - max = Listbang[i].l - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - } - } - } - if (bangindex == -1) { - for (let i = 0; i < Listbang.length; i++) { - if (Listbang[i].line == 0) { - if (Listbang[i].l <= g && Listbang[i].w <= k && max < Listbang[i].w) { - max = Listbang[i].w - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - } - } - else if (Listbang[i].line == 1) { - if (Listbang[i].l <= k && Listbang[i].w <= g && max < Listbang[i].l) { - max = Listbang[i].l - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - } - } - else { - if (Listbang[i].l <= g && Listbang[i].w <= k && max < Listbang[i].w) { - max = Listbang[i].w - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - } - else if (Listbang[i].l <= k && Listbang[i].w <= g && max < Listbang[i].l) { - max = Listbang[i].l - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - } - } - } - } - } - else { - for (let i = 0; i < Listbang.length; i++) { - if (Listbang[i].line == 0) { - if (Listbang[i].l <= g && Listbang[i].w <= k && max < Listbang[i].w) { - max = Listbang[i].w - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - } - } - else if (Listbang[i].line == 1) { - if (Listbang[i].l <= k && Listbang[i].w <= g && max < Listbang[i].l) { - max = Listbang[i].l - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - } - } - else { - if (Listbang[i].l <= g && Listbang[i].w <= k && max < Listbang[i].w) { - max = Listbang[i].w - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - } - else if (Listbang[i].l <= k && Listbang[i].w <= g && max < Listbang[i].l) { - max = Listbang[i].l - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - } - } - } - } - return { - findid: bangindex, - line, - pbg, - pbk, - id: bangid, - } -} // 寻找最高的板 - -// 寻同宽的板 -function find_same_k(g: number, k: number, Listbang: xbang[], isdtwosided: boolean): findbang // g 高 k 宽 listbang:小板列表 lx:0 面积最大 1 最高 2 最宽 -{ - let max: number = k - let bangindex: number = -1 - let line: LineType = LineType.Positive - let pbg: number = 0 - let pbk: number = 0 - let bangid: number = 0 - if (isdtwosided == true) { - for (let i = 0; i < Listbang.length; i++) { - if (Listbang[i].line == 0) { - if (Listbang[i].l <= g && Listbang[i].w <= k && max == Listbang[i].w && Listbang[i].isdtwosided == true) { - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - break - } - } - else if (Listbang[i].line == 1) { - if (Listbang[i].l <= k && Listbang[i].w <= g && max == Listbang[i].l && Listbang[i].isdtwosided == true) { - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - break - } - } - else { - if (Listbang[i].l <= g && Listbang[i].w <= k && max == Listbang[i].w && Listbang[i].isdtwosided == true) { - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - break - } - else if (Listbang[i].l <= k && Listbang[i].w <= g && max == Listbang[i].l && Listbang[i].isdtwosided == true) { - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - break - } - } - } - if (bangindex == -1) { - for (let i = 0; i < Listbang.length; i++) { - if (Listbang[i].line == 0) { - if (Listbang[i].l <= g && Listbang[i].w <= k && max == Listbang[i].w) { - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - break - } - } - else if (Listbang[i].line == 1) { - if (Listbang[i].l <= k && Listbang[i].w <= g && max == Listbang[i].l) { - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - break - } - } - else { - if (Listbang[i].l <= g && Listbang[i].w <= k && max == Listbang[i].w) { - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - break - } - else if (Listbang[i].l <= k && Listbang[i].w <= g && max == Listbang[i].l) { - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - break - } - } - } - } - } - else { - for (let i = 0; i < Listbang.length; i++) { - if (Listbang[i].line == 0) { - if (Listbang[i].l <= g && Listbang[i].w <= k && max == Listbang[i].w) { - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - break - } - } - else if (Listbang[i].line == 1) { - if (Listbang[i].l <= k && Listbang[i].w <= g && max == Listbang[i].l) { - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - break - } - } - else { - if (Listbang[i].l <= g && Listbang[i].w <= k && max == Listbang[i].w) { - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - break - } - else if (Listbang[i].l <= k && Listbang[i].w <= g && max == Listbang[i].l) { - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - break - } - } - } - } - return { - findid: bangindex, - line, - pbg, - pbk, - id: bangid, - } -} // 寻同宽的板 - -// 找到同样大小尺寸的板材 && Listbang[i].isdtwosided == true) -function find_same_bang(g: number, k: number, Listbang: xbang[], isdtwosided: boolean): findbang // g 高 k 宽 listbang:小板列表 1 同高 2 同宽 -{ - let bangindex: number = -1 - let line: LineType = LineType.Positive - let pbg: number = 0 - let pbk: number = 0 - let bangid: number = 0 - if (isdtwosided == true) { - for (let i = 0; i < Listbang.length; i++) { - if (Listbang[i].line == 0) { - if (Listbang[i].l == g && Listbang[i].w == k && Listbang[i].isdtwosided == true) { - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - break - } - } - else if (Listbang[i].line == 1) { - if (Listbang[i].l == k && Listbang[i].w == g && Listbang[i].isdtwosided == true) { - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - break - } - } - else { - if (Listbang[i].l == g && Listbang[i].w == k && Listbang[i].isdtwosided == true) { - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - break - } - else if (Listbang[i].l == k && Listbang[i].w == g && Listbang[i].isdtwosided == true) { - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - break - } - } - } - if (bangindex == -1) { - for (let i = 0; i < Listbang.length; i++) { - if (Listbang[i].line == 0) { - if (Listbang[i].l == g && Listbang[i].w == k) { - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - break - } - } - else if (Listbang[i].line == 1) { - if (Listbang[i].l == k && Listbang[i].w == g) { - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - break - } - } - else { - if (Listbang[i].l == g && Listbang[i].w == k) { - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - break - } - else if (Listbang[i].l == k && Listbang[i].w == g) { - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - break - } - } - } - } - } - else { - for (let i = 0; i < Listbang.length; i++) { - if (Listbang[i].line == 0) { - if (Listbang[i].l == g && Listbang[i].w == k) { - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - break - } - } - else if (Listbang[i].line == 1) { - if (Listbang[i].l == k && Listbang[i].w == g) { - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - break - } - } - else { - if (Listbang[i].l == g && Listbang[i].w == k) { - bangindex = i - line = 0 - pbg = Listbang[i].l - pbk = Listbang[i].w - bangid = Listbang[i].id - break - } - else if (Listbang[i].l == k && Listbang[i].w == g) { - bangindex = i - line = 1 - pbg = Listbang[i].w - pbk = Listbang[i].l - bangid = Listbang[i].id - break - } - } - } - } - return { - findid: bangindex, - line, - pbg, - pbk, - id: bangid, - } -} // 寻找同高或同宽的板 - -// 计算生成的余板 返回 余板数组,连带的板 小板数组 -// lx:0面积最大 1最高 2最宽 fs:取板方式,false:左右(取同宽) true:上下(取同高) dt:刀头间隙 -function jsyb(bigbang: Big_bang, lx: number, fs: boolean, dt: number, listbang: xbang[], isdtwosided: boolean): [number, number, Big_bang[], Con, xbang[], number, Big_bang[]] { - let x: number = bigbang.x - let y: number = bigbang.y - let k: number = bigbang.w - let g: number = bigbang.l - let isend: boolean = false - let ybg: number = g - let ybk: number = k - let x1: number = x - let y1: number = y - let yb: Big_bang[] = [] // #余板 坐标跟高宽; - let yhxbang: Con = [] // #连带小板的Id,及坐标 - let zfkj: Big_bang[] = [] // 作废的空间 - let l: number - let w: number - - let get_result: findbang - let temp_get: findbang - if (lx === 0) { - // get_result = find_max_mz(g, k, listbang); - get_result = find_max_mz(g, k, listbang, isdtwosided) - } - else if (lx == 1) { - // get_result = find_max_g(g, k, listbang); - get_result = find_max_g(g, k, listbang, isdtwosided) - } - else { - // get_result = find_max_k(g, k, listbang); - get_result = find_max_k(g, k, listbang, isdtwosided) - } - - if (get_result.findid > -1) { - yhxbang.push({ - bangid: get_result.id, - line: get_result.line, - x, - y, - pbg: get_result.pbg, - pbk: get_result.pbk, - }) - listbang.splice(get_result.findid, 1) - l = get_result.pbg - w = get_result.pbk - if (fs == false) // false:左右(取同宽) true:上下(取同高) - { - ybg = g - l - dt - y1 = y + l + dt - while (isend == false) { - // temp_get = find_same_k(ybg, w, listbang); - temp_get = find_same_k(ybg, w, listbang, isdtwosided) - if (temp_get.findid > -1) { - yhxbang.push({ - bangid: temp_get.id, - line: temp_get.line, - x, - y: y1, - pbg: temp_get.pbg, - pbk: temp_get.pbk, - }) - y1 = y1 + temp_get.pbg + dt - ybg = ybg - temp_get.pbg - dt - listbang.splice(temp_get.findid, 1) - } - else { - if (ybg > 0) { - yb.push({ - l: ybg, - w, - x, - y: y1, - }) - } - if (k - w - dt > 0) { - yb.push({ - l: g, - w: k - w - dt, - x: x + w + dt, - y, - }) - } - break - } - } - } - else // true:上下(取同高) - { - ybk = k - w - dt - x1 = x + w + dt - while (isend == false) { - temp_get = find_same_g(l, ybk, listbang, isdtwosided) - if (temp_get.findid > -1) { - yhxbang.push({ - bangid: temp_get.id, - line: temp_get.line, - x: x1, - y, - pbg: temp_get.pbg, - pbk: temp_get.pbk, - }) - x1 = x1 + temp_get.pbk + dt - ybk = ybk - temp_get.pbk - dt - listbang.splice(temp_get.findid, 1) - } - else { - if (ybk > 0) { - yb.push({ - l, - w: ybk, - x: x1, - y, - }) - } - if (g - l - dt > 0) { - yb.push({ - l: g - l - dt, - w: k, - x, - y: y + l + dt, - }) - } - break - } - } - } // false:左右(取同宽) true:上下(取同高) - let ybsl: number = 0 - let yhsl: number = 0 - if (yb.length > 0) { ybsl = yb.length } - if (yhxbang.length > 0) { yhsl = yhxbang.length } - return [ybsl, yhsl, yb, yhxbang, listbang, 0, zfkj] - } - else { - zfkj.push({ - l: g, - w: k, - x, - y, - }) - let ybsl: number = 0 - let yhsl: number = 0 - if (yb.length > 0) { ybsl = yb.length } - if (yhxbang.length > 0) { yhsl = yhxbang.length } - return [ybsl, yhsl, yb, yhxbang, listbang, 1, zfkj] - } -} - -// 计算生成的余板 返回 余板数组,连带的板 小板数组 都是左右分隔空间,后面再来空间合并 -// lx:0面积最大 1最高 2最宽 fs:取板方式,false:取同宽 true:取同高 dt:刀头间隙 -function jsyb1(bigbang: Big_bang, lx: number, fs: boolean, dt: number, listbang: xbang[], isdtwosided: boolean): [number, number, Big_bang[], Con, xbang[], number, Big_bang[]] { - let x: number = bigbang.x - let y: number = bigbang.y - let k: number = bigbang.w - let g: number = bigbang.l - let isend: boolean = false - let ybg: number = g - let ybk: number = k - let x1: number = x - let y1: number = y - let yb: Big_bang[] = [] // #余板 坐标跟高宽; - let yhxbang: Con = []// #连带小板的Id,及坐标 - let zfkj: Big_bang[] = [] // 作废的空间 - let l: number - let w: number - - let get_result: findbang - let temp_get: findbang - if (lx == 0) { - // get_result = find_max_mz(g, k, listbang); - get_result = find_max_mz(g, k, listbang, isdtwosided) - } - else if (lx == 1) { - // get_result = find_max_g(g, k, listbang); - get_result = find_max_g(g, k, listbang, isdtwosided) - } - else { - // get_result = find_max_k(g, k, listbang); - get_result = find_max_k(g, k, listbang, isdtwosided) - } - - if (get_result.findid > -1) { - yhxbang.push({ - bangid: get_result.id, - line: get_result.line, - x, - y, - pbg: get_result.pbg, - pbk: get_result.pbk, - }) - listbang.splice(get_result.findid, 1) - ////////////// - l = get_result.pbg - w = get_result.pbk - if (fs == false) // false:左右(取同宽) true:上下(取同高) - { - ybg = g - l - dt - y1 = y + l + dt - while (isend == false) { - temp_get = find_same_k(ybg, w, listbang, isdtwosided) - if (temp_get.findid > -1) { - yhxbang.push({ - bangid: temp_get.id, - line: temp_get.line, - x, - y: y1, - pbg: temp_get.pbg, - pbk: temp_get.pbk, - }) - y1 = y1 + temp_get.pbg + dt - ybg = ybg - temp_get.pbg - dt - listbang.splice(temp_get.findid, 1) - } - else { - if (ybg > 0) { - yb.push({ - l: ybg, - w, - x, - y: y1, - }) - } - if (k - w - dt > 0) { - yb.push({ - l: g, - w: k - w - dt, - x: x + w + dt, - y, - }) - } - break - } - } - } - else // true:上下(取同高) - { - ybk = k - w - dt - x1 = x + w + dt - while (isend == false) { - temp_get = find_same_g(l, ybk, listbang, isdtwosided) - if (temp_get.findid > -1) { - yhxbang.push({ - bangid: temp_get.id, - line: temp_get.line, - x: x1, - y, - pbg: temp_get.pbg, - pbk: temp_get.pbk, - }) - x1 = x1 + temp_get.pbk + dt - ybk = ybk - temp_get.pbk - dt - listbang.splice(temp_get.findid, 1) - } - else { - if (ybk > 0) { - yb.push({ - l: g, - w: ybk, - x: x1, - y, - }) - } - if (g - l - dt > 0) { - yb.push({ - l: g - l - dt, - w: k - ybk - dt, - x, - y: y + l + dt, - }) - } - break - } - } - } // false:左右(取同宽) true:上下(取同高) - - //////////////////////////////////////////////////////////////////////////// - - let ybsl: number = 0 - let yhsl: number = 0 - if (yb.length > 0) { ybsl = yb.length } - if (yhxbang.length > 0) { yhsl = yhxbang.length } - return [ybsl, yhsl, yb, yhxbang, listbang, 0, zfkj] - } - else { - zfkj.push({ - l: g, - w: k, - x, - y, - }) - let ybsl: number = 0 - let yhsl: number = 0 - if (yb.length > 0) { ybsl = yb.length } - if (yhxbang.length > 0) { yhsl = yhxbang.length } - return [ybsl, yhsl, yb, yhxbang, listbang, 1, zfkj] - } -} - -interface findbang { - findid: number - line: LineType - pbg: number - pbk: number - id: number -} - -interface Lyr { - pfs: number// 平方数 - lry: number// 利用率 - ys: number// 页数 -} - -/** 获取数组最后一个元素 */ -function arrayLast(arr: { [key: number]: T; length: number }): T -{ - return arr[arr.length - 1] -} - -/** 查找数组中最大的元素 */ -function arrayMax(arr: T[], f: (item: T) => number = a => (a as unknown as number)): [T, number] -{ - let max = Number.NEGATIVE_INFINITY - let maxIndex = -1 - for (let i = 0; i < arr.length; i++) - { - let item = arr[i] - let v = f(item) - if (v > max) - { - maxIndex = i - max = v - } - } - return [arr[maxIndex], maxIndex] -} -async function Sleep(time: number) -{ - return new Promise((res) => - { - setTimeout(res, time) - }) -} diff --git a/samples/handleAbility/RectOptimizeWorker/RectOptimizeWorkerWorker.ts b/samples/handleAbility/RectOptimizeWorker/RectOptimizeWorkerWorker.ts deleted file mode 100644 index 984bc08..0000000 --- a/samples/handleAbility/RectOptimizeWorker/RectOptimizeWorkerWorker.ts +++ /dev/null @@ -1,66 +0,0 @@ -import type { Big_bang, xbang } from './bang' -import { RectOptimizeMachine } from './RectOptimizeMachine' -import {Worker} from "worker_threads" - -const ctx: Worker = self as any - -ctx.addListener('message', async (event) => { - let m = new RectOptimizeMachine() - m.CallBack = async (best, fit, arg, info) => { - - ctx.postMessage([best, fit, arg, info]) - } - if (event.data.type == 'start') { - /** - * blockList 小板列表 - * boardList 大板(N个元素,前N-1个元素表示余料板且余料板须为矩形,第N个元素表示大板) - * boardCount 余料板数量(bigBang中前N-1个元素对应的数量,如果bigBang中只有一个元素即只有大板没有余料板,则为空数组) - * optimizeTimes 新优化次数 - * isDoubleFaceBlockFirst 双面加工的小板是否优先排入 - * gap 排版缝隙 = 开料刀直径 + 缝隙 - * gzpb 规则排版 - * isDoubleFaceBlockInRemain 余料板是否排入双面加工的小板 - */ - let [blockList, boardList, boardCount, optimizeTimes, isDoubleFaceBlockFirst, gap, gzpb, isDoubleFaceBlockInRemain] = (event.data.data) as [xbang[], Big_bang[], number[], number, boolean, number, boolean, boolean] - - m.Start(blockList, boardList, boardCount, optimizeTimes, isDoubleFaceBlockFirst, gap, gzpb, isDoubleFaceBlockInRemain) - } else { - const info = { - type: 'isStop', - } - await m.Stop(info) - ctx.postMessage([[], null, null, info]) - ctx?.terminate() - } -}) -// ctx.addEventListener('message', async (event) => { -// let m = new RectOptimizeMachine() -// m.CallBack = async (best, fit, arg, info) => { - -// ctx.postMessage([best, fit, arg, info]) -// } -// if (event.data.type == 'start') { -// /** -// * blockList 小板列表 -// * boardList 大板(N个元素,前N-1个元素表示余料板且余料板须为矩形,第N个元素表示大板) -// * boardCount 余料板数量(bigBang中前N-1个元素对应的数量,如果bigBang中只有一个元素即只有大板没有余料板,则为空数组) -// * optimizeTimes 新优化次数 -// * isDoubleFaceBlockFirst 双面加工的小板是否优先排入 -// * gap 排版缝隙 = 开料刀直径 + 缝隙 -// * gzpb 规则排版 -// * isDoubleFaceBlockInRemain 余料板是否排入双面加工的小板 -// */ -// let [blockList, boardList, boardCount, optimizeTimes, isDoubleFaceBlockFirst, gap, gzpb, isDoubleFaceBlockInRemain] = (event.data.data) as [xbang[], Big_bang[], number[], number, boolean, number, boolean, boolean] - -// m.Start(blockList, boardList, boardCount, optimizeTimes, isDoubleFaceBlockFirst, gap, gzpb, isDoubleFaceBlockInRemain) -// } else { -// const info = { -// type: 'isStop', -// } -// await m.Stop(info) -// ctx.postMessage([[], null, null, info]) -// ctx?.terminate() -// } -// }) - -export default {} as typeof Worker & (new () => Worker) diff --git a/samples/handleAbility/RectOptimizeWorker/bang.ts b/samples/handleAbility/RectOptimizeWorker/bang.ts deleted file mode 100644 index 8100800..0000000 --- a/samples/handleAbility/RectOptimizeWorker/bang.ts +++ /dev/null @@ -1,115 +0,0 @@ - -export type Con = YH_bang[];//单块1220*2440的板结果 Container -export type Inv = Con[]; //个体:优化结果 包含多个大板 Individual - -/**纹路类型 Positive=0正纹 Reverse=1反纹 CanReversal=2可翻转 */ -export enum LineType -{ - /**正纹 */ - Positive = 0, - /**反纹 */ - Reverse = 1, - /**可翻转 */ - CanReversal = 2, -} - -/**优化的大板 */ -export interface YH_bang -{ - /**板ID */ - bangid: number; - /**纹路 */ - line: LineType; - x: number; - y: number; - /**排版高 */ - pbg: number; - /**排版宽 */ - pbk: number; - - ishb?: boolean;//是否参与合并的板 - hb?: number[]; //合在并的板 - isgr?: boolean; //是否关连 - gr?: number[];//关联的板的集合 - grid?: number; //跟别的板关联的ID - isbig?: boolean;//是否为合并的大板 - isqg?: boolean;//是否被切掉的板 -} - -/**版面类型: Positive=0正面 Reverse=1反面 Arbitrary=2任意面 */ -export enum ComposingType -{ - /**正面 */ - Positive = 0, - /**反面 */ - Reverse = 1, - /**任意面 */ - Arbitrary = 2 -} - -/**孔类型 None=0无 Positive=1正面 Reverse=2反面 Two=3正反 */ -export enum HoleType -{ - /**无 */ - None = 0, - /**正面 */ - Positive = 1, - /**反面 */ - Reverse = 2, - /**正反 */ - Two = 3 -} - -/** 小板 */ -export interface xbang -{ - /**长 */ - l: number; - /**宽 */ - w: number; - /**纹路 */ - line: LineType; - /**排版面 */ - face: ComposingType; - /**小板ID */ - id: number; - /**小板编号 */ - bno: string; - /**孔面: 0无孔 1正面有孔 2反面有孔 3正反面都有孔 */ - holeFaceCount: HoleType; - /**是矩形 */ - isRect?: boolean; - /**有孔 */ - hasHole?: boolean; - /**false单面 true双面 */ - isdtwosided?: boolean; -} - -/** 大板 */ -export interface Big_bang //待优化的板 -{ - l: number; //长 - w: number; //宽 - x: number; //x - y: number; //y -} - - -export enum BlockRegion - { - /** 左下 = 0 */ - LEFT_BOTTOM = 0, - /** 右下 = 1 */ - RIGHT_BOTTOM = 1, - /** 右上 = 2 */ - RIGHT_TOP = 2, - /** 左上 = 3 */ - LEFT_TOP = 3, -} - -export class WorkerItemType { - w?: Worker - goodsId?: string | number - pm?: any - status?: 'start' | 'stop' -} \ No newline at end of file diff --git a/samples/handleAbility/RectOptimizeWorker/新优化.md b/samples/handleAbility/RectOptimizeWorker/新优化.md deleted file mode 100644 index dccfca2..0000000 --- a/samples/handleAbility/RectOptimizeWorker/新优化.md +++ /dev/null @@ -1 +0,0 @@ -# 新优化 \ No newline at end of file diff --git a/samples/handleAbility/ability_1.ts b/samples/handleAbility/ability_1.ts deleted file mode 100644 index af2059a..0000000 --- a/samples/handleAbility/ability_1.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { ConfigBase } from "../../src/models/config"; - -/** 基础功能1 -- 新优化 */ -export class BlockPlace extends ConfigBase{ - // 优化过程中的回调函数 - callBack?:Function - constructor(){ - super() - this.name = 'XXX' - this.version = '20250707' - } - -} \ No newline at end of file diff --git a/samples/handleAbility/blockDetailHelperBase.ts b/samples/handleAbility/blockDetailHelperBase.ts deleted file mode 100644 index f696fe4..0000000 --- a/samples/handleAbility/blockDetailHelperBase.ts +++ /dev/null @@ -1,132 +0,0 @@ -import { FaceType, PlaceBlock, PlaceBlockDetail, PlaceBorderContour, PlaceMaterial, PlaceStyle, SizeExpand } from "../confClass" -import { Arc2d, Curve2d, Line2d } from "./common/base/CAD" -import { PolylineHelper } from "./common/LayoutEngine/PolylineHelper" -import { KnifeHelper } from "./knifeHelper" - -/** 小板明细 相关的计算 孔 造型 以及轮廓 */ -export class BlockDetailHelperBase { - - /** 造型轮廓(含封边),扣除封边, 变成开料坐标 */ - resetModelContour(bd: PlaceBlockDetail) { - let ox = bd.offsetX - let oy = bd.offsetY - for (let m of bd.models) { - if (m.hasContour()) { - let ptsArr = m.originModeling.outline.map(e => e.pts) - for (let pt of ptsArr) { - // 23.8.5 发现矩形的挖穿轮廓坐标是不含封边的 - pt.x -= ox - pt.y -= oy - } - } - } - } - // 原始轮廓,成品轮廓 - createFinalBorder(bd: PlaceBlockDetail, block: PlaceBlock): Curve2d[] { - const orgPoints = bd.orgPoints - const orgBorderCurveList = new Array() - if (orgPoints && orgPoints.length > 1) // 异形 - { - - const count = orgPoints.length - for (let i = 0; i < count; i++) { - const p0 = orgPoints[i] - const p1 = i == count - 1 ? orgPoints[0] : orgPoints[i + 1] - const sideHoleCount = bd.holeListSide.filter(t => t.faceId == i).length - if (p0.curve == 0) // 直线 - { - const newLine = Line2d.New(p0.pointX, p0.pointY, p1.pointX, p1.pointY) - newLine.tagData = p0.sealSize - newLine.tagData2 = sideHoleCount - orgBorderCurveList.push(newLine) - p0.radius = 0 - } - else // 曲线 - { - const crc = Arc2d.New(p0.pointX, p0.pointY, p1.pointX, p1.pointY, p0.curve) - crc.tagData = p0.sealSize - crc.tagData2 = sideHoleCount - p0.radius = crc.m_Radius - orgBorderCurveList.push(crc) - } - } - } - else // 矩形板 - { - const w = block.width - const l = block.length - - const line0 = Line2d.New(0, 0, w, 0) - line0.tagData = block.sealBottom - line0.tagData2 = block.holeCountBottom() || 0 - - const line1 = Line2d.New(w, 0, w, l) - line1.tagData = block.sealRight - line1.tagData2 = block.holeCountRight() || 0 - - const line2 = Line2d.New(w, l, 0, l) - line2.tagData = block.sealTop - line2.tagData2 = block.holeCountTop() || 0 - - const line3 = Line2d.New(0, l, 0, 0) - line3.tagData = block.sealLeft - line3.tagData2 = block.holeCountLeft() || 0 - - orgBorderCurveList.push(line0) - orgBorderCurveList.push(line1) - orgBorderCurveList.push(line2) - orgBorderCurveList.push(line3) - } - return orgBorderCurveList - } - /** 创建 开料轮廓不含预铣 */ - createOrgBorder(bd: PlaceBlockDetail): Curve2d[] { - const borders = new Array() - if (bd.points && bd.points.length > 1) // 异形 - { - const count = bd.points.length - for (let i = 0; i < count - 1; i++) // 异形点(无封边,起点终点 是重复的) - { - const p0 = bd.points[i] - const p1 = i == count - 1 ? bd.points[0] : bd.points[i + 1] - const sideHoleCount = bd.holeListSide.filter(t => t.faceId == i).length - if (p0.curve == 0) // 直线 - { - const newLine = Line2d.New(p0.pointX, p0.pointY, p1.pointX, p1.pointY) - newLine.tagData = p0.sealSize - newLine.tagData2 = sideHoleCount - borders.push(newLine) - p0.radius = 0 - } - else // 曲线 - { - const crc = Arc2d.New(p0.pointX, p0.pointY, p1.pointX, p1.pointY, p0.curve) - crc.tagData = p0.sealSize - crc.tagData2 = sideHoleCount - p0.radius = crc.m_Radius - if (p0.radius < 2) { - p0.curve = 0 - p0.radius = 0 - } - borders.push(crc) - } - } - } - else // 矩形板 - { - const w = bd.cutWidth - const l = bd.cutLength - const line0 = Line2d.New(0, 0, w, 0) - const line1 = Line2d.New(w, 0, w, l) - const line2 = Line2d.New(w, l, 0, l) - const line3 = Line2d.New(0, l, 0, 0) - - borders.push(line0) - borders.push(line1) - borders.push(line2) - borders.push(line3) - } - - return borders - } -} \ No newline at end of file diff --git a/samples/handleAbility/blockHelper.ts b/samples/handleAbility/blockHelper.ts deleted file mode 100644 index 29ac6e9..0000000 --- a/samples/handleAbility/blockHelper.ts +++ /dev/null @@ -1,4 +0,0 @@ -/** 小板相关的计算 */ -export class BlockHelper{ - -} \ No newline at end of file diff --git a/samples/handleAbility/common/ArrayExt.ts b/samples/handleAbility/common/ArrayExt.ts deleted file mode 100644 index 2a446dd..0000000 --- a/samples/handleAbility/common/ArrayExt.ts +++ /dev/null @@ -1,392 +0,0 @@ -export class List extends Array -{ - /** 返回符合条件的第一个元素 */ - first(fn: (item: Item) => boolean): Item - { - if (this.length == 0) - return null - for (const item of this) - { - if (fn(item)) - return item - } - return null - } - - /** 返回符合条件的最后一元素 */ - last(fn: (t: Item) => boolean): Item - { - if (this.length == 0) - return null - for (let i = this.length - 1; i >= 0; i--) - { - if (fn(this[i])) - return this[i] - } - return null - } - - /** 最大值 */ - max(fn: (item: Item) => T): T - { - let maxV: T - for (const i of this) - { - let v = fn(i) - if (maxV == null) - { - maxV = fn(i) - } - else - { - if (v > maxV) - { - maxV = v - } - } - } - return maxV - } - - /** 最小值 */ - min(fn: (item: Item) => T): T - { - let minV: T - for (const i of this) - { - let v = fn(i) - if (minV == null) - { - minV = fn(i) - } - else - { - if (v < minV) - { - minV = v - } - } - } - return minV - } - - /** 累加 */ - sum(fn: (item: Item) => number): number - { - let v: number = 0 - for (const t of this) - { - v = v + fn(t) - } - return v - } - - /** 平均值 */ - avg(fn: (item: Item) => number): number - { - if (this.length == 0) - return 0 - let sum = this.sum(fn) - return sum / this.length - } - - /** 满足条件的元素数量 */ - count(fn: (item: Item) => number): number - { - if (this.length == 0) - return 0 - let c = 0 - for (const item of this) - { - if (fn(item)) - c = c + 1 - } - return c - } - - FindMax(fn: (item: Item) => T): Item - { - return this.reduce((a: Item, b: Item): Item => fn(a) > fn(b) ? a : b) - } -} - -export class ArrayExt -{ - /** 返回满足条件的元素数量 */ - static count(list: Item[], fn: (item: Item) => boolean): number - { - if (list.length == 0) - return 0 - let c = 0 - for (const item of list) - { - if (fn(item)) - c = c + 1 - } - return c - } - - /** 移除 */ - static remove(list: Item[], obj: Item) - { - let index = list.findIndex(t => t == obj) - if (index == -1) - return - list.splice(index, 1) - } - - /** 返回符合条件的第一个元素 */ - static first(list: Item[], fn: (item: Item) => boolean, orderFn1: (item: Item) => number = null, orderFn2: (item: Item) => number = null): Item - { - if (list.length == 0) - return null - if (orderFn1 == null) - { - for (const item of list) - { - if (fn(item)) - return item - } - return null - } - - let minValue1: number - let minValue2: number - let minItem: Item - for (const item of list) - { - if (fn(item) == false) - continue - let v1 = orderFn1(item) - let v2 = orderFn2 != null ? orderFn2(item) : 0 - if (minValue1 == null || v1 < minValue1 || (v1 == minValue1 && v2 < minValue2)) - { - minValue1 = v1 - minValue2 = v2 - minItem = item - } - } - return minItem - } - - /** 返回符合条件的最后一元素 */ - static last(list: Item[], fn: (t: Item) => boolean, orderFn1: (item: Item) => number = null, orderFn2: (item: Item) => number = null): Item - { - if (list.length == 0) - return null - if (orderFn1 == null) - { - for (let i = list.length - 1; i >= 0; i--) - { - if (fn(list[i])) - return list[i] - } - return null - } - - // - let maxValue1: number - let maxValue2: number - let maxItem: Item - for (const item of list) - { - if (fn(item) == false) - continue - let v1 = orderFn1(item) - let v2 = orderFn2 ? orderFn2(item) : 0 - if (maxValue1 == null || v1 > maxValue1 || (v1 == maxValue1 && v2 > maxValue2)) - { - maxValue1 = v1 - maxValue2 = v2 - maxItem = item - } - } - return maxItem - } - - /** 取最大值 */ - static max(list: T1[], fn: (item: T1) => T2, whereF: (item: T1) => boolean = null, defaultV: T2 = null): T2 - { - let maxV: T2 - for (const i of list) - { - if (whereF && whereF(i) == false) - continue - let v = fn(i) - if (maxV == undefined) - { - maxV = fn(i) - } - else - { - if (v > maxV) - { - maxV = v - } - } - } - if (maxV != undefined) - return maxV - return defaultV - } - - /** 最小值 */ - static min(list: Item[], fn: (item: Item) => T, whereF: (item: Item) => boolean = null, defaultV: T = null): T - { - let minV: T - for (const i of list) - { - if (whereF && whereF(i) == false) - continue - let v = fn(i) - if (minV == undefined) - { - minV = v - } - else - { - if (v < minV) - { - minV = v - } - } - } - if (minV != undefined) - return minV - return defaultV - } - - /** 累加 */ - static sum(list: Item[], fn: (item: Item) => number, wn?: (item: Item) => boolean): number - { - let v: number = 0 - for (const t of list) - { - if (wn && wn(t) == false) - continue - v = v + fn(t) - } - return v - } - - /** 平均值 */ - static avg(list: Item[], fn: (item: Item) => number): number - { - if (this.length == 0) - return 0 - let sum = ArrayExt.sum(list, fn) - return sum / this.length - } - - /** 排序 */ - static sortBy(list: Item[], fn: (item: Item) => number, fn2: (item: Item) => number = null) - { - if (fn2 == null) - return list.sort((a: Item, b: Item): number => fn(a) - fn(b)) - else - return list.sort((a: Item, b: Item): number => fn(a) == fn(b) ? (fn2(a) - fn2(b)) : fn(a) - fn(b)) - } - - /** 降序 排序 */ - static sortByDescending(list: Item[], fn: (item: Item) => number) - { - list.sort((a: Item, b: Item): number => fn(b) - fn(a)) - } - - /** 排序成新的数组 */ - static orderBy(list: Item[], fn: (item: Item) => number, fn2: (item: Item) => number = null): Item[] - { - let newList = list.concat([]) - if (fn2 == null) - return newList.sort((a: Item, b: Item): number => fn(a) - fn(b)) - else - return newList.sort((a: Item, b: Item): number => fn(a) == fn(b) ? (fn2(a) - fn2(b)) : fn(a) - fn(b)) - } - - /** 降序成新的数组 */ - static orderByDescending(list: Item[], fn: (item: Item) => number, fn2: (item: Item) => number = null): Item[] - { - let newList = list.concat([]) - if (fn2 == null) - return list.sort((a: Item, b: Item): number => fn(b) - fn(a)) - else - return list.sort((a: Item, b: Item): number => fn(a) == fn(b) ? (fn2(b) - fn2(a)) : fn(b) - fn(a)) - } - - /** 分组 */ - static groupBy(list: Item[], fn: (item: Item) => gT): GroupItem[] - { - let groups = new Array>() - - for (const item of list) - { - let key = fn(item) - let group = groups.find(t => t.key == key) - if (group == null) - { - group = new GroupItem(key) - groups.push(group) - } - group.push(item) - } - return groups - } - - /** - * 选择 - * let newObjectList = ArrayExt.Select(list,t=>({pA:t.name, pB:t.age + "_"+ t.month}) ) ; - */ - static Select(list: Item[], fn: (item: Item) => rT): rT[] - { - let newList = new Array() - for (const t of list) - { - newList.push(fn(t)) - } - return newList - } - - /** 过来,并按顺序排序 */ - static where(list: Item[], whereFn: (item: Item) => boolean, orderfn1: (item: Item) => number = null, orderfn2: (item: Item) => number = null): Item[] - { - let newList = list.filter(whereFn) - if (orderfn1 == null && orderfn2 == null) - return newList - return ArrayExt.sortBy(newList, orderfn1, orderfn2) - } -} - -export class GroupItem -{ - key: gT - get count() { return this.list.length } - list: Item[] - - constructor(k: gT) - { - this.key = k - this.list = [] - } - - push(d: Item) - { - this.list.push(d) - } -} - -/** - * 对排序好的数组进行去重操作 - * @param {(e1, e2) => boolean} [checkFuction] 校验对象相等函数 - * @returns {Array} 返回自身 - */ -export function arrayRemoveDuplicateBySort(arr: Array, checkFuction: (e1: T, e2: T) => boolean = checkEqual): Array -{ - if (arr.length < 2) - return arr - let j = 1 - for (let i = 1, l = arr.length; i < l; i++) - if (!checkFuction(arr[j - 1], arr[i])) - arr[j++] = arr[i] - arr.length = j - return arr -} diff --git a/samples/handleAbility/common/Box2.ts b/samples/handleAbility/common/Box2.ts deleted file mode 100644 index 2f71489..0000000 --- a/samples/handleAbility/common/Box2.ts +++ /dev/null @@ -1,183 +0,0 @@ -import { Vector2 } from './Vector2.js' -import type { Point } from './Point.js' - -export class Box2 -{ - min: Vector2 - max: Vector2 - constructor(min = new Vector2(+Number.POSITIVE_INFINITY, +Number.POSITIVE_INFINITY), max = new Vector2(Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY)) - { - this.min = min - this.max = max - } - - /** 获取面积 */ - get area(): number - { - return (this.max.x - this.min.x) * (this.max.y - this.min.y) - } - - /** */ - set(min: Vector2, max: Vector2): Box2 - { - this.min.copy(min) - this.max.copy(max) - return this - } - - setFromPoints(points: Iterable): Box2 - { - this.makeEmpty() - for (let p of points) - { - this.expandByPoint(p) - } - return this - } - - private static _setFromCenterAndSize_v1 = new Vector2() - setFromCenterAndSize(center: Vector2, size: Vector2): Box2 - { - const v1 = Box2._setFromCenterAndSize_v1 - const halfSize = v1.copy(size).multiplyScalar(0.5) - this.min.copy(center).sub(halfSize) - this.max.copy(center).add(halfSize) - return this - } - - clone(): Box2 - { - return new (this.constructor as any)().copy(this) - } - - copy(box: Box2): Box2 - { - this.min.copy(box.min) - this.max.copy(box.max) - return this - } - - makeEmpty(): Box2 - { - this.min.x = this.min.y = +Number.POSITIVE_INFINITY - this.max.x = this.max.y = Number.NEGATIVE_INFINITY - return this - } - - isEmpty(): boolean - { - // this is a more robust check for empty than (volume <= 0) because volume can get positive with two negative axes - return (this.max.x < this.min.x) || (this.max.y < this.min.y) - } - - getCenter(result: Vector2 = new Vector2()): Vector2 - { - return this.isEmpty() ? result.set(0, 0) : result.addVectors(this.min, this.max).multiplyScalar(0.5) - } - - getSize(result: Vector2 = new Vector2()): Vector2 - { - return this.isEmpty() ? result.set(0, 0) : result.subVectors(this.max, this.min) - } - - expandByPoint(point: Point): Box2 - { - this.min.min(point) - this.max.max(point) - return this - } - - expandByVector(vector: Vector2): Box2 - { - this.min.sub(vector) - this.max.add(vector) - return this - } - - expandByScalar(scalar: number): Box2 - { - this.min.addScalar(-scalar) - this.max.addScalar(scalar) - return this - } - - containsPoint(point: Vector2): boolean - { - if (point.x < this.min.x || point.x > this.max.x - || point.y < this.min.y || point.y > this.max.y) - { - return false - } - return true - } - - containsBox(box: Box2): boolean - { - if ((this.min.x <= box.min.x) && (box.max.x <= this.max.x) - && (this.min.y <= box.min.y) && (box.max.y <= this.max.y)) - { - return true - } - return false - } - - getParameter(point: Vector2, result: Vector2 = new Vector2()): Vector2 - { - // This can potentially have a divide by zero if the box - // has a size dimension of 0. - return result.set( - (point.x - this.min.x) / (this.max.x - this.min.x), - (point.y - this.min.y) / (this.max.y - this.min.y), - ) - } - - intersectsBox(box: Box2): boolean - { - // using 6 splitting planes to rule out intersections. - if (box.max.x < this.min.x || box.min.x > this.max.x - || box.max.y < this.min.y || box.min.y > this.max.y) - { - return false - } - return true - } - - clampPoint(point: Vector2, result: Vector2 = new Vector2()): Vector2 - { - return result.copy(point).clamp(this.min, this.max) - } - - private static _distanceToPoint_v1 = new Vector2() - distanceToPoint(point: Vector2): number - { - const v1 = Box2._distanceToPoint_v1 - const clampedPoint = v1.copy(point).clamp(this.min, this.max) - return clampedPoint.sub(point).length() - } - - intersect(box: Box2): Box2 - { - this.min.max(box.min) - this.max.min(box.max) - return this - } - - union(box: Box2): Box2 - { - this.min.min(box.min) - this.max.max(box.max) - return this - } - - translate(offset: Point): Box2 - { - this.min.add(offset) - this.max.add(offset) - return this - } - - equals(box: Box2): boolean - { - return box.min.equals(this.min) && box.max.equals(this.max) - } -}; diff --git a/samples/handleAbility/common/ClipperCpp.ts b/samples/handleAbility/common/ClipperCpp.ts deleted file mode 100644 index 7bb2a5f..0000000 --- a/samples/handleAbility/common/ClipperCpp.ts +++ /dev/null @@ -1,25 +0,0 @@ -import * as clipperLib from 'js-angusj-clipper/web/index.js' - -// nodejs style require - -export const clipperCpp: { lib?: clipperLib.ClipperLibWrapper } = {} -export function InitClipperCpp(): Promise -{ - if (clipperCpp.lib) - return - if (!globalThis.document) - globalThis.document = {} as any - return new Promise((res, rej) => - { - clipperLib.loadNativeClipperLibInstanceAsync( - // let it autodetect which one to use, but also available WasmOnly and AsmJsOnly - // clipperLib.NativeClipperLibRequestedFormat.WasmWithAsmJsFallback - clipperLib.NativeClipperLibRequestedFormat.WasmOnly, - ).then((c) => - { - clipperCpp.lib = c - res() - console.log('载入成功!') - }) - }) -} diff --git a/samples/handleAbility/common/Filer.ts b/samples/handleAbility/common/Filer.ts deleted file mode 100644 index a319f18..0000000 --- a/samples/handleAbility/common/Filer.ts +++ /dev/null @@ -1,31 +0,0 @@ -/** - * CAD文件数据 - */ -export class NestFiler -{ - private readIndex: number = 0 - constructor(public _datas: any[] = []) { } - - Clear() - { - this._datas.length = 0 - return this.Reset() - } - - Reset() - { - this.readIndex = 0 - return this - } - - Write(data: any) - { - this._datas.push(data) - return this - } - - Read(): any - { - return this._datas[this.readIndex++] - } -} diff --git a/samples/handleAbility/common/LayoutEngine/Curves2Parts.ts b/samples/handleAbility/common/LayoutEngine/Curves2Parts.ts deleted file mode 100644 index e9735cf..0000000 --- a/samples/handleAbility/common/LayoutEngine/Curves2Parts.ts +++ /dev/null @@ -1,255 +0,0 @@ -import type { PolylineProps } from 'cadapi' -import { Circle, Polyline, Polyline2Points } from 'cadapi' -import { EndType, JoinType } from 'js-angusj-clipper/web' -import type { Box3, Vector3 } from 'three' -import { Vector2 } from 'three' -import { clipperCpp } from '../ClipperCpp' -import type { Point } from '../Point' -import { Path, PathScale } from '../core/Path' -import type { IOffset } from './Simplify2' -import { SimplifyDouglasPeucker } from './Simplify2' - -/** 内外接多边形 */ -export function Circle2Points(circle: Circle, knifRadius: number, splitSize = 10, outside = false): Point[] { - let radius = circle.Radius - const an = Math.PI * 2 / splitSize - - if (outside) - radius = radius / Math.cos(an / 2) + knifRadius - else - radius -= knifRadius - - const cenP = circle.Center - const pts: Vector3[] = [] - for (let i = 0; i < splitSize; i++) - pts.push(polar(cenP.clone(), an * i, radius)) - - return pts as Point[] -} - -export function Curve2Path(curve: Polyline, outside = false): Path { - if (curve.IsClockWise) - curve.Reverse() - const w = new CurveWrap(curve, 3, outside) - return new Path(outside ? w.GetOutsidePoints() : w.GetInsidePoints()) -} - -export class CurveWrap { - BoundingBox: Box3 - - Area: number - - SimplyPolyline: Polyline - SimplyOffset: IOffset - Used = false - Holes: CurveWrap[] = [] - - Points: Point[] - - constructor(public Curve: Polyline | Circle, public KnifRadius: number, public IsOutside: boolean) { - this.BoundingBox = Curve.BoundingBox - - if (Curve instanceof Polyline) { - const pts = Polyline2Points(Curve, IsOutside, 0)[1] - /** - * 精简算法SimplifyDouglasPeucker 会导致轮廓变大, - * 修改成直接取点 陈雄 QQ聊天记录 23.9.18 - * 23.10.9 by lrx - */ - - const [spts, offset] = SimplifyDouglasPeucker(pts, KnifRadius ** 2 + KnifRadius) - if (spts.length !== pts.length && spts.length > 2) { - this.SimplyOffset = offset - - this.SimplyPolyline = Path2Polyline(spts) - this.Curve = this.SimplyPolyline// 保险起见,也更新它 - this.Area = this.SimplyPolyline.Area - } - else// 此处更新多段线 - { this.Curve = Path2Polyline(pts) } - this.Points = spts - - // 以下修改后的 - // this.Curve = Path2Polyline(pts); - // this.Points = pts; - } - - if (this.Area === undefined) - this.Area = this.Curve.Area - } - - ContainsCurve(curve: CurveWrap): boolean { - if (this.SimplyPolyline) - return this.SimplyPolyline.PtInCurve(curve.Curve.StartPoint) - return this.Curve.PtInCurve(curve.Curve.StartPoint) - } - - GetOutsidePoints(): Point[] { - if (this.Curve instanceof Circle) { - const pts = Circle2Points(this.Curve, this.KnifRadius, 10, true) - return pts - } - else { - const pl = this.SimplyPolyline || this.Curve - let offset = this.KnifRadius - if (this.SimplyOffset) - offset += this.SimplyOffset.positiveOffset - - if (offset > 0) { - let pts = pl.GetStretchPoints() as Point[] - pts = clipperCpp.lib.offsetToPaths({ - delta: offset * 1e4, - offsetInputs: [{ data: PathScale(pts, 1e4), joinType: JoinType.Miter, endType: EndType.ClosedPolygon }], - })[0] - try { - PathScale(pts, 1e-4) - } - catch { - console.log('err') - } - return pts - } - else { return this.Points } - } - } - - GetInsidePoints(): Point[] { - return this.GetInsidePoints2(this.KnifRadius) - } - - GetInsidePoints2(d: number): Point[] { - if (this.Curve instanceof Circle) { - const pts = Circle2Points(this.Curve, d, 10, false) - return pts - } - else { - const pl = this.SimplyPolyline || this.Curve - let offset = -d - if (this.SimplyOffset) - offset += this.SimplyOffset.negativeOffset - - if (offset < -0.01) { - const pls = pl.GetOffsetCurves(offset) - if (pls.length) - return pls[0].GetStretchPoints() - } - else { return this.Points } - } - } - - /** 引入Polyline 已经含刀半径, 获得精简后的点阵 */ - GetOrgPoints(outside = true): Point[] { - if (this.Curve instanceof Circle) { - const pts = Circle2Points(this.Curve, 0, 10, outside) - return pts - } - else { - const pl = this.SimplyPolyline || this.Curve - let offset = 0 - if (this.SimplyOffset) - offset += this.SimplyOffset.positiveOffset - - if (offset > 0) { - let pts = pl.GetStretchPoints() as Point[] - pts = clipperCpp.lib.offsetToPaths({ - delta: offset * 1e4, - offsetInputs: [{ data: PathScale(pts, 1e4), joinType: JoinType.Miter, endType: EndType.ClosedPolygon }], - })[0] - try { - PathScale(pts, 1e-4) - } - catch { - console.log('err') - } - return pts - } - else { - return this.Points - } - } - } -} - -/** 多段线 转点整 已弃用,整合到CAD api 23.11.2 */ -// export function Polylin2Points(pl: Polyline, outside: boolean, knifRadius: number): [Polyline, Point[]] -// { -// let pts: Point[] = []; - -// if (!outside) knifRadius = -knifRadius; -// if (pl.IsClockWise) pl.Reverse(); -// for (let i = 0; i < pl.EndParam; i++) -// { -// pts.push(pl.GetPointAtParam(i)); - -// let bul = pl.GetBulgeAt(i); -// if (bul !== 0) -// { -// let arc = pl.GetCurveAtIndex(i) as Arc; - -// let allAngle = arc.AllAngle; -// let arcLength = arc.Length; - -// // let splitCount = Math.round(allAngle / 0.4); -// // if (arcLength < 300) -// // splitCount = 2; -// // else -// // splitCount = Math.max(arcLength / 200, splitCount,2); - -// let minCount = Math.floor(allAngle * 4 / Math.PI); -// let splitCount = Math.round(allAngle / 0.4); -// if (arcLength < 300) -// splitCount = Math.max(2, minCount); -// else -// splitCount = Math.max(Math.floor(arcLength / 200), splitCount,2, minCount); - -// let radius = arc.Radius; -// if (outside === bul > 0) -// radius = radius / Math.cos(allAngle / (splitCount * 2)); - -// let cp = arc.Center; -// for (let j = outside ? 0.5 : 0; j < splitCount; j++) -// { -// let a = arc.GetAngleAtParam(j * (1 / splitCount)); -// let p = polar(cp.clone(), a, radius); -// pts.push(p); -// } -// } -// } - -// if (knifRadius !== 0) -// { -// pts = clipperCpp.lib.offsetToPaths({ -// delta: knifRadius * 1e4, -// offsetInputs: [{ data: PathScale(pts, 1e4), joinType: JoinType.Miter, endType: EndType.ClosedPolygon }] -// })[0]; -// PathScale(pts, 1e-4); -// } -// return [pl, pts]; -// } - -export function Path2Polyline(path: Point[]): Polyline { - const pl = new Polyline() - pl.LineData = path.map((p) => { - return { pt: new Vector2(p.x, p.y), bul: 0 } - }) - pl.CloseMark = true - return pl -} - -export function Points2Polyline(pts: any[]): Polyline { - const lined: PolylineProps[] = [] - const count = pts.length - for (let i = 0; i < count; i++) { - const p0 = pts[i] - lined.push({ pt: new Vector2(p0.x, p0.y), bul: p0.bul }) - } - const pls = new Polyline(lined) - pls.CloseMark = true - return pls -} - -export function polar(v: T, an: number, dis: number): T { - v.x += Math.cos(an) * dis - v.y += Math.sin(an) * dis - return v -} diff --git a/samples/handleAbility/common/LayoutEngine/PolylineHelper.ts b/samples/handleAbility/common/LayoutEngine/PolylineHelper.ts deleted file mode 100644 index 43666f0..0000000 --- a/samples/handleAbility/common/LayoutEngine/PolylineHelper.ts +++ /dev/null @@ -1,369 +0,0 @@ -import type { PolylineProps } from 'cadapi' -import { CADFiler, Circle, Polyline, Status, VKnifToolPath, isTargetCurInOrOnSourceCur } from 'cadapi' -import type { Box3 } from 'three' -import { Vector2, Vector3 } from 'three' -import { arrayRemoveDuplicateBySort } from '../ArrayExt' -import type { Curve2d } from '../base/CAD' -import { Arc2d, Point2d, copyTextToClipboard } from '../base/CAD' -import { CurveWrap } from './Curves2Parts' - -// import type { Curve2d } from '../../common/base/CAD' - -export class PolylineHelper { - /** 创建闭合多段线 */ - static create(pts: any[], closeMark = false): Polyline { - let lined: PolylineProps[] = [] - let count = pts.length - for (let i = 0; i < count; i++) { - let p0 = pts[i] - - lined.push({ pt: new Vector2(p0.x, p0.y), bul: p0.bul || 0 }) - } - let pls = new Polyline(lined) - pls.CloseMark = closeMark - return pls - } - - static createByCurve2d(curs: Curve2d[], closeMark = true): Polyline { - let lined: PolylineProps[] = [] - for (let cur of curs) { - let x = cur.StartPoint.m_X - let y = cur.StartPoint.m_Y - let bul = 0 - if (cur instanceof Arc2d) - bul = cur.Bul || 0 - lined.push({ pt: new Vector2(x, y), bul }) - } - let pls = new Polyline(lined) - pls.CloseMark = true - return pls - } - - static createByPts(pts: any[], buls: number[], closeMark = false): Polyline { - let plps: PolylineProps[] = [] - let count = pts.length - for (let i = 0; i < count; i++) { - let p0 = pts[i] - plps.push({ pt: new Vector2(p0.x, p0.y), bul: buls[i] }) - } - let pls = new Polyline(plps) - pls.CloseMark = closeMark - return pls - } - - static getSimplePoints(pts: any[], offset: number): any[] { - let pl = PolylineHelper.create(pts) - pl.CloseMark = true - let cureW = new CurveWrap(pl, offset, true) - let pts2 = cureW.GetOutsidePoints() - arrayRemoveDuplicateBySort(pts2, (p1, p2) => (p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y) < 1e-2) - return pts2 - } - - static createByWidthLength(w: number, l: number): Polyline { - let plps: PolylineProps[] = [] - plps.push({ pt: new Vector2(0, 0), bul: 0 }) - plps.push({ pt: new Vector2(w, 0), bul: 0 }) - plps.push({ pt: new Vector2(w, l), bul: 0 }) - plps.push({ pt: new Vector2(0, l), bul: 0 }) - let pls = new Polyline(plps) - pls.CloseMark = true - return pls - } - - /** 多段线,添加位置移动 返回新多段线 */ - static moveTo(pl: Polyline, x: number, y: number): Polyline { - let lindData = pl.LineData - let pos = pl.Position - - let newPts: PolylineProps[] = [] - for (let p of lindData) { - let nx = p.pt.x + pos.x + x - let ny = p.pt.y + pos.y + y - if (ny < 7.9) { - // console.log('修边小于 7.9????', ny) - } - let bul = p.bul - newPts.push({ pt: new Vector2(nx, ny), bul }) - } - let npl = new Polyline(newPts) - npl.CloseMark = pl.CloseMark - return npl - } - - /** 重设 多段线的几点 */ - static resetPosition(pl: Polyline): Polyline { - let lindData = pl.LineData - let pos = pl.Position - - let newPts: PolylineProps[] = [] - for (let p of lindData) { - let nx = p.pt.x + pos.x - let ny = p.pt.y + pos.y - let bul = p.bul - newPts.push({ pt: new Vector2(nx, ny), bul }) - } - let npl = new Polyline(newPts) - npl.CloseMark = pl.CloseMark - return npl - } - - /** 获得v型刀走刀路径 */o - static getVModelPoints(pl: Polyline, depth: number, ang: number): any[] { - // let ang = Math.PI * (0.5 * angle) / 180 ; - let ps = [] - let bx = pl.Position.x - let by = pl.Position.y - if (ang > 0.01) { - let rt = VKnifToolPath(pl, depth, ang / 2) - ps = rt.map((t) => { return { x: t.pt.x + bx, y: t.pt.y + by, z: t.pt.z, bul: t.bul, r: 0 } }) - } - else { - ps = pl.LineData.map((t) => { return { x: t.pt.x + bx, y: t.pt.y + by, z: 0, bul: t.bul, r: 0 } }) - } - for (let i = 0; i < ps.length; i++) { - let p = ps[i] - if (p.bul == 0) - continue - let p2 = (i == ps.length - 1 ? ps[0] : ps[i + 1]) - let r = this.getArcRadius(p.x, p.y, p2.x, p2.y, p.bul) - p.r = r - } - return ps - } - - static ConverPolyLin2Circle(polyline: Polyline, fuzz = 0.1): Circle | undefined { - let box = polyline.BoundingBox - let size = box.getSize(new Vector3()) - if (!this.equaln(size.x, size.y, fuzz))// 盒子四方 - return undefined - - let circleLength = 2 * Math.PI * size.x - if (!this.equaln(circleLength, polyline.Length, fuzz * 2)) - return undefined - - let circleArea = Math.PI * size.x * size.x - if (!this.equaln(circleArea, polyline.Area, fuzz * 2)) - return undefined - - let r = size.x// 必须备份(因为我们要复用这个vector变量) - return new Circle(box.getCenter(size), r) - } - // 有问题 - static getVModelPoints_offset(pl: Polyline, offset: number, depth: number, angle: number) { - let npl = offset == 0 ? pl : pl.GetOffsetCurves(offset)[0] - // if(offset != 0) - // { - // ClipboardTest.write2PolyLine(pl,npl); - // } - return PolylineHelper.getVModelPoints(npl, depth, angle) - } - - static getArcRadius(x1: number, y1: number, x2: number, y2: number, bul: number): number { - let bul2 = Math.abs(bul) - let d = Math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2) / 2 - return 0.5 * d * (1 + bul2 ** 2) / bul2 - } - - // 圆 转 多段线 - static cicleToPolyline(c: Circle): Polyline { - let arcs = c.GetSplitCurves([0, 0.5]) - let pl = Polyline.FastCombine(arcs) - return pl - } - - /** 判断多段线是否 重叠 */ - static isIntersect(pl1: Polyline, pl2: Polyline): boolean { - let box1 = this.getBox(pl1) - let box2 = this.getBox(pl2) - - if (!box1.intersectsBox(box2)) - return false // 肯定不相交 - - let ipts = pl1.IntersectWith(pl2, 0) - if (ipts.length === 0) { - if (pl1.Area > pl2.Area)// 缓存面积 - { - if (isTargetCurInOrOnSourceCur(pl1, pl2)) - return true // 包含 - } - else { - if (isTargetCurInOrOnSourceCur(pl2, pl1)) - return true // 包含 - } - return false - } - else { - return true // 有交点 一定有交集 - } - } - - // 多段线 圆弧合并 - static mergeCurve(pl2: Polyline): Polyline { - const curves = pl2.Explode() - arrayRemoveDuplicateBySort(curves, (c1, c2) => { - return c1.Join(c2) === Status.True - }) - - return Polyline.FastCombine(curves) - } - - /** - * pl2 包含在pl1 内 - * - */ - // static isInside(pl1:Polyline,pl2:Polyline):boolean - // { - // let box1 = this.getBox(pl1); - // let box2 = this.getBox(pl2); - // if (!box1.intersectsBox(box2)) return false; //肯定不相交 - - // let ipts = pl1.IntersectWith(pl2, 0); - // if (ipts.length > 0) return true; //有交点 一定有交集 - // } - - /** - * 两片板的干涉检查 - * - * @param pl1 - * @param pls1_inner - * @param pls1_model - * @param pl2 - * @param pls2_inner - * @param pls2_model - * @returns - */ - static isOverLap(pl1: Polyline, pls1_inner: Polyline[], pls1_model: Polyline[], pl2: Polyline, pls2_inner: Polyline[], pls2_model: Polyline[]) { - // 是否干涉, 被包含在造型洞,不算干涉 - let isOverlap = this.boxIsOverlap(pl1, pls1_inner, pl2, pls2_inner) - - if (isOverlap) - return true - - // 造型 ,2v 刀路 是否干涉 - for (let pl1_model of pls1_model) { - if (pl1_model.IntersectWith(pl2, 0).length > 0) - return true - for (let pl2_inner of pls2_inner) { - if (pl1_model.IntersectWith(pl2_inner, 0).length > 0) - return true - } - } - - for (let pl2_model of pls2_model) { - if (pl2_model.IntersectWith(pl1, 0).length > 0) - return true - for (let pl1_inner of pls1_inner) { - if (pl2_model.IntersectWith(pl1_inner, 0).length > 0) - return true - } - } - - return false - } - - private static boxIsOverlap(pl1: Polyline, pls1_inner: Polyline[], pl2: Polyline, pls2_inner: Polyline[]) { - let box1 = this.getBox(pl1) - let box2 = this.getBox(pl2) - - if (!box1.intersectsBox(box2)) - return false // 肯定不相交 - - let ipts = pl1.IntersectWith(pl2, 0) - if (ipts.length > 0) - return true // 有交点 一定有交集 - - if (pl1.Area > pl2.Area)// 缓存面积 - { - if (isTargetCurInOrOnSourceCur(pl1, pl2)) // pl1包含 pl2 - { - for (let mpl of pls1_inner) // 如果pl1有造型洞包含pl2, 则表示不干涉,返回false - - { - if (isTargetCurInOrOnSourceCur(mpl, pl2) == true) - return false - } - - return true - } - } - else { - if (isTargetCurInOrOnSourceCur(pl2, pl1)) // pl2包含 pl1 - { - for (let mpl of pls2_inner) // 如果pl2有造型洞包含pl1, 则表示不干涉,返回false - - { - if (isTargetCurInOrOnSourceCur(mpl, pl1) == true) - return false - } - - return true - } - } - - return false - } - - /** 判断 点是否在多段线内 */ - static isPointInPolyline(pl1: Polyline, x: number, y: number): boolean { - return pl1.PtInCurve(new Vector3(x, y, 0)) - } - - static getBox(pl1: Polyline): Box3 { - if (!pl1.box_tp) - pl1.box_tp = pl1.BoundingBox - - return pl1.box_tp as Box3 - } - - static getArea(pl1: Polyline): number { - if (!pl1.area_tp) - pl1.area_tp = pl1.Area - - return pl1.area_tp as number - } - - static getPath(pl: Polyline): Path2D { - let path = new Path2D() - let p0 = pl.LineData[0].pt - path.moveTo(p0.x, p0.y) - - for (let i = 0; i < pl.LineData.length; i++) { - let p0 = pl.LineData[i].pt - let p1 = (i == pl.LineData.length - 1) ? pl.LineData[0].pt : pl.LineData[i + 1].pt - let bul = pl.LineData[i].bul - if (bul == 0) { - path.lineTo(p1.x, p1.y) - } - else { - let arc = new Arc2d(new Point2d(p0.x, p0.y), new Point2d(p1.x, p1.y), bul) - path.arc(arc.m_Center.m_X, arc.m_Center.m_Y, arc.m_Radius, arc.m_StartAngle, arc.m_EndAngle, bul < 0) - } - } - path.closePath() - return path - } - - static equaln(v1: number, v2: number, fuzz = 1e-5) { - return Math.abs(v1 - v2) <= fuzz - } - - static toClipboard(en: Polyline | any) { - let f = new CADFiler() - f.Write(1)// 实体个数 - f.WriteObject(en) - - copyTextToClipboard(f.ToString()) - } - - static getStrPLs(ens: any[]) { - if (ens.length == 0) - return '' - let f = new CADFiler() - f.Write(ens.length)// 实体个数 - for (let en of ens) - f.WriteObject(en) - - return f.ToString() - } -} diff --git a/samples/handleAbility/common/LayoutEngine/Simplify2.ts b/samples/handleAbility/common/LayoutEngine/Simplify2.ts deleted file mode 100644 index 0316ba0..0000000 --- a/samples/handleAbility/common/LayoutEngine/Simplify2.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { Vector2 } from "../Vector2" - -interface P { - x: number - y: number -} - -export interface IOffset { - negativeOffset: number - positiveOffset: number -} - -/** 点p到线段P1P2 的最短距离的平方,线段不延伸 */ -function GetSqSegDist(p: P, p1: P, p2: P): number { - let x = p1.x - let y = p1.y - let dx = p2.x - x - let dy = p2.y - y - - if (dx !== 0 || dy !== 0)// 不是0长度线 - { - const t = ((p.x - x) * dx + (p.y - y) * dy) / (dx * dx + dy * dy) - if (t > 1) { - x = p2.x - y = p2.y - } - else if (t > 0) { - x += dx * t - y += dy * t - } - } - dx = p.x - x - dy = p.y - y - return dx * dx + dy * dy -} - -function CrossVector2(a: P, b: P) -{ - return a.x * b.y - a.y * b.x -} - -// Ramer-Douglas-Peucker algorithm -function SimplifyDPStep(points: P[], first: number, last: number, sqTolerance: number, simplified: P[], offset: IOffset): void { - let maxSqDist = 0 - let index: number - const fp = points[first] - const lp = points[last] - - for (let i = first + 1; i < last; i++) { - const p = points[i] - const sqDist = GetSqSegDist(p, fp, lp) - if (sqDist > maxSqDist) { - index = i - maxSqDist = sqDist - } - } - - if (maxSqDist > sqTolerance) { - if (index - first > 1) - SimplifyDPStep(points, first, index, sqTolerance, simplified, offset) - simplified.push(points[index]) - if (last - index > 1) - SimplifyDPStep(points, index, last, sqTolerance, simplified, offset) - } - else { - // 记录偏移 - const v = new Vector2(lp.x - fp.x, lp.y - fp.y).normalize() - for (let i = first + 1; i < last; i++) { - const p = points[i] - const offsetDist = -CrossVector2(v, { x: p.x - fp.x, y: p.y - fp.y }) - offset.positiveOffset = Math.max(offset.positiveOffset, offsetDist) - offset.negativeOffset = Math.min(offset.negativeOffset, offsetDist) - } - } -} - -// Ramer-Douglas-Peucker 算法 -export function SimplifyDouglasPeucker(points: P[], sqTolerance: number): [P[], IOffset] { - const last = points.length - 1 - const simplified: P[] = [points[0]] - const offset: IOffset = { negativeOffset: 0, positiveOffset: 0 } - SimplifyDPStep(points, 0, last, sqTolerance, simplified, offset) - simplified.push(points[last]) - return [simplified, offset] -} diff --git a/samples/handleAbility/common/Point.ts b/samples/handleAbility/common/Point.ts deleted file mode 100644 index 87927a5..0000000 --- a/samples/handleAbility/common/Point.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface Point -{ - x: number - y: number -} diff --git a/samples/handleAbility/common/Util.ts b/samples/handleAbility/common/Util.ts deleted file mode 100644 index a42dd3e..0000000 --- a/samples/handleAbility/common/Util.ts +++ /dev/null @@ -1,38 +0,0 @@ -/** 判断两个值是否相等 */ -export function equaln(v1: number, v2: number, fuzz = 1e-5) -{ - return Math.abs(v1 - v2) <= fuzz -} - -/** 修正数组索引号 */ -export function FixIndex(index: number, arr: Array | number) -{ - let count = (Array.isArray(arr)) ? arr.length : arr - if (index < 0) - return count + index - else if (index >= count) - return index - count - else - return index -} - -/** - * 获取数组最大元素的索引号 - * @param compart t2大于t1返回t2 - * @returns 索引 - */ -export function Max(arr: T[], compart: (t1: T, t2: T) => boolean): number -{ - let best: T = arr[0] - let bestIndex = 0 - for (let i = 1; i < arr.length; i++) - { - let t1 = arr[i] - if (compart(best, t1)) - { - best = t1 - bestIndex = i - } - } - return bestIndex -} diff --git a/samples/handleAbility/common/Vector2.ts b/samples/handleAbility/common/Vector2.ts deleted file mode 100644 index e2687d1..0000000 --- a/samples/handleAbility/common/Vector2.ts +++ /dev/null @@ -1,335 +0,0 @@ -import type { Point } from './Point.js' - -/** 二维向量 */ -export class Vector2 -{ - x: number - y: number - readonly isVector2: boolean = true - constructor(x: number = 0, y: number = 0) - { - this.x = x - this.y = y - } - - get width(): number { return this.x } - set width(value: number) { this.x = value } - get height(): number { return this.y } - set height(value: number) { this.y = value } - set(x: number, y: number): Vector2 - { - this.x = x - this.y = y - return this - } - - setScalar(scalar: number): Vector2 - { - this.x = scalar - this.y = scalar - return this - } - - setX(x: number): Vector2 - { - this.x = x - return this - } - - setY(y: number): Vector2 - { - this.y = y - return this - } - - setComponent(index: number, value: number): Vector2 - { - switch (index) - { - case 0: this.x = value; break - case 1: this.y = value; break - default: throw new Error(`index is out of range: ${index}`) - } - return this - } - - getComponent(index: number): number - { - switch (index) - { - case 0: return this.x - case 1: return this.y - default: throw new Error(`index is out of range: ${index}`) - } - } - - clone(): Vector2 - { - return new (this.constructor as any)().copy(this) - } - - copy(v: Vector2): Vector2 - { - this.x = v.x - this.y = v.y - return this - } - - add(v: Point): Vector2 - { - this.x += v.x - this.y += v.y - return this - } - - addScalar(s: number): Vector2 - { - this.x += s - this.y += s - return this - } - - addVectors(a: Vector2, b: Vector2): Vector2 - { - this.x = a.x + b.x - this.y = a.y + b.y - return this - } - - addScaledVector(v: Vector2, s: number): Vector2 - { - this.x += v.x * s - this.y += v.y * s - return this - } - - sub(v: Vector2): Vector2 - { - this.x -= v.x - this.y -= v.y - return this - } - - subScalar(s: number): Vector2 - { - this.x -= s - this.y -= s - return this - } - - subVectors(a: Vector2, b: Vector2): Vector2 - { - this.x = a.x - b.x - this.y = a.y - b.y - return this - } - - multiply(v: Vector2): Vector2 - { - this.x *= v.x - this.y *= v.y - return this - } - - multiplyScalar(scalar: number): Vector2 - { - if (Number.isFinite(scalar)) - { - this.x *= scalar - this.y *= scalar - } else - { - this.x = 0 - this.y = 0 - } - return this - } - - divide(v: Vector2): Vector2 - { - this.x /= v.x - this.y /= v.y - return this - } - - divideScalar(scalar: number): Vector2 - { - return this.multiplyScalar(1 / scalar) - } - - min(v: Point): Vector2 - { - this.x = Math.min(this.x, v.x) - this.y = Math.min(this.y, v.y) - return this - } - - max(v: Point): Vector2 - { - this.x = Math.max(this.x, v.x) - this.y = Math.max(this.y, v.y) - return this - } - - clamp(min: Vector2, max: Vector2): Vector2 - { - // This function assumes min < max, if this assumption isn't true it will not operate correctly - this.x = Math.max(min.x, Math.min(max.x, this.x)) - this.y = Math.max(min.y, Math.min(max.y, this.y)) - return this - } - - private static clampScalar_min = new Vector2() - private static clampScalar_max = new Vector2() - clampScalar(minVal: number, maxVal: number): Vector2 - { - const min: Vector2 = Vector2.clampScalar_min.set(minVal, minVal) - const max: Vector2 = Vector2.clampScalar_max.set(maxVal, maxVal) - return this.clamp(min, max) - } - - clampLength(min: number, max: number): Vector2 - { - const length: number = this.length() - return this.multiplyScalar(Math.max(min, Math.min(max, length)) / length) - } - - floor(): Vector2 - { - this.x = Math.floor(this.x) - this.y = Math.floor(this.y) - return this - } - - ceil(): Vector2 - { - this.x = Math.ceil(this.x) - this.y = Math.ceil(this.y) - return this - } - - round(): Vector2 - { - this.x = Math.round(this.x) - this.y = Math.round(this.y) - return this - } - - roundToZero(): Vector2 - { - this.x = (this.x < 0) ? Math.ceil(this.x) : Math.floor(this.x) - this.y = (this.y < 0) ? Math.ceil(this.y) : Math.floor(this.y) - return this - } - - negate(): Vector2 - { - this.x = -this.x - this.y = -this.y - return this - } - - dot(v: Vector2): number - { - return this.x * v.x + this.y * v.y - } - - lengthSq(): number - { - return this.x * this.x + this.y * this.y - } - - length(): number - { - return Math.sqrt(this.x * this.x + this.y * this.y) - } - - lengthManhattan(): number - { - return Math.abs(this.x) + Math.abs(this.y) - } - - normalize(): Vector2 - { - return this.divideScalar(this.length()) - } - - angle(): number - { - // computes the angle in radians with respect to the positive x-axis - let angle: number = Math.atan2(this.y, this.x) - if (angle < 0) - angle += 2 * Math.PI - return angle - } - - distanceTo(v: Vector2): number - { - return Math.sqrt(this.distanceToSquared(v)) - } - - distanceToSquared(v: Vector2): number - { - const dx: number = this.x - v.x; const dy: number = this.y - v.y - return dx * dx + dy * dy - } - - distanceToManhattan(v: Vector2): number - { - return Math.abs(this.x - v.x) + Math.abs(this.y - v.y) - } - - setLength(length: number): Vector2 - { - return this.multiplyScalar(length / this.length()) - } - - lerp(v: Vector2, alpha: number): Vector2 - { - this.x += (v.x - this.x) * alpha - this.y += (v.y - this.y) * alpha - return this - } - - lerpVectors(v1: Vector2, v2: Vector2, alpha: number): Vector2 - { - return this.subVectors(v2, v1).multiplyScalar(alpha).add(v1) - } - - equals(v: Vector2): boolean - { - return ((v.x === this.x) && (v.y === this.y)) - } - - fromArray(array: Float32Array | number[], offset: number = 0): Vector2 - { - this.x = array[offset] - this.y = array[offset + 1] - return this - } - - toArray(array: Float32Array | number[] = [], offset: number = 0): Float32Array | number[] - { - array[offset] = this.x - array[offset + 1] = this.y - return array - } - - fromAttribute(attribute: any, index: number, offset: number = 0): Vector2 - { - index = index * attribute.itemSize + offset - this.x = attribute.array[index] - this.y = attribute.array[index + 1] - return this - } - - rotateAround(center: Vector2, angle: number): Vector2 - { - const c: number = Math.cos(angle); const s: number = Math.sin(angle) - const x: number = this.x - center.x - const y: number = this.y - center.y - this.x = x * c - y * s + center.x - this.y = x * s + y * c + center.y - return this - } -} diff --git a/samples/handleAbility/common/base/CAD.ts b/samples/handleAbility/common/base/CAD.ts deleted file mode 100644 index 83c40ea..0000000 --- a/samples/handleAbility/common/base/CAD.ts +++ /dev/null @@ -1,1625 +0,0 @@ -export class Vector2d -{ - m_X = 0 - m_Y = 0 - - /** 长度 */ - Length = 0 - /** 角度 */ - Angle = 0 - - constructor(x: number, y: number) - { - this.m_X = x - this.m_Y = y - - this.GetLength() - this.GetAngle() - } - - private GetLength() - { - this.Length = Math.sqrt(this.m_X * this.m_X + this.m_Y * this.m_Y) - } - - // 角度 - private GetAngle() - { - let a = Math.atan2(this.m_Y, this.m_X) - if (a < 0) - a = Math.PI * 2 + a - this.Angle = a - } - - Normal(): Vector2d - { - if (this.Length != 0) - { - let k = 1 / this.Length - this.m_X *= k - this.m_Y *= k - this.Length = 1 - } - return this - } - - static OpDivide(v: Vector2d, c: number): Vector2d - { - return new Vector2d(v.m_X / c, v.m_Y / c) - } - - static OpMultiply(v: Vector2d, c: number): Vector2d - { - return new Vector2d(v.m_X * c, v.m_Y * c) - } - - static OpAdd(v1: Vector2d, v2: Vector2d): Vector2d - { - return new Vector2d(v1.m_X + v2.m_X, v1.m_Y + v2.m_Y) - } - - static OpMultiplyValue(v1: Vector2d, v2: Vector2d): number - { - return v1.m_X * v2.m_X + v1.m_Y * v2.m_Y - } - - /** 点积 */ - DotProduct(v1: Vector2d): number - { - return Vector2d.OpMultiplyValue(this, v1) - } - - /** 叉积 */ - CrossProduct(v: Vector2d): number - { - return this.m_X * v.m_Y - this.m_Y * v.m_X - } - - IsEqual(v: Vector2d, fuzz = 1e-3): boolean - { - return DoubleUtil.EqualX(this.m_X, v.m_X, fuzz) && DoubleUtil.EqualX(this.m_Y, v.m_Y, fuzz) - } - - /** 返回和另外一个向量的夹角 */ - AngleTo(v: Vector2d): number - { - let an = Math.abs(this.Angle - v.Angle) - if (DoubleUtil.EqualX(v.Length, 0, 1e-5) || DoubleUtil.EqualX(this.Length, 0, 1e-5)) - { - return -Math.PI// 随缘给 - } - else if (Math.abs(Math.sin(an)) < 0) - { - return this.Normal().IsEqual(v.Normal()) ? 0 : Math.PI - } - else - { - let p0 = new Point2d(0, 0) - let p1 = Point2d.OpAdd(new Point2d(0, 0), this) - let p2 = Point2d.OpAdd(new Point2d(0, 0), v) - let s = this.sign(Utils.Det(p1, p0, p2)) - if (an > Math.PI) - { - return ((2 * Math.PI) - an) * s - } - else - { - return an * s - } - } - } - - private sign(x: number): number - { - if (x == 0) - { - return 0 - } - else if (x > 0) - { - return -1 - } - else - { - return 1 - } - } -} - -/** CAD 点 */ -export class Point2d -{ - m_X = 0 - m_Y = 0 - - constructor(x: number, y: number) - { - this.m_X = x - this.m_Y = y - } - - DistensTo(pt: Point2d): number - { - return Point2d.OpSubtract(pt, this).Length - } - - Polar(angle: number, distens: number): Point2d - { - let x1 = this.m_X + Math.cos(angle) * distens - let y1 = this.m_Y + Math.sin(angle) * distens - return new Point2d(x1, y1) - } - - Mid(pt: Point2d): Point2d - { - return new Point2d((this.m_X + pt.m_X) * 0.5, (this.m_Y + pt.m_Y) * 0.5) - } - - AsVector(): Vector2d - { - return new Vector2d(this.m_X, this.m_Y) - } - - /** 减以 - */ - static OpSubtract(p1: Point2d, p2: Point2d): Vector2d - { - return new Vector2d(p1.m_X - p2.m_X, p1.m_Y - p2.m_Y) - } - - static OpAdd(p1: Point2d, p2: Vector2d): Point2d - { - return new Point2d(p1.m_X + p2.m_X, p1.m_Y + p2.m_Y) - } -} - -function equaln(v1: number, v2: number, fuzz = 1e-5) -{ - return Math.abs(v1 - v2) <= fuzz -} -function equalp(v1: Point2d, v2: Point2d, fuzz = 1e-5) -{ - return equaln(v1.m_X, v2.m_X, fuzz) && equaln(v1.m_Y, v2.m_Y, fuzz) -} - -/** 二维曲线:直线,圆弧 */ -export abstract class Curve2d -{ - // 求交点 - abstract IntersectWith(cu: Curve2d, retIns: Point2d[]): void - abstract Offset(distens: number): Curve2d - - // 点在线内部 - abstract PtInCurve(pt: Point2d): boolean - abstract ClosePointTo(pt: Point2d): Point2d - - // 获得参数 返回0或1 - abstract GetParametersAt(pt: Point2d): number - - abstract Parse() - - PtOnCurve(p: Point2d): boolean - { - return equalp(p, this.m_StartPoint) || equalp(p, this.m_EndPoint) || this.ParamOnCurve(this.GetParametersAt(p)) - } - - ParamOnCurve(param: number, fuzz = 1e-6): boolean { return !Number.isNaN(param) && param >= -fuzz && param <= 1 + fuzz } - - get EndPoint(): Point2d - { - return this.m_EndPoint - } - - set EndPoint(p: Point2d) - { - this.m_EndPoint = p - try - { - this.Parse() - } catch (error) - { - - } - } - - get StartPoint(): Point2d - { - return this.m_StartPoint - } - - set StartPoint(p: Point2d) - { - this.m_StartPoint = p - try - { - this.Parse() - } catch (error) - { - - } - } - - protected m_StartPoint: Point2d - protected m_EndPoint: Point2d - tagData: number // 特殊数据 异形边 封边值 - tagData2: number // 特殊数据 侧孔数 -} - -/** 直线 */ -export class Line2d extends Curve2d -{ - get toString() - { - return `[${this.m_StartPoint.m_X.toFixed(1)},${this.m_StartPoint.m_Y.toFixed(1)}] [${this.m_EndPoint.m_X.toFixed(1)},${this.m_EndPoint.m_Y.toFixed(1)}]` - } - - constructor(p1: Point2d, p2: Point2d) - { - super() - this.m_StartPoint = p1 - this.m_EndPoint = p2 - this.Parse() - } - - /** 求交点 */ - IntersectWith(cu: Curve2d, retIns: Point2d[]) - { - if (cu instanceof Line2d) - { - let l = cu as Line2d - let dx1 = this.StartPoint.m_X - this.EndPoint.m_X - let dx2 = l.StartPt.m_X - l.EndPt.m_X - let dx3 = l.EndPt.m_X - this.EndPoint.m_X - let dy1 = this.StartPoint.m_Y - this.EndPoint.m_Y - let dy2 = l.StartPt.m_Y - l.EndPt.m_Y - let dy3 = l.EndPt.m_Y - this.EndPoint.m_Y - - let det = (dx2 * dy1) - (dy2 * dx1) - let pt = new Point2d(0, 0) - - if (DoubleUtil.EqualX(det, 0.0, 1e-5)) - { - if (DoubleUtil.EqualX(dx2 * dy3, dy2 * dx3, 1e-5)) - { - if (l.StartPoint.DistensTo(this.EndPoint) < 1e-3) - { - retIns.push(this.EndPoint) - } - } - return - } - - let ratio = ((dx1 * dy3) - (dy1 * dx3)) / det - pt.m_X = (ratio * dx2) + l.EndPt.m_X - pt.m_Y = (ratio * dy2) + l.EndPt.m_Y - retIns.push(pt) - } - else - { - let arc = cu as Arc2d - arc.IntersectWith(this, retIns) - } - } - - /** 偏移 */ - Offset(distens: number): Curve2d - { - let an = Point2d.OpSubtract(this.EndPt, this.StartPt).Angle - Math.PI * 0.5 - return new Line2d(this.StartPt.Polar(an, distens), this.EndPt.Polar(an, distens)) - } - - /** 判断点在线内 */ - PtInCurve(pt: Point2d): boolean - { - // 首先判断平行 - let minX = Math.min(this.m_StartPoint.m_X, this.m_EndPoint.m_X) - let maxX = Math.max(this.m_StartPoint.m_X, this.m_EndPoint.m_X) - - if (DoubleUtil.EqualX(minX, maxX, 1e-3)) - { - let minY = Math.min(this.m_StartPoint.m_Y, this.m_EndPoint.m_Y) - let maxY = Math.max(this.m_StartPoint.m_Y, this.m_EndPoint.m_Y) - return (pt.m_Y >= minY - 1e-4 && pt.m_Y <= maxY + 1e-4) - } - - if (pt.m_X >= minX - 0.0001 && pt.m_X <= maxX + 0.0001) - { - let vec = Point2d.OpSubtract(this.m_EndPoint, this.m_StartPoint)// 标准向量 - let k = vec.m_Y / vec.m_X - return DoubleUtil.EqualX(this.m_StartPoint.m_Y + k * (pt.m_X - this.m_StartPoint.m_X), pt.m_Y, 0.01) - } - else - { - return false - } - } - - ClosePointTo(pt: Point2d): Point2d - { - let an = Point2d.OpSubtract(this.m_EndPoint, this.m_StartPoint).Angle + Math.PI / 2 - let vec = new Point2d(0, 0).Polar(an, 1).AsVector() - let p2 = Point2d.OpAdd(pt, vec) - let line = new Line2d(pt, p2) - let ptLst: Point2d[] = [] - this.IntersectWith(line, ptLst) - return ptLst[0] - } - - Parse() - { - if (this.EndPoint != null) - { - this.m_Length = this.StartPoint.DistensTo(this.EndPoint) - } - } - - GetParametersAt(pt: Point2d): number - { - let nearPt = this.ClosePointTo(pt) - - let vec = Point2d.OpSubtract(nearPt, this.m_StartPoint) - let vec2 = Point2d.OpSubtract(this.EndPoint, this.StartPoint) - - let an = vec.DotProduct(vec2) - - return Math.sign(an) * vec.Length / this.m_Length - } - - get StartPt(): Point2d { return this.StartPoint } - get EndPt(): Point2d { return this.EndPoint } - - m_Length: number - - static New(x0: number, y0: number, x1: number, y1: number): Line2d - { - let p0 = new Point2d(x0, y0) - let p1 = new Point2d(x1, y1) - return new Line2d(p0, p1) - } -} - -/** 圆弧 */ -export class Arc2d extends Curve2d -{ - constructor(p1: Point2d, p2: Point2d, bul: number) - { - super() - this.m_StartPoint = p1 - this.m_EndPoint = p2 - - this.m_Bul = bul - let vec = Point2d.OpSubtract(p2, p1) - let an = vec.Angle - let length = vec.Length - - this.m_Radius = length / Math.sin(2 * Math.atan(bul)) / 2 - this.m_AllAngle = Math.atan(bul) * 4 - let delDis = bul * length / 2 - - let toDis = this.m_Radius - delDis - - an += Math.PI * 0.5 - - this.m_Center = p1.Mid(p2) - this.m_Center = this.m_Center.Polar(an, toDis) - - this.m_StartAngle = Point2d.OpSubtract(this.StartPoint, this.m_Center).Angle - this.m_EndAngle = Point2d.OpSubtract(this.EndPoint, this.m_Center).Angle - - if (this.m_Bul < 0) - this.m_Radius = Math.abs(this.m_Radius) - } - - /** 圆心 */ - m_Center: Point2d - /** 半径 */ - m_Radius: number - /** 起始弧度 */ - m_StartAngle: number - /** 结束弧度 */ - m_EndAngle: number - /** 所有的弧度 */ - m_AllAngle: number - - IntersectWith(cu: Curve2d, retIns: Point2d[]) - { - if (cu instanceof Line2d) - { - let l = cu as Line2d - let a = DoubleUtil.Sqr(l.EndPt.m_X - l.StartPt.m_X) + DoubleUtil.Sqr(l.EndPt.m_Y - l.StartPt.m_Y) - - let b = (2.0) * ((l.EndPt.m_X - l.StartPt.m_X) * (l.StartPt.m_X - this.m_Center.m_X) - + (l.EndPt.m_Y - l.StartPt.m_Y) * (l.StartPt.m_Y - this.m_Center.m_Y)) - - let c = DoubleUtil.Sqr(this.m_Center.m_X) + DoubleUtil.Sqr(this.m_Center.m_Y) - + DoubleUtil.Sqr(l.StartPt.m_X) + DoubleUtil.Sqr(l.StartPt.m_Y) - - (2.0) * (this.m_Center.m_X * l.StartPt.m_X + this.m_Center.m_Y * l.StartPt.m_Y) - DoubleUtil.Sqr(this.m_Radius) - - let det = b * b - (4.0) * a * c - - if (DoubleUtil.EqualX(det, 0.0, 0.1)) - { - let delta = -b / ((2.0) * a) - - let pt = new Point2d(l.StartPt.m_X + delta * (l.EndPt.m_X - l.StartPt.m_X), l.StartPt.m_Y + delta * (l.EndPt.m_Y - l.StartPt.m_Y)) - retIns.push(pt) - return - } - else if (det > (0.0)) - { - let sqrt_det = Math.sqrt(det) - let delta = (-b + sqrt_det) / ((2.0) * a) - let p2 = new Point2d(l.StartPt.m_X + delta * (l.EndPt.m_X - l.StartPt.m_X), l.StartPt.m_Y + delta * (l.EndPt.m_Y - l.StartPt.m_Y)) - - delta = (-b - sqrt_det) / ((2.0) * a) - let p3 = new Point2d(l.StartPt.m_X + delta * (l.EndPt.m_X - l.StartPt.m_X), l.StartPt.m_Y + delta * (l.EndPt.m_Y - l.StartPt.m_Y)) - - retIns.push(p2) - retIns.push(p3) - return - } - } - else if (cu instanceof Arc2d) - { - let arc = cu as (Arc2d) - let dist = arc.m_Center.DistensTo(this.m_Center) - - if (dist < Math.abs(this.m_Radius - cu.m_Radius) - 1e-3 - || dist > (this.m_Radius + cu.m_Radius + 1e-3)) - return - - let dstsqr = dist * dist - let r1sqr = this.m_Radius * this.m_Radius - let r2sqr = arc.m_Radius * arc.m_Radius - - let a = (dstsqr - r2sqr + r1sqr) / (2 * dist) - let h = Math.sqrt(Math.abs(r1sqr - (a * a))) - - let ratio_a = a / dist - let ratio_h = h / dist - - let dx = arc.m_Center.m_X - this.m_Center.m_X - let dy = arc.m_Center.m_Y - this.m_Center.m_Y - - let phix = this.m_Center.m_X + (ratio_a * dx) - let phiy = this.m_Center.m_Y + (ratio_a * dy) - - dx = dx * ratio_h - dy = dy * ratio_h - - let pt = new Point2d(phix + dy, phiy - dx) - let p2 = new Point2d(phix - dy, phiy + dx) - retIns.push(pt) - retIns.push(p2) - } - } - - Offset(distens: number): Curve2d - { - let rn = new Arc2d(new Point2d(0, 0), new Point2d(0, 0), 0) - rn.m_Center = this.m_Center - rn.m_Radius = this.m_Radius - rn.m_StartAngle = this.m_StartAngle - rn.m_EndAngle = this.m_EndAngle - if (this.m_Bul > 0) - rn.m_Radius += distens - else - rn.m_Radius -= distens - rn.Bul = this.m_Bul - rn.ParsePointFormAngle() - return rn - } - - Parse() - { - // 解析角度 - this.ParseAngleFormPoint() - this.ParseAllAngle() - this.ParseBul() - } - - ParseAllAngle() - { - this.m_AllAngle = this.ComputeAnlge(this.m_EndAngle) - } - - ComputeAnlge(endAngle: number) - { - // 顺时针 - if (this.m_Bul < 0) - { - if (this.m_StartAngle > endAngle) - return this.m_StartAngle - endAngle - else // 越过0点绘制圆弧 - return (Math.PI * 2) - (endAngle - this.m_StartAngle) - } - else - { - if (endAngle > this.m_StartAngle) - return endAngle - this.m_StartAngle - else - return (Math.PI * 2) - (this.m_StartAngle - endAngle) - } - } - - ParseBul() - { - this.m_Bul = Math.tan(this.m_AllAngle * 0.25) * (this.m_Bul < 0 ? -1 : 1) - } - - ParsePointFormAngle() - { - this.m_StartPoint = this.m_Center.Polar(this.m_StartAngle, this.m_Radius) - this.m_EndPoint = this.m_Center.Polar(this.m_EndAngle, this.m_Radius) - } - - ParseAngleFormPoint() - { - this.m_StartAngle = Point2d.OpSubtract(this.StartPoint, this.m_Center).Angle - this.m_EndAngle = Point2d.OpSubtract(this.EndPoint, this.m_Center).Angle - } - - PtInCurve(pt: Point2d): boolean - { - let param = this.GetParametersAt(pt) - return param > -1e-3 && param < 1.0001 - } - - ClosePointTo(pt: Point2d): Point2d - { - return null - } - - GetParametersAt(pt: Point2d): number - { - let vec = Point2d.OpSubtract(pt, this.m_Center) - let an = vec.Angle - this.ParseAllAngle() - - // 如果以pt为终点,那么所有的角度为 - let ptAllAn = this.ComputeAnlge(an) - let allAn = this.m_AllAngle - - // 减去圆弧角度,剩余角度的一半 - let surplusAngleHalf = Math.PI - allAn / 2 - - if (ptAllAn > allAn + surplusAngleHalf)// 返回负数 - return ((ptAllAn - allAn) - (surplusAngleHalf * 2)) / allAn - else// 返回正数 - return ptAllAn / allAn - } - - GetAngleAtParam(param: number) - { - return this.clampRad(this.m_StartAngle + param * this.m_AllAngle) - } - - private clampRad(an: number) - { - an = an % (Math.PI * 2) - if (an < 0) - an += Math.PI * 2 - return an - } - - /** 凸度. */ - m_Bul: number - get Bul() { return this.m_Bul } - set Bul(v: number) { this.m_Bul = v } - - static New(x0: number, y0: number, x1: number, y1: number, bul: number): Arc2d - { - return new Arc2d(new Point2d(x0, y0), new Point2d(x1, y1), bul) - } -} -/** 圆弧 */ -export class Arc2d_new extends Curve2d -{ - constructor(p1: Point2d, p2: Point2d, bul: number) - { - super() - this.m_StartPoint = p1 - this.m_EndPoint = p2 - - this.m_Bul = bul - let vec = Point2d.OpSubtract(p2, p1) - let an = vec.Angle - let length = vec.Length - - this.m_Radius = length / Math.sin(2 * Math.atan(bul)) / 2 - this.m_AllAngle = Math.atan(bul) * 4 - let delDis = bul * length / 2 - - let toDis = this.m_Radius - delDis - - an += Math.PI * 0.5 - - this.m_Center = p1.Mid(p2) - this.m_Center = this.m_Center.Polar(an, toDis) - - this.m_StartAngle = Point2d.OpSubtract(this.StartPoint, this.m_Center).Angle - this.m_EndAngle = Point2d.OpSubtract(this.EndPoint, this.m_Center).Angle - - if (this.m_Bul < 0) - this.m_Radius = Math.abs(this.m_Radius) - } - - /** 圆心 */ - m_Center: Point2d - /** 半径 */ - m_Radius: number - /** 起始弧度 */ - m_StartAngle: number - /** 结束弧度 */ - m_EndAngle: number - /** 所有的弧度 */ - m_AllAngle: number - - IntersectWith(cu: Curve2d, retIns: Point2d[]) - { - if (cu instanceof Line2d) - { - let l = cu as Line2d - let a = DoubleUtil.Sqr(l.EndPt.m_X - l.StartPt.m_X) + DoubleUtil.Sqr(l.EndPt.m_Y - l.StartPt.m_Y) - - let b = (2.0) * ((l.EndPt.m_X - l.StartPt.m_X) * (l.StartPt.m_X - this.m_Center.m_X) - + (l.EndPt.m_Y - l.StartPt.m_Y) * (l.StartPt.m_Y - this.m_Center.m_Y)) - - let c = DoubleUtil.Sqr(this.m_Center.m_X) + DoubleUtil.Sqr(this.m_Center.m_Y) - + DoubleUtil.Sqr(l.StartPt.m_X) + DoubleUtil.Sqr(l.StartPt.m_Y) - - (2.0) * (this.m_Center.m_X * l.StartPt.m_X + this.m_Center.m_Y * l.StartPt.m_Y) - DoubleUtil.Sqr(this.m_Radius) - - let det = b * b - (4.0) * a * c - - if (DoubleUtil.EqualX(det, 0.0, 0.1)) - { - let delta = -b / ((2.0) * a) - - let pt = new Point2d(l.StartPt.m_X + delta * (l.EndPt.m_X - l.StartPt.m_X), l.StartPt.m_Y + delta * (l.EndPt.m_Y - l.StartPt.m_Y)) - retIns.push(pt) - return - } - else if (det > (0.0)) - { - let sqrt_det = Math.sqrt(det) - let delta = (-b + sqrt_det) / ((2.0) * a) - let p2 = new Point2d(l.StartPt.m_X + delta * (l.EndPt.m_X - l.StartPt.m_X), l.StartPt.m_Y + delta * (l.EndPt.m_Y - l.StartPt.m_Y)) - - delta = (-b - sqrt_det) / ((2.0) * a) - let p3 = new Point2d(l.StartPt.m_X + delta * (l.EndPt.m_X - l.StartPt.m_X), l.StartPt.m_Y + delta * (l.EndPt.m_Y - l.StartPt.m_Y)) - - retIns.push(p2) - retIns.push(p3) - return - } - } - else if (cu instanceof Arc2d) - { - let arc = cu as (Arc2d) - let dist = arc.m_Center.DistensTo(this.m_Center) - - if (dist < Math.abs(this.m_Radius - cu.m_Radius) - 1e-3 - || dist > (this.m_Radius + cu.m_Radius + 1e-3)) - return - - let dstsqr = dist * dist - let r1sqr = this.m_Radius * this.m_Radius - let r2sqr = arc.m_Radius * arc.m_Radius - - let a = (dstsqr - r2sqr + r1sqr) / (2 * dist) - let h = Math.sqrt(Math.abs(r1sqr - (a * a))) - - let ratio_a = a / dist - let ratio_h = h / dist - - let dx = arc.m_Center.m_X - this.m_Center.m_X - let dy = arc.m_Center.m_Y - this.m_Center.m_Y - - let phix = this.m_Center.m_X + (ratio_a * dx) - let phiy = this.m_Center.m_Y + (ratio_a * dy) - - dx = dx * ratio_h - dy = dy * ratio_h - - let pt = new Point2d(phix + dy, phiy - dx) - let p2 = new Point2d(phix - dy, phiy + dx) - retIns.push(pt) - retIns.push(p2) - } - } - - Offset(distens: number): Curve2d - { - let rn = new Arc2d(new Point2d(0, 0), new Point2d(0, 0), 0) - rn.m_Center = this.m_Center - rn.m_Radius = this.m_Radius - rn.m_StartAngle = this.m_StartAngle - rn.m_EndAngle = this.m_EndAngle - if (this.m_Bul > 0) - rn.m_Radius += distens - else - rn.m_Radius -= distens - rn.Bul = this.m_Bul - rn.ParsePointFormAngle() - return rn - } - - Parse() - { - // 解析角度 - this.ParseAngleFormPoint() - this.ParseAllAngle() - this.ParseBul() - } - - ParseAllAngle() - { - this.m_AllAngle = this.ComputeAnlge(this.m_EndAngle) - } - - ComputeAnlge(endAngle: number) - { - // 顺时针 - if (this.m_Bul < 0) - { - if (this.m_StartAngle > endAngle) - return this.m_StartAngle - endAngle - else // 越过0点绘制圆弧 - return (Math.PI * 2) - (endAngle - this.m_StartAngle) - } - else - { - if (endAngle > this.m_StartAngle) - return endAngle - this.m_StartAngle - else - return (Math.PI * 2) - (this.m_StartAngle - endAngle) - } - } - - ParseBul() - { - this.m_Bul = Math.tan(this.m_AllAngle * 0.25) * (this.m_Bul < 0 ? -1 : 1) - } - - ParsePointFormAngle() - { - this.m_StartPoint = this.m_Center.Polar(this.m_StartAngle, this.m_Radius) - this.m_EndPoint = this.m_Center.Polar(this.m_EndAngle, this.m_Radius) - } - - ParseAngleFormPoint() - { - this.m_StartAngle = Point2d.OpSubtract(this.StartPoint, this.m_Center).Angle - this.m_EndAngle = Point2d.OpSubtract(this.EndPoint, this.m_Center).Angle - } - - PtInCurve(pt: Point2d): boolean - { - let param = this.GetParametersAt(pt) - return param > -1e-3 && param < 1.0001 - } - - ClosePointTo(pt: Point2d): Point2d - { - return null - } - - GetParametersAt(pt: Point2d): number - { - let vec = Point2d.OpSubtract(pt, this.m_Center) - let an = vec.Angle - this.ParseAllAngle() - - // 如果以pt为终点,那么所有的角度为 - let ptAllAn = this.ComputeAnlge(an) - let allAn = this.m_AllAngle - - // 减去圆弧角度,剩余角度的一半 - let surplusAngleHalf = Math.PI - allAn / 2 - - if (ptAllAn > allAn + surplusAngleHalf)// 返回负数 - return ((ptAllAn - allAn) - (surplusAngleHalf * 2)) / allAn - else// 返回正数 - return ptAllAn / allAn - } - - GetAngleAtParam(param: number) - { - return this.clampRad(this.m_StartAngle + param * this.m_AllAngle) - } - - private clampRad(an: number) - { - an = an % (Math.PI * 2) - if (an < 0) - an += Math.PI * 2 - return an - } - - /** 凸度. */ - m_Bul: number - get Bul() { return this.m_Bul } - set Bul(v: number) { this.m_Bul = v } - - static New(x0: number, y0: number, x1: number, y1: number, bul: number): Arc2d - { - return new Arc2d(new Point2d(x0, y0), new Point2d(x1, y1), bul) - } -} -function EntityEncode(c: Curve2d) -{ - if (c instanceof Line2d) - return 1 - else return 2 -} -function EntityEncode2(c1: Curve2d, c2: Curve2d) -{ - return EntityEncode(c1) & EntityEncode(c2) -} - -/** CAD 运算库 */ -export class Utils -{ - static Intersec(e1: Curve2d, e2: Curve2d, oldE1: Curve2d): Point2d - { - if (e1.EndPoint.DistensTo(e2.StartPoint) < 1e-2) - { - return e1.EndPoint - } - let ptsIns: Point2d[] = [] - e1.IntersectWith(e2, ptsIns) - if (ptsIns.length == 1) - { - return ptsIns[0] - } - else if (ptsIns.length == 2) - { - // 求一个最近的点. - let pt = oldE1.EndPoint - let d1 = pt.DistensTo(ptsIns[0]) - let d2 = pt.DistensTo(ptsIns[1]) - return d1 < d2 ? ptsIns[0] : ptsIns[1] - } - else // 0点 - { - return null - } - } - - /** 曲线偏移 */ - - static offsetPoints(points, offsetDistens: number): any[] - { - let ens: Curve2d[] = [] - for (let i = 0; i < points.length; i++) - { - let j = i + 1 - if (j == points.length) - j = 0 - - let line = new Line2d(new Point2d(points[i].x, points[i].y), new Point2d(points[j].x, points[j].y)) - if (line.m_Length == 0) - continue - ens.push(line) - } - - let ens2 = Utils.OffsetCurveList(ens, offsetDistens) - - let newPs = [] - for (let c of ens2) - { - newPs.push({ x: c.StartPoint.m_X, y: c.StartPoint.m_Y }) - } - return newPs - } - - // 1.曲线外偏移. - //* 2.曲线尝试首尾相连 - //* ->如果两条不相连,导致曲线连接失败,将添加圆弧过度 - //* - //* 2017-11-17对曲线相连算法进行修改. - //* 现在会先求出连接点,然后在重新进行曲线连接,避免连接点出错. 参见#118 - static OffsetCurveList(ens: Curve2d[], offsetDistens: number): Curve2d[] - { - // 只处理偏移的曲线 - let offEns: Curve2d[] = [] - - ens = ens.filter(e => e.StartPoint.DistensTo(e.EndPoint) > 0.05) - for (const item of ens) - { - offEns.push(item.Offset(offsetDistens)) - } - // 处理偏移 并且对交点进行处理 - let offEns2: Curve2d[] = [] - let linkPts: Point2d[] = [] - - // 计算链接点,如果有必要会新增圆弧 - for (let i = 0; i < offEns.length; i++) - { - let index2 = i + 1 == offEns.length ? 0 : i + 1 - - let e1 = offEns[i] - let e2 = offEns[index2] - - offEns2.push(offEns[i]) - - let iPts: Point2d[] = [] - e1.IntersectWith(e2, iPts) - let tPts = iPts.filter(p => e1.PtOnCurve(p) && e2.PtOnCurve(p)) - - let code = EntityEncode2(e1, e2) - if (code === 1) - { - if (tPts.length > 0) - linkPts.push(tPts[0])// 直接连接 - else - { - let refP = ens[i].EndPoint - let distSq = iPts[0].DistensTo(refP) - if (distSq > offsetDistens ** 2 * 2.1) // 补圆弧 - { - let arc = new Arc2d(e1.EndPoint, e2.StartPoint, Math.sign(offsetDistens)) - arc.m_Center = ens[i].EndPoint - arc.m_Radius = offsetDistens// 半径 - - linkPts.push(e1.EndPoint) - linkPts.push(e2.StartPoint) - offEns2.push(arc)// 添加圆弧. - } - else - linkPts.push(iPts[0]) - } - } - else if ( - code === 2 - && ( - equalp((e1).m_Center, (e2).m_Center, 0.1) // 都是圆弧,且同心圆(由于精度丢失,这里我们给0.01的容差) - || equalp(e1.EndPoint, e2.StartPoint, 0.1)) - ) - linkPts.push(e1.EndPoint) - else - { - function SelectNearP(pts: Point2d[], refPt: Point2d): Point2d - { - if (pts.length > 1) - { - let dist1 = refPt.DistensTo(pts[0]) - let dist2 = refPt.DistensTo(pts[1]) - return dist1 <= dist2 ? pts[0] : pts[1] - } - return pts[0] - } - - let refP = ens[i].EndPoint - if (tPts.length > 0) - linkPts.push(SelectNearP(iPts, refP))// 直接连接 - else - { - let arc = new Arc2d(e1.EndPoint, e2.StartPoint, Math.sign(offsetDistens)) - arc.m_Center = ens[i].EndPoint - arc.m_Radius = offsetDistens// 半径 - - linkPts.push(e1.EndPoint) - linkPts.push(e2.StartPoint) - offEns2.push(arc)// 添加圆弧. - } - } - } - - // 更新链接点位置 - for (let i = 0; i < offEns2.length; i++) - { - offEns2[i].EndPoint = linkPts[i] - let nextIndex = i == offEns2.length - 1 ? 0 : i + 1 - offEns2[nextIndex].StartPoint = linkPts[i] - } - - // 测试数据 - // TestPolyline([ens, offEns2]) - - return offEns2 - } - - /** //自交曲线优化 去除自交部分. */ - static RemoveSelfIntersect(cus: Curve2d[]): Curve2d[] - { - let res = new Array() - let cout = cus.length - for (let i = 0; i < cout; i++) - { - let cu = cus[i] - res.push(cu) - for (let j = cout - 2; j > i + 1; j--) - { - let cu2 = cus[j] - - let pts = new Array() - cu.IntersectWith(cu2, pts) - - // - if (pts.length == 0) - { - continue - } - if (pts.length == 2) - { - if (cu instanceof Line2d) - { - if (cu.GetParametersAt(pts[0]) > cu.GetParametersAt(pts[1])) - { - pts[0] = pts[1] - } - } - else if (cu instanceof Arc2d) - { - // 使用上一条线. 因为我们保证它和上一条线是有一个交点的 - - let arc = cu as Arc2d - - // last cu - let lastIndex = i - 1 - if (i == 0) - lastIndex = cout - 1 - - let lastCu = cus[lastIndex] - - let insPts = new Array() - lastCu.IntersectWith(cu, insPts) - - for (let insP of insPts) - { - let p1 = arc.GetParametersAt(insP) - let p2 = arc.GetParametersAt(insP) - // 从起点圆弧开始 - if (insP.DistensTo(cu.StartPoint) < 1e-3) - { - if (p1 > p2) - { - pts[0] = pts[1] - } - break - } - // 从终点圆弧开始. - else if (insP.DistensTo(cu.EndPoint) < 1e-3) - { - if (p1 < p2) - { - pts[0] = pts[1] - } - break - } - } - } - } - - if (cu.PtInCurve(pts[0]) && cu2.PtInCurve(pts[0])) - { - Utils.changeP(cus, cu, i, -1, pts[0]) - Utils.changeP(cus, cu, j, 1, pts[0]) - - i = j - 1 - break - } - } - } - - Utils.RemoveZeroCurve(res) - return res - } - - static changeP(cus: Curve2d[], cu: Curve2d, index: number, next: number, _pt: Point2d) - { - let cout = cus.length - let lastIndex = index + next - - let _cu = cus[index] - if (lastIndex == -1) - lastIndex = cout - 1 - else if (lastIndex == cout) - lastIndex = 0 - - let lastCu = cus[lastIndex] - - let insPts = new Array() - lastCu.IntersectWith(_cu, insPts) - - for (const insP of insPts) - { - if (insP.DistensTo(_cu.StartPoint) < 1e-3) - { - _cu.EndPoint = _pt - break - } - else if (insP.DistensTo(_cu.EndPoint) < 1e-3) - { - _cu.StartPoint = _pt - break - } - } - if (cu instanceof Arc2d) - { - cu.Parse() - } - } - - static RemoveZeroCurve(cus: Curve2d[]) - { - // remove zero length curve - /* - cus.RemoveAll((Curve2d o) => - { - if (o is Line2d) - { - return ((Line2d)o).m_Length < 1e-3; - } - else if (o is Arc2d) - { - return ((Arc2d)o).m_AllAngle < 1e-3; - } - return false; - }); - */ - - let length = cus.length - let isZero = false - for (let i = length - 1; i >= 0; i--) - { - let o = cus[i] - - isZero = false - if (o instanceof Line2d) - { - let line = o as Line2d - isZero = line.m_Length < 1e-3 - } - else if (o instanceof Arc2d) - { - let arc = o as Arc2d - isZero = arc.m_AllAngle < 1e-3 - } - - if (isZero) - { - cus.splice(i, 1) - } - } - } - - /** 曲线倒角 */ - static FilletCurveList(culist: Curve2d[], offsetDistens: number): Curve2d[] - { - /* - let rn = new List(); - let len = cuList.Count; - for (int i = 0; i < len; i++) - { - let en = cuList[i]; - let index =i==len-1 ? 0 : i + 1; - rn.Add(en); - if (en is Line2d && cuList[index] is Line2d) - { - let l1 = en as Line2d; - let l2 = cuList[index] as Line2d; - if (l1.m_Length < offsetDistens || l2.m_Length < offsetDistens - || (l1.EndPoint-l1.StartPoint).CrossProduct(l2.EndPoint-l2.StartPoint) <1e-3 - ) - { - continue; - } - - let tempEn1 = en.Offset(-offsetDistens) as Line2d; - let tempEn2 = cuList[index].Offset(-offsetDistens)as Line2d; - - let pts = new List(); - tempEn1.IntersectWith(tempEn2, pts); - if (pts.Count>0 && tempEn1.PtInCurve(pts.First())) - { - let pt = pts.First(); - //求交点. - en.EndPoint= en.ClosePointTo(pt); - let en2 = cuList[index]; - en2.StartPoint = en2.ClosePointTo(pt); - - let arc2d = new Arc2d(en.EndPoint, en2.StartPoint, 1);//凸圆弧 - arc2d.m_Center = pt; - arc2d.m_Radius = pt.DistensTo(en.EndPoint); - arc2d.Parse();//解析凸度 角度 - rn.Add(arc2d); - } - } - } - return rn; - */ - - let rn = new Array() - let len = culist.length - for (let i = 0; i < len; i++) - { - let en = culist[i] - let index = i == len - 1 ? 0 : i + 1 - rn.push(en) - - if (en instanceof Line2d && culist[index] instanceof Line2d) - { - let l1 = en as Line2d - let l2 = culist[index] as Line2d - if (l1.m_Length < offsetDistens || l2.m_Length < offsetDistens - || (Point2d.OpSubtract(l1.EndPoint, l1.StartPoint)).CrossProduct(Point2d.OpSubtract(l2.EndPoint, l2.StartPoint)) < 1e-3 - ) - { - continue - } - - let tempEn1 = en.Offset(-offsetDistens) as Line2d - let tempEn2 = culist[index].Offset(-offsetDistens) as Line2d - - let pts = new Array() - tempEn1.IntersectWith(tempEn2, pts) - if (pts.length > 0 && tempEn1.PtInCurve(pts[0])) - { - let pt = pts[0] - // 求交点. - en.EndPoint = en.ClosePointTo(pt) - let en2 = culist[index] - en2.StartPoint = en2.ClosePointTo(pt) - - let arc2d = new Arc2d(en.EndPoint, en2.StartPoint, 1)// 凸圆弧 - arc2d.m_Center = pt - arc2d.m_Radius = pt.DistensTo(en.EndPoint) - arc2d.Parse()// 解析凸度 角度 - rn.push(arc2d) - } - } - } - return rn - } - - /** 圆弧细分 如果大于90度则分割 */ - static SplitCurveListArc(cuList: Curve2d[]): Curve2d[] - { - /* C# 代码 - let rnList = new List();//返回的曲线表 - foreach (let cu in cuList) - { - if (cu is Arc2d) - { - let arc = cu as Arc2d; - arc.Parse();//解析圆弧的凸度 角度 - if (arc.m_AllAngle > Math.PI * 0.5) - { - int cout =(int)( arc.m_AllAngle / (Math.PI * 0.5)) + 1; - let an = arc.m_AllAngle / cout; - let startAn = arc.m_StartAngle; - for (int i = 0; i < cout; i++) - { - let arcNew = new Arc2d(arc.StartPoint, arc.EndPoint, 0); - arcNew.m_Radius = arc.m_Radius; - arcNew.m_Center = arc.m_Center; - arcNew.m_StartAngle = startAn; - arcNew.m_EndAngle = arcNew.m_StartAngle + an; - startAn = arcNew.m_EndAngle; - rnList.Add(arcNew); - } - } - else - { - rnList.Add(cu); - } - } - else - { - rnList.Add(cu); - } - } - return rnList; - - */ - let rnList = new Array()// 返回的曲线表 - for (let cu of cuList) - { - if (cu instanceof Arc2d) - { - let arc = cu as Arc2d - arc.Parse()// 解析圆弧的凸度 角度 - if (arc.m_AllAngle > Math.PI * 0.5) - { - let cout = arc.m_AllAngle / (Math.PI * 0.5) + 1 - let an = arc.m_AllAngle / cout - let startAn = arc.m_StartAngle - for (let i = 0; i < cout; i++) - { - let arcNew = new Arc2d(arc.StartPoint, arc.EndPoint, 0) - arcNew.m_Radius = arc.m_Radius - arcNew.m_Center = arc.m_Center - arcNew.m_StartAngle = startAn - arcNew.m_EndAngle = arcNew.m_StartAngle + an - startAn = arcNew.m_EndAngle - rnList.push(arcNew) - } - } - else - { - rnList.push(cu) - } - } - else - { - rnList.push(cu) - } - } - return rnList - } - - // 三点面积 - static Det(p1: Point2d, p2: Point2d, p3: Point2d): number - { - return this.Det2(p1.AsVector(), p2.AsVector(), p3.AsVector()) - } - - // 三点面积 - static Det2(p1: Vector2d, p2: Vector2d, p3: Vector2d): number - { - return p1.CrossProduct(p2) + p2.CrossProduct(p3) + p3.CrossProduct(p1) - } - - // - static AngleForm3Pt(pSrc: Point2d, p1: Point2d, p2: Point2d): number - { - /* - double angle = 0.0f; // 夹角 - - let vec1 = p1 - pSrc; - let vec2 = p2 - pSrc; - - double productValue = vec1 * vec2; - double cosValue = productValue / (vec1.Length * vec2.Length); // 余弦公式 - - // acos的输入参数范围必须在[-1, 1]之间,否则会"domain error" - // 对输入参数作校验和处理 - if (cosValue < -1 && cosValue > -2) - cosValue = -1; - else if (cosValue > 1 && cosValue < 2) - cosValue = 1; - - // acos返回的是弧度值,转换为角度值 - angle = Math.Acos(cosValue) * 180 / Math.PI; - return angle; - */ - let angle = 0.0 // 夹角 - - let vec1 = Point2d.OpSubtract(p1, pSrc) - let vec2 = Point2d.OpSubtract(p2, pSrc) - - let productValue = Vector2d.OpMultiplyValue(vec1, vec2) - let cosValue = productValue / (vec1.Length * vec2.Length) // 余弦公式 - - // acos的输入参数范围必须在[-1, 1]之间,否则会"domain error" - // 对输入参数作校验和处理 - if (cosValue < -1 && cosValue > -2) - cosValue = -1 - else if (cosValue > 1 && cosValue < 2) - cosValue = 1 - - // acos返回的是弧度值,转换为角度值 - angle = Math.acos(cosValue) * 180 / Math.PI - return angle - } -} - -export class DoubleUtil -{ - static EqualX(v1: number, v2: number, fuzz: number): boolean - { - return (Math.abs(v1 - v2) < fuzz) - } - - static Sqr(v: number): number - { - return v * v - } -} - -export class CADExt -{ - static GetX(arc: Curve2d): number - { - return Math.min(arc.StartPoint.m_X, arc.EndPoint.m_X) - } - - static GetY(arc: Curve2d): number - { - return Math.min(arc.StartPoint.m_Y, arc.EndPoint.m_Y) - } - - static GetWidth(arc: Curve2d): number - { - return Math.abs(arc.StartPoint.m_X - arc.EndPoint.m_X) - } - - static GetHeight(arc: Curve2d): number - { - return Math.abs(arc.StartPoint.m_Y - arc.EndPoint.m_Y) - } - - static GetRadius(p1: Point2d, p2: Point2d, bul: number): number - { - // let arc = new Arc2d(p1, p2, bul); - // return arc.m_Radius; - // this.m_Radius = length / Math.sin(2 * Math.atan(bul)) / 2; - return CADExt.getR(p1.m_X, p1.m_Y, p2.m_X, p2.m_Y, bul) - } - - static getR(x1: number, y1: number, x2: number, y2: number, bul: number): number - { - let length = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)) - return length / Math.sin(2 * Math.atan(bul)) / 2 - } - - /** 圆弧分割成count段 */ - static SplitArc(arc: Arc2d, count: number): Arc2d[] - { - let list: Arc2d[] - list = [] - - let an = arc.m_AllAngle / count - let an_0 = arc.m_StartAngle - for (let i = 0; i < count; i++) - { - let arcNew = new Arc2d(arc.StartPoint, arc.EndPoint, 0) - arcNew.m_Radius = arc.m_Radius - arcNew.m_Center = arc.m_Center - arcNew.m_StartAngle = an_0 - arcNew.m_EndAngle = arcNew.m_StartAngle + an - an_0 = arcNew.m_EndAngle - arcNew.ParsePointFormAngle() - - list.push(arcNew) - } - return list - } - - static SplitArcByCell(ar: Arc2d, cellWidth: number): any[] - { - // 弧长 - let fullLenth = Math.abs(ar.m_Radius * (ar.m_EndAngle - ar.m_StartAngle)) - let count = fullLenth / cellWidth - if (count < 2) - count = 2 - let childs = CADExt.SplitArc(ar, count) - let pts = [] - for (let c of childs) - { - pts.push({ x: c.StartPoint.m_X, y: c.StartPoint.m_Y }) - } - pts.push({ x: ar.EndPoint.m_X, y: ar.EndPoint.m_Y }) - return pts - } - - /** 根据两点,深的弧度 中间的n个点 */ - static getCurvePoints(x1: number, y1: number, x2: number, y2: number, d: number, num: number): any - { - // atan(h/(L/2)) * 4 h: - let dis = 0.5 * Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)) - let mul = d / dis - let arc = new Arc2d(new Point2d(x1, y1), new Point2d(x2, y2), mul) - - let arc_list = CADExt.SplitArc(arc, num - 1) - let points = [] - for (let li of arc_list) - { - points.push({ x: li.StartPoint.m_X, y: li.StartPoint.m_Y }) - } - points.push({ x: x2, y: y2 }) - return points - } - - /** 求弧长 */ - static getLength(arc: Arc2d): number - { - return arc.m_Radius * Math.abs(arc.m_AllAngle) - } - - /** 按固定线长分割圆弧 */ - static getPointsFromCurve(x1: number, y1: number, x2: number, y2: number, bul: number, dis: number) - { - let arc = new Arc2d(new Point2d(x1, y1), new Point2d(x2, y2), bul) - let length = this.getLength(arc) - let count = Math.max(4, Math.ceil(length / dis)) - let arc_list = CADExt.SplitArc(arc, count) - let points = [] - for (let li of arc_list) - { - points.push({ x: li.StartPoint.m_X, y: li.StartPoint.m_Y }) - } - points.push({ x: x2, y: y2 }) - return points - } - - /** 返回弧形中心点 (不是圆心点) */ - static getCenterPoint(arc: Arc2d): Point2d - { - let arcNew = new Arc2d(arc.StartPoint, arc.EndPoint, 0) - arcNew.m_Radius = arc.m_Radius - arcNew.m_Center = arc.m_Center - arcNew.m_StartAngle = arc.m_StartAngle - arcNew.m_EndAngle = arc.m_StartAngle + arc.m_AllAngle / 2 - arcNew.ParsePointFormAngle() - return arcNew.EndPoint - } - - /** 获得第3点到前2点的距离差 */ - static getDisOff(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number): number - { - let dis31 = Math.sqrt((x3 - x1) * (x3 - x1) + (y3 - y1) * (y3 - y1)) - let dis32 = Math.sqrt((x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2)) - let dis12 = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)) - return dis31 + dis32 - dis12 - } -} -function TestPolyline(offEnsS: Curve2d[][]) -{ - let str = `[${offEnsS.length}` - for (let i = 0; i < offEnsS.length; i++) - { - let offEns = offEnsS[i] - let linedString = `${offEns.length},` - for (let cu of offEns) - { - let bul = (cu instanceof Arc2d) ? cu.m_Bul : 0 - linedString += `[${cu.StartPoint.m_X},${cu.StartPoint.m_Y}],${bul},` - } - str += `,"Polyline",8,2,116,false,1,${7 + i % 2},0,[1,0,0,0,0,1,0,0,0,0,1,0,${Math.floor(i / 2) * 1000},0,0,1],0,0,true,[1,0,0,0,0,1,0,0,0,0,1,0,3000,0,0,1],0,2,${linedString}true` - } - str += ']' - console.log(str) - copyTextToClipboard(str) -} - -let DebugCurves: (Curve2d[])[] = [] -export function CADDebugInit() -{ - DebugCurves = [] -} - -export function CADCopyPolylines() -{ - TestPolyline(DebugCurves) - DebugCurves = [] -} - -function fallbackCopyTextToClipboard(text: string) -{ - let textArea = document.createElement('textarea') - textArea.value = text - document.body.appendChild(textArea) - textArea.focus() - textArea.select() - - try - { - let successful = document.execCommand('copy') - } catch (err) - { - } - document.body.removeChild(textArea) -} -export async function copyTextToClipboard(text: string) -{ - if (!navigator.clipboard) - { - fallbackCopyTextToClipboard(text) - return - } - return await navigator.clipboard.writeText(text) -} - -// ref: https://stackoverflow.com/questions/400212/how-do-i-copy-to-the-clipboard-in-javascript - -/** - * 读取剪切板的字符串 - */ -export async function readClipboardText() -{ - if (navigator.clipboard) - return await navigator.clipboard.readText() - return '' -} diff --git a/samples/handleAbility/common/base/StringFormat.ts b/samples/handleAbility/common/base/StringFormat.ts deleted file mode 100644 index 6ed1616..0000000 --- a/samples/handleAbility/common/base/StringFormat.ts +++ /dev/null @@ -1,126 +0,0 @@ -export class StringFormat -{ - /** - * 对Date的扩展,将 Date 转化为指定格式的String - * 月(M)、日(d)、12小时(h)、24小时(H)、分(m)、秒(s)、周(E)、季度(q) 可以用 1-2 个占位符 - * 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字) - * eg: - * (new Date()).pattern("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 - * (new Date()).pattern("yyyy-MM-dd E HH:mm:ss") ==> 2009-03-10 二 20:09:04 - * (new Date()).pattern("yyyy-MM-dd EE hh:mm:ss") ==> 2009-03-10 周二 08:09:04 - * (new Date()).pattern("yyyy-MM-dd EEE hh:mm:ss") ==> 2009-03-10 星期二 08:09:04 - * (new Date()).pattern("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18 - */ - static Date(date: Date, fmt): string - { - let o = { - 'M+': date.getMonth() + 1, // 月份 - 'd+': date.getDate(), // 日 - 'h+': date.getHours() % 12 == 0 ? 12 : date.getHours() % 12, // 小时 - 'H+': date.getHours(), // 小时 - 'm+': date.getMinutes(), // 分 - 's+': date.getSeconds(), // 秒 - 'q+': Math.floor((date.getMonth() + 3) / 3), // 季度 - 'S': date.getMilliseconds(), // 毫秒 - } - let week = { - 0: '/u65e5', - 1: '/u4e00', - 2: '/u4e8c', - 3: '/u4e09', - 4: '/u56db', - 5: '/u4e94', - 6: '/u516d', - } - if (/(y+)/.test(fmt)) - { - fmt = fmt.replace(RegExp.$1, (`${date.getFullYear()}`).substr(4 - RegExp.$1.length)) - } - if (/(E+)/.test(fmt)) - { - fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? '/u661f/u671f' : '/u5468') : '') + week[`${date.getDay()}`]) - } - for (let k in o) - { - if (new RegExp(`(${k})`).test(fmt)) - { - fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : ((`00${o[k]}`).substr((`${o[k]}`).length))) - } - } - return fmt - } - - /** 返回数字的固定小数点 123.00 */ - static number(value: number, bit: number): string - { - return value?.toFixed(bit).toString() - } - - static toFixed(value: number, bit: number = 3): number - { - let tt = 10 ** bit - return Math.round(value * tt) / tt - } - - static filterIllegalChar(str: string): string - { - // var pattern = new RegExp("[/:*?'<>|\\]"); - // var rs = ""; - // for (var i = 0; i < str.length; i++) - // { - // rs = rs + str.substr(i, 1).replace(pattern, ''); - // } - // return rs; - - let rt = str.replace(/\\/g, '').replace(/\:/g, '').replace(/\*/g, '').replace(/\?/g, '').replace(/\"/g, '').replace(/\/g, '').replace(/\|/g, '').replace(/\'/g, '') - return rt - } - - /** 文本格式化 */ - static format(str: string, ...args: any[]): string - { - let data = args - let tmpl = str - for (const item of tmpl.matchAll(/\{(.+?)\}/g)) - { - let parts = item[1].split(',').map(i => i.trim()) - let index = Number(parts[0]) - let arg = data[index] - - let val = (arg || '').toString() // 默认 - - if (arg instanceof Date) // 日期 - { - let fm = 'MM-dd HH;mm' - if (parts.length > 1) - { - fm = parts[1] - } - val = this.Date(arg, fm) - } - - if (parts.length > 1 && parts[1][0] === '#') - { - // {2,#3} -> 数字 转成3位 001,...023, - val = val.padStart(Number(parts[1].substring(1)), '0') - } - tmpl = tmpl.replace(item[0], val) - } - - return tmpl - } - - /** 实现右对齐,右边填充 (25,4,'*') => '25**' */ - static PadEnd(num: number, totalWidth: number, paddingChar: string): string - { - let str = num.toString() - return str.padEnd(totalWidth, paddingChar[0]) - } - - /** 实现右对齐,左边填充 (25,4,'0') => '0025' */ - static PadStart(num: number, totalWidth: number, paddingChar: string): string - { - let str = num.toString() - return str.padStart(totalWidth, paddingChar[0]) - } -} diff --git a/samples/handleAbility/common/core/Path.ts b/samples/handleAbility/common/core/Path.ts deleted file mode 100644 index e324527..0000000 --- a/samples/handleAbility/common/core/Path.ts +++ /dev/null @@ -1,381 +0,0 @@ -import { Box2 } from '../Box2.js' -import { clipperCpp } from '../ClipperCpp.js' -import type { NestFiler } from '../Filer.js' -import type { Point } from '../Point.js' -import { equaln } from '../Util.js' -import { Vector2 } from '../Vector2.js' - -/** - * 轮廓路径类 - * 可以求NFP,和保存NFPCahce - * 因为NFP结果是按照最低点移动的,所以将点旋转后,按照盒子将点移动到0点. - */ -export class Path -{ - Id: number - Points: Point[] - OutsideNFPCache: { [key: number]: Point[][] } = {} - InsideNFPCache: { [key: number]: Point[][] } = {} - - constructor(public OrigionPoints?: Point[], rotation: number = 0) - { - if (OrigionPoints) - this.Init(OrigionPoints, rotation) - } - - Origion: Path - // 点表在旋转后的原始最小点.使用这个点将轮廓移动到0点 - OrigionMinPoint: Vector2 - Rotation: number - - Size: Vector2// 序列化 - private Init(origionPoints: Point[], rotation: number) - { - this.Rotation = rotation - if (rotation === 0) - this.Points = origionPoints.map((p) => { return { ...p } }) - else - { - let c = Math.cos(rotation) - let s = Math.sin(rotation) - - let npts: Point[] = [] - for (let p of origionPoints) - { - let x = p.x - let y = p.y - const x1 = x * c - y * s - const y1 = x * s + y * c - npts.push({ x: x1, y: y1 }) - } - this.Points = npts - } - - let box = new Box2() - let v2 = new Vector2() - for (let p of this.Points) - { - v2.x = p.x - v2.y = p.y - box.expandByPoint(v2) - } - - this.OrigionMinPoint = box.min - this.Size = box.max.sub(box.min) - - for (let p of this.Points) - { - p.x -= box.min.x - p.y -= box.min.y - } - } - - GetNFPs(path: Path, outside: boolean): Point[][] - { - // 寻找内轮廓时,面积应该比本path小,这个判断移交给使用者自己判断 - // if (!outside && this.Area < path.Area) return []; - let nfps = clipperCpp.lib.minkowskiSumPath(this.BigIntPoints, path.MirrorPoints, true) - - // 必须删除自交,否则将会出错 - nfps = clipperCpp.lib.simplifyPolygons(nfps) - nfps = nfps.filter((nfp) => - { - let area = Area(nfp) - // if (area > 1) return outside;//第一个不一定是外轮廓,但是面积为正时肯定为外轮廓 (因为使用了简化多段线,所以这个代码已经不能有了) - if (Math.abs(area) < 10) - return false// 应该不用在移除这个了 - - let { x, y } = nfp[0] - if (outside) - { - if (this.Area > path.Area) - { - let p = { x: path.InPoint.x + x, y: path.InPoint.y + y } - if (p.x < 0 || p.y < 0 || p.x > this.BigSize.x || p.y > this.BigSize.y) - return true - let dir = clipperCpp.lib.pointInPolygon(p, this.BigIntPoints) - return dir === 0 - } - else - { - let p = { x: this.InPoint.x - x, y: this.InPoint.y - y } - if (p.x < 0 || p.y < 0 || p.x > path.BigSize.x || p.y > path.BigSize.y) - return true - let dir = clipperCpp.lib.pointInPolygon(p, path.BigIntPoints) - return dir === 0 - } - } - else - { - let p = { x: path.InPoint.x + x, y: path.InPoint.y + y } - if (p.x < 0 || p.y < 0 || p.x > this.BigSize.x || p.y > this.BigSize.y) - return false - let dir = clipperCpp.lib.pointInPolygon(p, this.BigIntPoints) - return dir === 1 - } - }) - return nfps - } - - GetOutsideNFP(path: Path): Point[][] - { - let nfps = this.OutsideNFPCache[path.Id] - if (nfps) - return nfps - - if (this.IsRect && path.IsRect) - { - let [ax, ay] = [this.Size.x * 1e4, this.Size.y * 1e4] - let [bx, by] = [path.Size.x * 1e4, path.Size.y * 1e4] - nfps = [[ - { x: -bx, y: -by }, - { x: ax, y: -by }, - { x: ax, y: ay }, - { x: -bx, y: ay }, - ]] - } - else - nfps = this.GetNFPs(path, true) - this.OutsideNFPCache[path.Id] = nfps - // 虽然有这种神奇的特性,但是好像并不会提高性能。 - // path.OutsideNFPCache[this.id] = (this, nfps.map(nfp => - // { - // return nfp.map(p => - // { - // return { x: -p.x, y: -p.y }; - // }); - // })); - return nfps - } - - GetInsideNFP(path: Path): Point[][] - { - if (path.Area > this.Area) - return - let nfp = this.InsideNFPCache[path.Id] - if (nfp) - return nfp - - let nfps: Point[][] - if (this.IsRect) - { - let [ax, ay] = [this.Size.x * 1e4, this.Size.y * 1e4] - let [bx, by] = [path.Size.x * 1e4, path.Size.y * 1e4] - - let l = ax - bx - let h = ay - by - - const MinNumber = 200// 清理的数值是100,所以200是可以接受的, 200=0.020问题不大(过盈配合) - if (l < -MinNumber || h < -MinNumber) - return - - if (l < MinNumber) - l = MinNumber - else - l += MinNumber - - if (h < MinNumber) - h = MinNumber - else - h += MinNumber - - nfps = [[ - { x: 0, y: 0 }, - { x: l, y: 0 }, - { x: l, y: h }, - { x: 0, y: h }, - ]] - } - else - nfps = this.GetNFPs(path, false) - - if (path.Id !== undefined) - this.InsideNFPCache[path.Id] = nfps - return nfps - } - - private _InPoint: Point - - /** - * 用这个点来检测是否在Path内部 - */ - private get InPoint() - { - if (this._InPoint) - return this._InPoint - let mp = { x: (this.Points[0].x + this.Points[1].x) / 2, y: (this.Points[0].y + this.Points[1].y) / 2 } - let normal = new Vector2(this.Points[1].x - this.Points[0].x, this.Points[1].y - this.Points[0].y).normalize() - // [normal.x, normal.y] = [normal.y, -normal.x]; - mp.x -= normal.y - mp.y += normal.x - - mp.x *= 1e4 - mp.y *= 1e4 - this._InPoint = mp - return mp - } - - protected _BigIntPoints: Point[] - get BigIntPoints() - { - if (this._BigIntPoints) - return this._BigIntPoints - this._BigIntPoints = this.Points.map((p) => - { - return { - x: Math.round(p.x * 1e4), - y: Math.round(p.y * 1e4), - } - }) - return this._BigIntPoints - } - - private _BigSize: Vector2 - get BigSize() - { - if (this._BigSize) - return this._BigSize - this._BigSize = new Vector2(this.Size.x * 1e4, this.Size.y * 1e4) - return this._BigSize - } - - protected _MirrorPoints: Point[] - get MirrorPoints() - { - if (!this._MirrorPoints) - this._MirrorPoints = this.BigIntPoints.map((p) => - { - return { x: -p.x, y: -p.y } - }) - - return this._MirrorPoints - } - - protected _BoundingBox: Box2 - get BoundingBox() - { - if (!this._BoundingBox) - { - this._BoundingBox = new Box2(new Vector2(), this.Size) - } - return this._BoundingBox - } - - protected _Area: number - get Area() - { - if (this._Area === undefined) - this._Area = Area(this.Points) - return this._Area - } - - set Area(a: number) - { - this._Area = a - } - - private _IsRect: boolean - get IsRect() - { - if (this._IsRect === undefined) - { - let s = this.BoundingBox.getSize(new Vector2()) - this._IsRect = equaln(this.Area, s.x * s.y, 1) - } - return this._IsRect - } - - ReadFile(file: NestFiler): void - { - let ver = file.Read() - this.Id = file.Read() - let arr = file.Read() - this.Points = [] - for (let i = 0; i < arr.length; i += 2) - { - let p = { x: arr[i], y: arr[i + 1] } - this.Points.push(p) - } - - this.Size = new Vector2(file.Read(), file.Read()) - this._Area = file.Read() - let id = file.Read() - if (id !== -1) - { - this.Origion = id - this.Rotation = file.Read() - this.OrigionMinPoint = new Vector2(file.Read(), file.Read()) - } - } - - WriteFile(file: NestFiler): void - { - file.Write(1)// ver - file.Write(this.Id) - let arr: number[] = [] - for (let p of this.Points) - arr.push(p.x, p.y) - file.Write(arr) - - file.Write(this.Size.x) - file.Write(this.Size.y) - file.Write(this._Area) - if (this.Origion && this.Origion.Id) - { - // 如果有原始的id,则传递它,以便后续进行NFP复用. - file.Write(this.Origion.Id) - file.Write(this.Rotation) - file.Write(this.OrigionMinPoint.x) - file.Write(this.OrigionMinPoint.y) - } - else - file.Write(-1) - } -} - -// 点表面积 -export function Area(pts: Point[]): number -{ - let cnt = pts.length - if (cnt < 3) - return 0 - let a = 0 - for (let i = 0, j = cnt - 1; i < cnt; ++i) - { - a += (pts[j].x + pts[i].x) * (pts[j].y - pts[i].y) - j = i - } - return -a * 0.5 -} - -/** - * 平移点表,返回新点表 - */ -export function TranslatePath(pts: Point[], p: Point): Point[] -{ - return pts.map((px) => - { - return { x: p.x + px.x, y: p.y + px.y } - }) -} - -export function TranslatePath_Self(pts: Point[], mx: number, my: number): Point[] -{ - for (let pt of pts) - { - pt.x += mx - pt.y += my - } - return pts -} - -// 缩放点表,返回原始点表 -export function PathScale(pts: Point[], scale: number): Point[] -{ - for (let p of pts) - { - p.x *= scale - p.y *= scale - } - return pts -} diff --git a/samples/handleAbility/common/工具类.md b/samples/handleAbility/common/工具类.md deleted file mode 100644 index e69de29..0000000 diff --git a/samples/handleAbility/knifeHelper.ts b/samples/handleAbility/knifeHelper.ts deleted file mode 100644 index f9c54d9..0000000 --- a/samples/handleAbility/knifeHelper.ts +++ /dev/null @@ -1,202 +0,0 @@ -import { _knifeType, Knife, SideModel } from "../confClass"; -import { knifeData,knifeData1,knifeData2 } from "../demoKnives"; -/** 刀库 管理刀具*/ -export class KnifeHelper { - knifeList: Knife[] - constructor(_knifeList) { - - this.knifeList.push(knifeData); - - - if (Array.isArray(_knifeList) && _knifeList.length >0 ) { - this.loadKnifeList(_knifeList) - } - } - - loadKnifeList(_knifeList) { - this.knifeList = _knifeList || [] - } - - /** 根据刀名称获取造型刀 */ - getModelKnifeByName(name: string): Knife | undefined { - return this.knifeList.find(t => t.knifeName.trim() == name.trim() && t.isModelingKnife()); - } - - /** 根据半径获取造型刀 */ - getModelKnifeByRadius(radius: number, depth: number): Knife | undefined { - return this.knifeList.find(t => t.isModelingKnife() && Math.abs(t.diameter - 2 * radius) < 0.02 && t.length >= depth - 0.01); - } - - /** 获取合适的开料刀作为造型刀 */ - getFittedModelKnife(radius: number, depth: number): Knife | null { - const knives = this.knifeList.filter(t => t.isModelingKnife() && t.length > depth - 0.01 && t.diameter / 2 < radius - 0.02); - if (knives) { - knives.sort((a, b) => b.diameter - a.diameter); //按刀直径倒序排序 - return knives[0]; - } - - return null; - } - - /** 根据厚度获取开料刀 */ - getKnifeByThickness(thickness: number): Knife | undefined { - return this.knifeList.find(t => t.length >= thickness); - } - /** 通用 找刀具 根据查询条件 */ - getKnifeByParams(params: _knifeType) { - let knife: Knife | null = null - - if (params) { - let tempKnifeList: Knife[] = [...this.knifeList] // [] - let keys = Object.keys(params) - if (keys.length > 0) { - keys.forEach(key => { - if (Array.isArray(params[key]) && key == 'ability') { - // 进来的应该是ability 是数组 判断刀的能力 - for (const arrItem of params[key]) { - let _knifeList = this.knifeList.filter(e => e.ability.includes(arrItem)) - _knifeList.forEach(k => { - if (!this.KnifeIsInKnifeList(k, tempKnifeList)) { - tempKnifeList.push(k) - } - }) - } - } else if (['string', 'number'].includes(typeof (params[key]))) { - if (params && params[key] && typeof (params[key]) == 'number') { - - if (key == 'length') { - tempKnifeList = tempKnifeList.filter(e => e[key] >= params[key]) - } else { - tempKnifeList = tempKnifeList.filter(e => e[key] == params[key]) - } - - - } - } - }); - if (tempKnifeList.length > 0) { - knife = tempKnifeList[0] - } - } else { - console.log('传入的查询条件 没有参数') - } - } - return knife - } - - /** 判断 刀是否在 刀列表内 - * true 存在 - * false 不存在 - */ - KnifeIsInKnifeList(_knife: Knife, _knifeList: Knife[]) { - let k = _knifeList.find(e => _knife.axleId == e.axleId - && _knife.diameter == e.diameter - && _knife.knifeId == e.knifeId) - - if (k) { - return true - } else { - return false - } - } - getSideModelKnife(model: SideModel): Knife | undefined | null { - if (model.knifeName && model.knifeName.trim() != '') { - return this.getModelKnifeByName(model.knifeName.trim()); - } - //获取刀半径(直径)和长度与造型定义的刀半径和深度一致的刀 - const knife = this.getSideModelKnifeByRadius(model.knifeRadius, model.depth, model.direction); - if (knife) return knife; - //获取刀半径(直径)小于造型定义的刀半径、长度不小于造型深度的刀 - return this.getFittedSideModelKnife(model.knifeRadius, model.depth, model.direction); - } - /** 获取合适的开料刀作为造型刀 */ - getFittedSideModelKnife(radius: number, depth: number, direction): Knife | null { - let processFaceArr: number[] = []; - processFaceArr.push(5) - switch (direction) { - case 0: - processFaceArr.push(4) - - break; - case 1: - processFaceArr.push(2) - - break; - case 2: - processFaceArr.push(3) - - break; - case 3: - - processFaceArr.push(1) - break; - case 10: - - - break; - case 11: - - break; - case 12: - - break; - case 13: - - break; - default: - break; - } - const knives = this.knifeList.filter(t => t.isModelingKnife() && t.length > depth - 0.01 && t.diameter / 2 < radius - 0.02 && processFaceArr.includes(t.processFace)); - if (knives) { - knives.sort((a, b) => b.diameter - a.diameter); //按刀直径倒序排序 - return knives[0]; - } - - return null; - } - /** 根据半径获取造型刀 */ - // direction 0 下 1右 2上 3左 10 左下斜 11 右下斜 12右上斜 13 左上斜 - // processFace: number // 加工面 2024 11 21 : 正面 0 反面 1 左侧面 2 右侧面 3 上侧面 4 下侧面 5 任意 6 - getSideModelKnifeByRadius(radius: number, depth: number, direction): Knife | undefined { - - let processFaceArr: number[] = []; - processFaceArr.push(5) - switch (direction) { - case 0: - processFaceArr.push(4) - - break; - case 1: - processFaceArr.push(2) - - break; - case 2: - processFaceArr.push(3) - - break; - case 3: - - processFaceArr.push(1) - break; - case 10: - - - break; - case 11: - - break; - case 12: - - break; - case 13: - - break; - default: - break; - } - let knife = this.knifeList.find(t => t.isModelingKnife() && Math.abs(t.diameter - 2 * radius) < 0.02 && t.length >= depth - 0.01 && processFaceArr.includes(t.processFace)) - - return knife; - } - -} \ No newline at end of file diff --git a/samples/handleAbility/基础功能目录.md b/samples/handleAbility/基础功能目录.md deleted file mode 100644 index a757038..0000000 --- a/samples/handleAbility/基础功能目录.md +++ /dev/null @@ -1,2 +0,0 @@ -# 基础功能目录 - 该目录下的功能函数尽量不包含业务逻辑 \ No newline at end of file diff --git a/samples/moduleManager/module1.ts b/samples/moduleManager/module1.ts deleted file mode 100644 index 6aac9aa..0000000 --- a/samples/moduleManager/module1.ts +++ /dev/null @@ -1,262 +0,0 @@ -import { ProcessorModule } from "../../src/device"; -import { confItem, PlaceBlock, PlaceBlockDetail, PlaceMaterial } from "../confClass"; -import { Big_bang, ComposingType, LineType, WorkerItemType, xbang } from "../handleAbility/RectOptimizeWorker/bang"; -import resData from './res1.json' -import {Worker} from 'worker_threads' - -/** 模块 新优化 - * - * input 入参 - * - * ProcessorModule这里的any 可以自定义 根据组件需求 -*/ - - -export const RectOptimizeMachineModule: ProcessorModule = { - moduleName: "RectOptimizeMachine", - config: { - workerList: [], - placeStyle: 1, - }, - - setConfig(config) { - this.config = { ...this.config, ...config }; - }, - - before(input) { - // console.log(`优化前要做的事情`, input); - }, - - process(input, next, context) { - let { blockList, materialList } = input - let bList: any = [] - let pm = materialList[0] - blockList.map(e => { - if (e.goodsId == pm.goodsId) { - bList[e.blockNo] = e - // let detail = blockDetailList.find(x => x.blockId == e.blockId) - // // 处理可能出现的异常 --没有板明细 - // if (!Reflect.has(bList[e.blockNo], 'blockDetail')) { - // bList[e.blockNo].blockDetail = new PlaceBlockDetail(detail) - // } - // bList[e.blockNo].isTurnFaceToPlace = !this.getDoFace(bList[e.blockNo], this.processMode()) - // 是否翻面后续处理 - bList[e.blockNo].isTurnFaceToPlace = true - if (Array.isArray(pm.blockList)) { - - pm.blockList.push(e) - } else { - pm.blockList = [e] - } - } - }) - pm.cutBorder = this.cutBoardBorder - pm.cutKnifeGap = this.blockKnifeLineSpacing - - /** 小板 */ - let bans: xbang[] = [] - - // 实际开料大板的列表 - let big_Bang: Big_bang[] = [] - let big_BangSL: number[] = [] - - - let border = this.cutBoardBorder - let borderOff = (pm.diameter + pm.cutKnifeGap) / 2 - - // 余料板 以及实际开料大板 - for (const cuttingBoard of pm.remainBoardList) { - big_Bang.push({ w: cuttingBoard.width - border * 2 + borderOff * 2, l: cuttingBoard.length - border * 2 + borderOff * 2, x: border - borderOff, y: border - borderOff }) - big_BangSL.push(cuttingBoard.count || 999) - } - // big_Bang = [] - // big_BangSL = [] - // 母板 兜底的 - big_Bang.push({ w: pm.width - border * 2 + borderOff * 2, l: pm.length - border * 2 + borderOff * 2, x: border - borderOff, y: border - borderOff }) - // 生成小板 - for (let key in bList) { - let b = bList[key] - - let bid = b.blockNo - - let width = b.placeFullWidth - let length = b.placeFullLength - let line = toLine(b.texture) - - bans.push({ - l: length, - w: width, - line, - face: toface(b), - id: bid, - bno: b.blockNo, - holeFaceCount: 3, - isRect: !b.isUnRegular, - hasHole: false, - isdtwosided: true, - }) - } - - let bestCount = 0 - if (bans.length == 0) // 没有板了 - { - - if (context.CallBack) { - let best = [] - let yl: Big_bang[] = [] - let fit = 0 - let resObj = { - data: { bList, best, yl, fit, bans, width: pm.width, length: pm.length, bestCount: bestCount++, pm }, - info: { - times: -1, - type: 'noBan' - } - } - context.CallBack(resObj) - } - - return - } - let xyhcs = 50 - if (bans.length > 1000) { xyhcs = 40 } - else if (bans.length > 1500) { xyhcs = 30 } - else if (bans.length > 2000) { xyhcs = 25 } - else if (bans.length > 4000) { xyhcs = 20 } - else if (bans.length > 6000) { xyhcs = 15 } - else if (bans.length > 10000) { xyhcs = 10 } - else if (bans.length > 15000) { xyhcs = 5 } - else if (bans.length > 20000) { xyhcs = 1 } - let isDoubleFaceBlockFirst = this.isDoubleFaceBlockFirst // 双面加工排前面 - let gap = this.blockKnifeLineSpacing - // this.bestfit = 0 - - /** 这里要做个多线程 测试环境下 这部分有问题 暂时略过 */ - for (let j = 0; j < 1; j++) { - - // let w = new Worker(new URL('../handleAbility/RectOptimizeWorker/RectOptimizeWorker.worker', import.meta.url), { type: 'module' }) - let w= new Worker('../handleAbility/RectOptimizeWorker/RectOptimizeWorker.worker') - const data = { - type: 'start', - data: [bans, big_Bang, big_BangSL, xyhcs, isDoubleFaceBlockFirst, gap, this.isRectPlace, this.isDoubleFaceBlockInRemain], - } - let item: WorkerItemType = { - w: w, - goodsId: pm.goodsId, - pm, - status: 'start' - } - if (this.config.workerList.findIndex(e => e.goodsId == item.goodsId) == -1) { - this.config.workerList.push(item) - } - - - let workItem = this.config.workerList.find(e => e.goodsId == pm.goodsId) - if (workItem && workItem != undefined) { - workItem.w?.postMessage(data) - - workItem.w.onmessage = async (d) => { - let [best, yl, fit, info] = d.data as [any[], Big_bang[], number, any] - - switch (info.type) { - case 'loop': - let resObj = { - data: { bList, best, yl, fit, bans, width: pm.width, length: pm.length, bestCount: bestCount++, pm }, - info - } - if (context.CallBack) { - context.CallBack(resObj) - } - - break; - case 'stop': - console.error('stop =》dataHandleBase', info, this.config.workerList) - this.terminateWorker({ goodsId: pm.goodsId }) - break; - case 'isStop': - // console.error('isStop', info) - break; - default: - break; - } - - } - } - } - if (context.CallBack) { - context.CallBack(resData) - } - - return next ? next(input) : input; - }, - - after(result) { - console.log(`优化后要做的事情`,); - }, - - onError(error) { - console.log('出错了哦', error); - } -}; - - -function toLine(texture): LineType { - if (texture == 0) - return LineType.Positive - if (texture == 1) - return LineType.CanReversal - return LineType.Reverse -} -/** 小板加工面:Positive=0正面 Reverse=1反面 Arbitrary=2任意 */ -function toface(block: PlaceBlock): ComposingType { - let turnF = block.isTurnFaceToPlace - // if (this.isTurnFaceToPlace) - if (true) - turnF = !turnF - if (!turnF) - return ComposingType.Positive - return ComposingType.Reverse -} -/** 配置列表 */ -export const confList: confItem[] = [ - { - key: 'isCutProcess', - label: '开料机(雕刻机)加工', - value: true - }, - { - key: 'isCutAndCNCProcess', - label: '开料机CNC组合', - value: false - }, - { - key: 'isCustomized', - label: '定制加工', - value: false - }, - { - key: 'cutBoardBorder', - label: '总修边宽度', - value: 3 - }, - { - key: 'blockKnifeLineSpacing', - label: '刀路间距', - value: 0 - }, - { - key: 'isDoubleFaceBlockFirst', - label: '双面开料优先排版', - value: true - }, - { - key: 'isRectPlace', - label: '新优化规则排版', - value: false - }, - { - // yuLiaoBoardDo2FaceBlock - key: 'isDoubleFaceBlockInRemain', - label: '余料板允许排入双面加工的小板', - value: true - }, -] \ No newline at end of file diff --git a/samples/moduleManager/res1.json b/samples/moduleManager/res1.json deleted file mode 100644 index 5fb3ec6..0000000 --- a/samples/moduleManager/res1.json +++ /dev/null @@ -1,29615 +0,0 @@ -{ - "data": { - "bList": [], - "best": [ - [ - { - "bangid": "25044454403", - "line": 0, - "x": 0, - "y": 0, - "pbg": 1091.42, - "pbk": 1147.278 - }, - { - "bangid": "25044454401", - "line": 0, - "x": 0, - "y": 1091.42, - "pbg": 805.01, - "pbk": 505.01 - }, - { - "bangid": "25044454402", - "line": 0, - "x": 505.01, - "y": 1091.42, - "pbg": 1029.721, - "pbk": 171.01 - }, - { - "bangid": "25044454400", - "line": 0, - "x": 676.02, - "y": 1091.42, - "pbg": 711.352, - "pbk": 356.01 - }, - { - "bangid": "25044454405", - "line": 0, - "x": 1032.03, - "y": 1091.42, - "pbg": 106.01, - "pbk": 171.01 - }, - { - "bangid": "25044454404", - "line": 0, - "x": 1032.03, - "y": 1197.43, - "pbg": 105.01, - "pbk": 171.01 - } - ] - ], - "yl": [], - "fit": 2.1241277987899996, - "bans": [ - { - "l": 711.352, - "w": 356.01, - "line": 0, - "face": 1, - "id": "25044454400", - "bno": "25044454400", - "holeFaceCount": 3, - "isRect": false, - "hasHole": false, - "isdtwosided": true - }, - { - "l": 805.01, - "w": 505.01, - "line": 0, - "face": 1, - "id": "25044454401", - "bno": "25044454401", - "holeFaceCount": 3, - "isRect": true, - "hasHole": false, - "isdtwosided": true - }, - { - "l": 1029.721, - "w": 171.01, - "line": 0, - "face": 1, - "id": "25044454402", - "bno": "25044454402", - "holeFaceCount": 3, - "isRect": true, - "hasHole": false, - "isdtwosided": true - }, - { - "l": 1091.42, - "w": 1147.278, - "line": 0, - "face": 1, - "id": "25044454403", - "bno": "25044454403", - "holeFaceCount": 3, - "isRect": false, - "hasHole": false, - "isdtwosided": true - }, - { - "l": 105.01, - "w": 171.01, - "line": 0, - "face": 1, - "id": "25044454404", - "bno": "25044454404", - "holeFaceCount": 3, - "isRect": true, - "hasHole": false, - "isdtwosided": true - }, - { - "l": 106.01, - "w": 171.01, - "line": 0, - "face": 1, - "id": "25044454405", - "bno": "25044454405", - "holeFaceCount": 3, - "isRect": true, - "hasHole": false, - "isdtwosided": true - } - ], - "width": 1220, - "length": 2440, - "bestCount": 0, - "pm": { - "orderId": "1907276351086264320", - "goodsId": "BD10010006", - "goodsName": "18mm - 湖水绿 - 禾香板", - "spec": "", - "material": "禾香板", - "color": "湖水绿", - "brand": "虎宝宝", - "hasTexture": true, - "updateTime": "", - "orgWidth": 1220, - "orgLength": 2440, - "width": 1220, - "length": 2440, - "thickness": 18, - "cutBorder": 3, - "diameter": 6, - "cutKnifeGap": 0, - "preMillingSize": 0, - "isHelpCut": false, - "helpCutGap": 0, - "cutKnifeId": -1, - "cutKnifeName": "T1", - "helpKnifeId": -1, - "helpKnifeName": "", - "isOptimized": false, - "boardCount": 0, - "remainBoardCount": 0, - "minBoardId": null, - "maxBoardId": null, - "currentBoardId": 0, - "avgUsageRateAll": null, - "avgUsageRateExcludeLastBoard": null, - "usageRateLastBoard": null, - "allBlockCount": 0, - "selectedBlockCount": 0, - "noPlaceBlockCount": 0, - "optimizingBoardCount": 0, - "optimizingRemainBoardCount": 0, - "optimizingAvgUsageRateAll": 0, - "optimizingAvgUsageRateExcludeLastBoard": 0, - "optimizingUsageRateLastBoard": 0, - "remainBoardInfo": "", - "boardCountFlipFace": 0, - "blockCount": 0, - "blockArea": 0, - "edgeSealLengthList": [], - "remainBoardList": [], - "remainList": [], - "boardList": [], - "blockList": [ - { - "blockDetail": { - "organId": 0, - "blockId": "1907276518380273665", - "pointDetail": [], - "modelDetail": [], - "holeDetail": [], - "offsetX": 1.2, - "offsetY": 1.2, - "cutWidth": 348.2, - "cutLength": 703.542, - "points": [ - { - "pointX": 0, - "pointY": 703.542, - "curve": 0, - "radius": 0, - "sealSize": 0, - "isPreCutRequired": false - }, - { - "pointX": 0, - "pointY": 48.8, - "curve": 0.41421356237309476, - "radius": 48.80000000000001, - "sealSize": 0, - "isPreCutRequired": false - }, - { - "pointX": 48.8, - "pointY": 0, - "curve": 0, - "radius": 0, - "sealSize": 0, - "isPreCutRequired": false - }, - { - "pointX": 348.2, - "pointY": 0, - "curve": 0, - "radius": 0, - "sealSize": 0, - "isPreCutRequired": false - }, - { - "pointX": 348.2, - "pointY": 703.542, - "curve": 0, - "radius": 0, - "sealSize": 0, - "isPreCutRequired": false - } - ], - "orgPoints": [ - { - "pointX": 0, - "pointY": 705.342, - "curve": 0, - "radius": 0, - "sealSize": 1, - "isPreCutRequired": false - }, - { - "pointX": 0, - "pointY": 50, - "curve": 0.41421356237309476, - "radius": 50.00000000000002, - "sealSize": 1, - "isPreCutRequired": false - }, - { - "pointX": 50, - "pointY": 0, - "curve": 0, - "radius": 0, - "sealSize": 1, - "isPreCutRequired": false - }, - { - "pointX": 350, - "pointY": 0, - "curve": 0, - "radius": 0, - "sealSize": 0, - "isPreCutRequired": false - }, - { - "pointX": 350, - "pointY": 705.342, - "curve": 0, - "radius": 0, - "sealSize": 0, - "isPreCutRequired": false - } - ], - "orgContourData": null, - "holes": [], - "holeListFaceA": [], - "holeListFaceB": [], - "holeListThrough": [], - "holeListSide": [], - "models": [ - { - "orderId": "", - "blockId": 0, - "modelId": 1, - "lineId": 1, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 132.84804678663346, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.4903010084442, - "y": 526.2470588337941, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 199.1096989915565, - "y": 526.2470588337942, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 214.75195321336713, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 173.80000000000035, - "y": 604.1423027509678, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 132.84804678663346, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 136.375, - "pointY": 573.243, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 600.434, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 211.225, - "pointY": 573.243, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.93, - "pointY": 529.247, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 150.67, - "pointY": 529.247, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 136.375, - "pointY": 573.243, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 136.375, - "pointY": 573.243, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 600.434, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 211.225, - "pointY": 573.243, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.93, - "pointY": 529.247, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 150.67, - "pointY": 529.247, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 136.375, - "pointY": 573.243, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 1, - "lineId": 2, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 132.84804678663346, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.4903010084442, - "y": 526.2470588337941, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 199.1096989915565, - "y": 526.2470588337942, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 214.75195321336713, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 173.80000000000035, - "y": 604.1423027509678, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 132.84804678663346, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 142.081, - "pointY": 574.389, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053597 - }, - { - "pointX": 140.318, - "pointY": 568.962, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 158.158, - "pointY": 556, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.343, - "pointY": 535.028, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053655 - }, - { - "pointX": 155.96, - "pointY": 531.674, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 544.636, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 191.64, - "pointY": 531.674, - "radius": 3, - "depth": 2, - "curve": 0.726542528005359 - }, - { - "pointX": 196.257, - "pointY": 535.028, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 189.442, - "pointY": 556, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 207.282, - "pointY": 568.962, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053639 - }, - { - "pointX": 205.519, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 183.467, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 176.653, - "pointY": 595.361, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053636 - }, - { - "pointX": 170.947, - "pointY": 595.361, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.133, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 142.081, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 143.056, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.133, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 170.646, - "pointY": 594.434, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 143.056, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 142.081, - "pointY": 574.389, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053597 - }, - { - "pointX": 140.318, - "pointY": 568.962, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 158.158, - "pointY": 556, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.343, - "pointY": 535.028, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053655 - }, - { - "pointX": 155.96, - "pointY": 531.674, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 544.636, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 191.64, - "pointY": 531.674, - "radius": 3, - "depth": 2, - "curve": 0.726542528005359 - }, - { - "pointX": 196.257, - "pointY": 535.028, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 189.442, - "pointY": 556, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 207.282, - "pointY": 568.962, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053639 - }, - { - "pointX": 205.519, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 183.467, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 176.653, - "pointY": 595.361, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053636 - }, - { - "pointX": 170.947, - "pointY": 595.361, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.133, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 142.081, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 143.056, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.133, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 170.646, - "pointY": 594.434, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 143.056, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 1, - "lineId": 3, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 132.84804678663346, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.4903010084442, - "y": 526.2470588337941, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 199.1096989915565, - "y": 526.2470588337942, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 214.75195321336713, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 173.80000000000035, - "y": 604.1423027509678, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 132.84804678663346, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 141.106, - "pointY": 568.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.645, - "pointY": 535.955, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 158.158, - "pointY": 556, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 141.106, - "pointY": 568.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 146.813, - "pointY": 560.535, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.645, - "pointY": 545.663, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 154.631, - "pointY": 554.854, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 146.813, - "pointY": 560.535, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 141.106, - "pointY": 568.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.645, - "pointY": 535.955, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 158.158, - "pointY": 556, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 141.106, - "pointY": 568.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 146.813, - "pointY": 560.535, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.645, - "pointY": 545.663, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 154.631, - "pointY": 554.854, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 146.813, - "pointY": 560.535, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 1, - "lineId": 4, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 132.84804678663346, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.4903010084442, - "y": 526.2470588337941, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 199.1096989915565, - "y": 526.2470588337942, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 214.75195321336713, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 173.80000000000035, - "y": 604.1423027509678, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 132.84804678663346, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 152.289, - "pointY": 577.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 161.953, - "pointY": 577.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.939, - "pointY": 586.58, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 152.289, - "pointY": 577.389, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 152.289, - "pointY": 577.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 161.953, - "pointY": 577.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.939, - "pointY": 586.58, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 152.289, - "pointY": 577.389, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 1, - "lineId": 5, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 132.84804678663346, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.4903010084442, - "y": 526.2470588337941, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 199.1096989915565, - "y": 526.2470588337942, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 214.75195321336713, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 173.80000000000035, - "y": 604.1423027509678, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 132.84804678663346, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 176.954, - "pointY": 594.434, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 183.467, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 204.544, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 176.954, - "pointY": 594.434, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 182.661, - "pointY": 586.58, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 185.647, - "pointY": 577.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 195.311, - "pointY": 577.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 182.661, - "pointY": 586.58, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 176.954, - "pointY": 594.434, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 183.467, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 204.544, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 176.954, - "pointY": 594.434, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 182.661, - "pointY": 586.58, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 185.647, - "pointY": 577.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 195.311, - "pointY": 577.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 182.661, - "pointY": 586.58, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 1, - "lineId": 6, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 132.84804678663346, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.4903010084442, - "y": 526.2470588337941, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 199.1096989915565, - "y": 526.2470588337942, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 214.75195321336713, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 173.80000000000035, - "y": 604.1423027509678, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 132.84804678663346, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 189.442, - "pointY": 556, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 195.955, - "pointY": 535.955, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 206.494, - "pointY": 568.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 189.442, - "pointY": 556, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 192.969, - "pointY": 554.854, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 195.955, - "pointY": 545.663, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 200.787, - "pointY": 560.535, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 192.969, - "pointY": 554.854, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 189.442, - "pointY": 556, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 195.955, - "pointY": 535.955, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 206.494, - "pointY": 568.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 189.442, - "pointY": 556, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 192.969, - "pointY": 554.854, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 195.955, - "pointY": 545.663, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 200.787, - "pointY": 560.535, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 192.969, - "pointY": 554.854, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 1, - "lineId": 7, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 132.84804678663346, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.4903010084442, - "y": 526.2470588337941, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 199.1096989915565, - "y": 526.2470588337942, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 214.75195321336713, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 173.80000000000035, - "y": 604.1423027509678, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 132.84804678663346, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 165.982, - "pointY": 535.247, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 181.618, - "pointY": 535.247, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 540.927, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 165.982, - "pointY": 535.247, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 156.749, - "pointY": 532.247, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 190.851, - "pointY": 532.247, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 544.636, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 156.749, - "pointY": 532.247, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 165.982, - "pointY": 535.247, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 181.618, - "pointY": 535.247, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 540.927, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 165.982, - "pointY": 535.247, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 156.749, - "pointY": 532.247, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 190.851, - "pointY": 532.247, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 544.636, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 156.749, - "pointY": 532.247, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 2, - "lineId": 1, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 10.15, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 148.80000000000024, - "y": 198.7999999999999, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.80000000000024, - "y": 98.8, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 198.80000000000035, - "y": 98.8, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 198.80000000000035, - "y": 198.7999999999999, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.80000000000024, - "y": 198.7999999999999, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 6, - "addWidth": 0.1, - "addDepth": 0.15 - }, - "pointList": [ - { - "pointX": 151.75, - "pointY": 98.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 151.75, - "pointY": 198.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 195.85, - "pointY": 198.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 195.85, - "pointY": 98.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 151.75, - "pointY": 98.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 157.75, - "pointY": 104.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 189.85, - "pointY": 104.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 189.85, - "pointY": 192.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 157.75, - "pointY": 192.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 157.75, - "pointY": 104.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 163.75, - "pointY": 110.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 183.85, - "pointY": 110.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 183.85, - "pointY": 186.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 163.75, - "pointY": 186.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 163.75, - "pointY": 110.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 169.75, - "pointY": 116.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 177.85, - "pointY": 116.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 177.85, - "pointY": 180.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 169.75, - "pointY": 180.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 169.75, - "pointY": 116.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 120.85, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 176.75, - "radius": 0, - "depth": 10.15, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 151.75, - "pointY": 98.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 151.75, - "pointY": 198.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 195.85, - "pointY": 198.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 195.85, - "pointY": 98.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 151.75, - "pointY": 98.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 157.75, - "pointY": 104.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 189.85, - "pointY": 104.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 189.85, - "pointY": 192.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 157.75, - "pointY": 192.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 157.75, - "pointY": 104.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 163.75, - "pointY": 110.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 183.85, - "pointY": 110.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 183.85, - "pointY": 186.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 163.75, - "pointY": 186.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 163.75, - "pointY": 110.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 169.75, - "pointY": 116.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 177.85, - "pointY": 116.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 177.85, - "pointY": 180.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 169.75, - "pointY": 180.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 169.75, - "pointY": 116.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 120.85, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 176.75, - "radius": 0, - "depth": 10.15, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 3, - "lineId": 1, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 10.15, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 198.80000000000035, - "y": 248.79999999999978, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 148.80000000000035, - "y": 248.79999999999978, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 198.80000000000035, - "y": 248.79999999999978, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 6, - "addWidth": 0.1, - "addDepth": 0.15 - }, - "pointList": [ - { - "pointX": 151.8, - "pointY": 248.8, - "radius": 22, - "depth": 10.15, - "curve": -0.9999999999999999 - }, - { - "pointX": 195.8, - "pointY": 248.8, - "radius": 22, - "depth": 10.15, - "curve": -0.9999999999999999 - }, - { - "pointX": 151.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 154.8, - "pointY": 248.8, - "radius": 19, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 192.8, - "pointY": 248.8, - "radius": 19, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 154.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 157.8, - "pointY": 248.8, - "radius": 16, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 189.8, - "pointY": 248.8, - "radius": 16, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 157.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 160.8, - "pointY": 248.8, - "radius": 13, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 186.8, - "pointY": 248.8, - "radius": 13, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 160.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 163.8, - "pointY": 248.8, - "radius": 10, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 183.8, - "pointY": 248.8, - "radius": 10, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 163.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 166.8, - "pointY": 248.8, - "radius": 7, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 180.8, - "pointY": 248.8, - "radius": 7, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 166.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 169.8, - "pointY": 248.8, - "radius": 4, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 177.8, - "pointY": 248.8, - "radius": 4, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 169.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 172.8, - "pointY": 248.8, - "radius": 1, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 174.8, - "pointY": 248.8, - "radius": 1, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 172.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 151.8, - "pointY": 248.8, - "radius": 22, - "depth": 10.15, - "curve": -0.9999999999999999 - }, - { - "pointX": 195.8, - "pointY": 248.8, - "radius": 22, - "depth": 10.15, - "curve": -0.9999999999999999 - }, - { - "pointX": 151.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 154.8, - "pointY": 248.8, - "radius": 19, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 192.8, - "pointY": 248.8, - "radius": 19, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 154.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 157.8, - "pointY": 248.8, - "radius": 16, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 189.8, - "pointY": 248.8, - "radius": 16, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 157.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 160.8, - "pointY": 248.8, - "radius": 13, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 186.8, - "pointY": 248.8, - "radius": 13, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 160.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 163.8, - "pointY": 248.8, - "radius": 10, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 183.8, - "pointY": 248.8, - "radius": 10, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 163.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 166.8, - "pointY": 248.8, - "radius": 7, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 180.8, - "pointY": 248.8, - "radius": 7, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 166.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 169.8, - "pointY": 248.8, - "radius": 4, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 177.8, - "pointY": 248.8, - "radius": 4, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 169.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 172.8, - "pointY": 248.8, - "radius": 1, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 174.8, - "pointY": 248.8, - "radius": 1, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 172.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 4, - "lineId": 1, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 216.85943181262843, - "y": 461.0828709383395, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 130.74056818737182, - "y": 461.0828709383395, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 216.85943181262843, - "y": 461.0828709383395, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 133.741, - "pointY": 461.083, - "radius": 40.059, - "depth": 2, - "curve": -0.9999999999999999 - }, - { - "pointX": 213.859, - "pointY": 461.083, - "radius": 40.059, - "depth": 2, - "curve": -0.9999999999999999 - }, - { - "pointX": 133.741, - "pointY": 461.083, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 136.741, - "pointY": 461.083, - "radius": 37.059, - "depth": 2, - "curve": 0.9999999999999999 - }, - { - "pointX": 210.859, - "pointY": 461.083, - "radius": 37.059, - "depth": 2, - "curve": 0.9999999999999999 - }, - { - "pointX": 136.741, - "pointY": 461.083, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 142.829, - "pointY": 463.429, - "radius": 31.059, - "depth": 2, - "curve": 0.19738859486115215 - }, - { - "pointX": 150.123, - "pointY": 440.981, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 154.631, - "pointY": 454.854, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 142.829, - "pointY": 463.429, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 140.614, - "pointY": 468.747, - "radius": 34.059, - "depth": 2, - "curve": 0.2773586187268363 - }, - { - "pointX": 151.457, - "pointY": 435.376, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 158.158, - "pointY": 456, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 140.614, - "pointY": 468.747, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 140.318, - "pointY": 468.962, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 158.158, - "pointY": 456, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.343, - "pointY": 435.028, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053616 - }, - { - "pointX": 155.96, - "pointY": 431.674, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 444.636, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 191.64, - "pointY": 431.674, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053599 - }, - { - "pointX": 196.257, - "pointY": 435.028, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 189.442, - "pointY": 456, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 207.282, - "pointY": 468.962, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053603 - }, - { - "pointX": 205.519, - "pointY": 474.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 183.467, - "pointY": 474.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 176.653, - "pointY": 495.361, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053646 - }, - { - "pointX": 170.947, - "pointY": 495.361, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.133, - "pointY": 474.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 142.081, - "pointY": 474.389, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053591 - }, - { - "pointX": 140.318, - "pointY": 468.962, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 133.741, - "pointY": 461.083, - "radius": 40.059, - "depth": 2, - "curve": -0.9999999999999999 - }, - { - "pointX": 213.859, - "pointY": 461.083, - "radius": 40.059, - "depth": 2, - "curve": -0.9999999999999999 - }, - { - "pointX": 133.741, - "pointY": 461.083, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 136.741, - "pointY": 461.083, - "radius": 37.059, - "depth": 2, - "curve": 0.9999999999999999 - }, - { - "pointX": 210.859, - "pointY": 461.083, - "radius": 37.059, - "depth": 2, - "curve": 0.9999999999999999 - }, - { - "pointX": 136.741, - "pointY": 461.083, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 142.829, - "pointY": 463.429, - "radius": 31.059, - "depth": 2, - "curve": 0.19738859486115215 - }, - { - "pointX": 150.123, - "pointY": 440.981, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 154.631, - "pointY": 454.854, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 142.829, - "pointY": 463.429, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 140.614, - "pointY": 468.747, - "radius": 34.059, - "depth": 2, - "curve": 0.2773586187268363 - }, - { - "pointX": 151.457, - "pointY": 435.376, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 158.158, - "pointY": 456, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 140.614, - "pointY": 468.747, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 140.318, - "pointY": 468.962, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 158.158, - "pointY": 456, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.343, - "pointY": 435.028, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053616 - }, - { - "pointX": 155.96, - "pointY": 431.674, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 444.636, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 191.64, - "pointY": 431.674, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053599 - }, - { - "pointX": 196.257, - "pointY": 435.028, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 189.442, - "pointY": 456, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 207.282, - "pointY": 468.962, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053603 - }, - { - "pointX": 205.519, - "pointY": 474.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 183.467, - "pointY": 474.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 176.653, - "pointY": 495.361, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053646 - }, - { - "pointX": 170.947, - "pointY": 495.361, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.133, - "pointY": 474.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 142.081, - "pointY": 474.389, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053591 - }, - { - "pointX": 140.318, - "pointY": 468.962, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 4, - "lineId": 2, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 216.85943181262843, - "y": 461.0828709383395, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 130.74056818737182, - "y": 461.0828709383395, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 216.85943181262843, - "y": 461.0828709383395, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 142.447, - "pointY": 474.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.133, - "pointY": 474.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 170.834, - "pointY": 495.013, - "radius": 34.059, - "depth": 2, - "curve": 0.2773586187268357 - }, - { - "pointX": 142.447, - "pointY": 474.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 147.365, - "pointY": 477.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 161.953, - "pointY": 477.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 166.461, - "pointY": 491.263, - "radius": 31.059, - "depth": 2, - "curve": 0.1973885948611515 - }, - { - "pointX": 147.365, - "pointY": 477.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 153.438, - "pointY": 480.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 159.773, - "pointY": 480.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 161.731, - "pointY": 486.414, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030140894 - }, - { - "pointX": 153.438, - "pointY": 480.389, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 142.447, - "pointY": 474.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.133, - "pointY": 474.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 170.834, - "pointY": 495.013, - "radius": 34.059, - "depth": 2, - "curve": 0.2773586187268357 - }, - { - "pointX": 142.447, - "pointY": 474.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 147.365, - "pointY": 477.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 161.953, - "pointY": 477.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 166.461, - "pointY": 491.263, - "radius": 31.059, - "depth": 2, - "curve": 0.1973885948611515 - }, - { - "pointX": 147.365, - "pointY": 477.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 153.438, - "pointY": 480.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 159.773, - "pointY": 480.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 161.731, - "pointY": 486.414, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030140894 - }, - { - "pointX": 153.438, - "pointY": 480.389, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 4, - "lineId": 3, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 216.85943181262843, - "y": 461.0828709383395, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 130.74056818737182, - "y": 461.0828709383395, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 216.85943181262843, - "y": 461.0828709383395, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 145.979, - "pointY": 457.432, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030140949 - }, - { - "pointX": 149.147, - "pointY": 447.683, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.104, - "pointY": 453.709, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 145.979, - "pointY": 457.432, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 145.979, - "pointY": 457.432, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030140949 - }, - { - "pointX": 149.147, - "pointY": 447.683, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.104, - "pointY": 453.709, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 145.979, - "pointY": 457.432, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 4, - "lineId": 4, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 216.85943181262843, - "y": 461.0828709383395, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 130.74056818737182, - "y": 461.0828709383395, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 216.85943181262843, - "y": 461.0828709383395, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 156.256, - "pointY": 431.889, - "radius": 34.059, - "depth": 2, - "curve": 0.2773586187268329 - }, - { - "pointX": 191.344, - "pointY": 431.889, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 444.636, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 156.256, - "pointY": 431.889, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 161.998, - "pointY": 432.353, - "radius": 31.059, - "depth": 2, - "curve": 0.19738859486114835 - }, - { - "pointX": 185.602, - "pointY": 432.353, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 440.927, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 161.998, - "pointY": 432.353, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 168.675, - "pointY": 433.495, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030140479 - }, - { - "pointX": 178.925, - "pointY": 433.495, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 437.219, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 168.675, - "pointY": 433.495, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 156.256, - "pointY": 431.889, - "radius": 34.059, - "depth": 2, - "curve": 0.2773586187268329 - }, - { - "pointX": 191.344, - "pointY": 431.889, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 444.636, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 156.256, - "pointY": 431.889, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 161.998, - "pointY": 432.353, - "radius": 31.059, - "depth": 2, - "curve": 0.19738859486114835 - }, - { - "pointX": 185.602, - "pointY": 432.353, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 440.927, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 161.998, - "pointY": 432.353, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 168.675, - "pointY": 433.495, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030140479 - }, - { - "pointX": 178.925, - "pointY": 433.495, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 437.219, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 168.675, - "pointY": 433.495, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 4, - "lineId": 5, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 216.85943181262843, - "y": 461.0828709383395, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 130.74056818737182, - "y": 461.0828709383395, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 216.85943181262843, - "y": 461.0828709383395, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 189.442, - "pointY": 456, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.143, - "pointY": 435.376, - "radius": 34.059, - "depth": 2, - "curve": 0.2773586187268338 - }, - { - "pointX": 206.986, - "pointY": 468.747, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 189.442, - "pointY": 456, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 192.969, - "pointY": 454.854, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 197.477, - "pointY": 440.981, - "radius": 31.059, - "depth": 2, - "curve": 0.19738859486114949 - }, - { - "pointX": 204.771, - "pointY": 463.429, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 192.969, - "pointY": 454.854, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.496, - "pointY": 453.709, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 198.453, - "pointY": 447.683, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030140658 - }, - { - "pointX": 201.621, - "pointY": 457.432, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.496, - "pointY": 453.709, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 189.442, - "pointY": 456, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.143, - "pointY": 435.376, - "radius": 34.059, - "depth": 2, - "curve": 0.2773586187268338 - }, - { - "pointX": 206.986, - "pointY": 468.747, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 189.442, - "pointY": 456, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 192.969, - "pointY": 454.854, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 197.477, - "pointY": 440.981, - "radius": 31.059, - "depth": 2, - "curve": 0.19738859486114949 - }, - { - "pointX": 204.771, - "pointY": 463.429, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 192.969, - "pointY": 454.854, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.496, - "pointY": 453.709, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 198.453, - "pointY": 447.683, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030140658 - }, - { - "pointX": 201.621, - "pointY": 457.432, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.496, - "pointY": 453.709, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 4, - "lineId": 6, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 216.85943181262843, - "y": 461.0828709383395, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 130.74056818737182, - "y": 461.0828709383395, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 216.85943181262843, - "y": 461.0828709383395, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 183.467, - "pointY": 474.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 205.153, - "pointY": 474.389, - "radius": 34.059, - "depth": 2, - "curve": 0.2773586187268312 - }, - { - "pointX": 176.766, - "pointY": 495.013, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 183.467, - "pointY": 474.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 185.647, - "pointY": 477.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 200.235, - "pointY": 477.389, - "radius": 31.059, - "depth": 2, - "curve": 0.19738859486114727 - }, - { - "pointX": 181.139, - "pointY": 491.263, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 185.647, - "pointY": 477.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 187.827, - "pointY": 480.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 194.162, - "pointY": 480.389, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030140522 - }, - { - "pointX": 185.869, - "pointY": 486.414, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 187.827, - "pointY": 480.389, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 183.467, - "pointY": 474.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 205.153, - "pointY": 474.389, - "radius": 34.059, - "depth": 2, - "curve": 0.2773586187268312 - }, - { - "pointX": 176.766, - "pointY": 495.013, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 183.467, - "pointY": 474.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 185.647, - "pointY": 477.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 200.235, - "pointY": 477.389, - "radius": 31.059, - "depth": 2, - "curve": 0.19738859486114727 - }, - { - "pointX": 181.139, - "pointY": 491.263, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 185.647, - "pointY": 477.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 187.827, - "pointY": 480.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 194.162, - "pointY": 480.389, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030140522 - }, - { - "pointX": 185.869, - "pointY": 486.414, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 187.827, - "pointY": 480.389, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 5, - "lineId": 1, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 10.3, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 228.80000000000035, - "y": 198.7999999999999, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 228.80000000000035, - "y": 98.8, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 278.80000000000035, - "y": 98.8, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 278.80000000000035, - "y": 198.7999999999999, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 228.80000000000035, - "y": 198.7999999999999, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 7, - "addWidth": 0.2, - "addDepth": 0.3 - }, - "pointList": [ - { - "pointX": 231.7, - "pointY": 98.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 231.7, - "pointY": 199.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 275.9, - "pointY": 199.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 275.9, - "pointY": 98.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 231.7, - "pointY": 98.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 237.7, - "pointY": 104.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 269.9, - "pointY": 104.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 269.9, - "pointY": 193.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 237.7, - "pointY": 193.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 237.7, - "pointY": 104.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 243.7, - "pointY": 110.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 263.9, - "pointY": 110.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 263.9, - "pointY": 187.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 243.7, - "pointY": 187.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 243.7, - "pointY": 110.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 249.7, - "pointY": 116.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 257.9, - "pointY": 116.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 257.9, - "pointY": 181.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 249.7, - "pointY": 181.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 249.7, - "pointY": 116.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 253.8, - "pointY": 120.4, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 253.8, - "pointY": 177.2, - "radius": 0, - "depth": 10.3, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 231.7, - "pointY": 98.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 231.7, - "pointY": 199.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 275.9, - "pointY": 199.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 275.9, - "pointY": 98.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 231.7, - "pointY": 98.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 237.7, - "pointY": 104.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 269.9, - "pointY": 104.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 269.9, - "pointY": 193.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 237.7, - "pointY": 193.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 237.7, - "pointY": 104.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 243.7, - "pointY": 110.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 263.9, - "pointY": 110.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 263.9, - "pointY": 187.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 243.7, - "pointY": 187.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 243.7, - "pointY": 110.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 249.7, - "pointY": 116.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 257.9, - "pointY": 116.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 257.9, - "pointY": 181.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 249.7, - "pointY": 181.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 249.7, - "pointY": 116.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 253.8, - "pointY": 120.4, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 253.8, - "pointY": 177.2, - "radius": 0, - "depth": 10.3, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 6, - "lineId": 1, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 10.3, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 278.80000000000035, - "y": 248.79999999999978, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 228.80000000000035, - "y": 248.79999999999978, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 278.80000000000035, - "y": 248.79999999999978, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 7, - "addWidth": 0.2, - "addDepth": 0.3 - }, - "pointList": [ - { - "pointX": 231.8, - "pointY": 248.8, - "radius": 22, - "depth": 10.3, - "curve": -0.9999999999999999 - }, - { - "pointX": 275.8, - "pointY": 248.8, - "radius": 22, - "depth": 10.3, - "curve": -0.9999999999999999 - }, - { - "pointX": 231.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 234.8, - "pointY": 248.8, - "radius": 19, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 272.8, - "pointY": 248.8, - "radius": 19, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 234.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 237.8, - "pointY": 248.8, - "radius": 16, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 269.8, - "pointY": 248.8, - "radius": 16, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 237.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 240.8, - "pointY": 248.8, - "radius": 13, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 266.8, - "pointY": 248.8, - "radius": 13, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 240.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 243.8, - "pointY": 248.8, - "radius": 10, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 263.8, - "pointY": 248.8, - "radius": 10, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 243.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 246.8, - "pointY": 248.8, - "radius": 7, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 260.8, - "pointY": 248.8, - "radius": 7, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 246.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 249.8, - "pointY": 248.8, - "radius": 4, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 257.8, - "pointY": 248.8, - "radius": 4, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 249.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 252.8, - "pointY": 248.8, - "radius": 1, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 254.8, - "pointY": 248.8, - "radius": 1, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 252.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.3, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 231.8, - "pointY": 248.8, - "radius": 22, - "depth": 10.3, - "curve": -0.9999999999999999 - }, - { - "pointX": 275.8, - "pointY": 248.8, - "radius": 22, - "depth": 10.3, - "curve": -0.9999999999999999 - }, - { - "pointX": 231.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 234.8, - "pointY": 248.8, - "radius": 19, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 272.8, - "pointY": 248.8, - "radius": 19, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 234.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 237.8, - "pointY": 248.8, - "radius": 16, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 269.8, - "pointY": 248.8, - "radius": 16, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 237.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 240.8, - "pointY": 248.8, - "radius": 13, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 266.8, - "pointY": 248.8, - "radius": 13, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 240.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 243.8, - "pointY": 248.8, - "radius": 10, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 263.8, - "pointY": 248.8, - "radius": 10, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 243.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 246.8, - "pointY": 248.8, - "radius": 7, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 260.8, - "pointY": 248.8, - "radius": 7, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 246.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 249.8, - "pointY": 248.8, - "radius": 4, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 257.8, - "pointY": 248.8, - "radius": 4, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 249.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 252.8, - "pointY": 248.8, - "radius": 1, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 254.8, - "pointY": 248.8, - "radius": 1, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 252.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.3, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - } - ], - "modelListFaceA": [ - { - "orderId": "", - "blockId": 0, - "modelId": 2, - "lineId": 1, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 10.15, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 148.80000000000024, - "y": 198.7999999999999, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.80000000000024, - "y": 98.8, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 198.80000000000035, - "y": 98.8, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 198.80000000000035, - "y": 198.7999999999999, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.80000000000024, - "y": 198.7999999999999, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 6, - "addWidth": 0.1, - "addDepth": 0.15 - }, - "pointList": [ - { - "pointX": 151.75, - "pointY": 98.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 151.75, - "pointY": 198.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 195.85, - "pointY": 198.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 195.85, - "pointY": 98.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 151.75, - "pointY": 98.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 157.75, - "pointY": 104.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 189.85, - "pointY": 104.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 189.85, - "pointY": 192.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 157.75, - "pointY": 192.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 157.75, - "pointY": 104.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 163.75, - "pointY": 110.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 183.85, - "pointY": 110.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 183.85, - "pointY": 186.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 163.75, - "pointY": 186.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 163.75, - "pointY": 110.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 169.75, - "pointY": 116.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 177.85, - "pointY": 116.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 177.85, - "pointY": 180.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 169.75, - "pointY": 180.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 169.75, - "pointY": 116.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 120.85, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 176.75, - "radius": 0, - "depth": 10.15, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 151.75, - "pointY": 98.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 151.75, - "pointY": 198.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 195.85, - "pointY": 198.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 195.85, - "pointY": 98.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 151.75, - "pointY": 98.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 157.75, - "pointY": 104.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 189.85, - "pointY": 104.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 189.85, - "pointY": 192.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 157.75, - "pointY": 192.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 157.75, - "pointY": 104.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 163.75, - "pointY": 110.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 183.85, - "pointY": 110.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 183.85, - "pointY": 186.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 163.75, - "pointY": 186.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 163.75, - "pointY": 110.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 169.75, - "pointY": 116.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 177.85, - "pointY": 116.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 177.85, - "pointY": 180.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 169.75, - "pointY": 180.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 169.75, - "pointY": 116.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 120.85, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 176.75, - "radius": 0, - "depth": 10.15, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 3, - "lineId": 1, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 10.15, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 198.80000000000035, - "y": 248.79999999999978, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 148.80000000000035, - "y": 248.79999999999978, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 198.80000000000035, - "y": 248.79999999999978, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 6, - "addWidth": 0.1, - "addDepth": 0.15 - }, - "pointList": [ - { - "pointX": 151.8, - "pointY": 248.8, - "radius": 22, - "depth": 10.15, - "curve": -0.9999999999999999 - }, - { - "pointX": 195.8, - "pointY": 248.8, - "radius": 22, - "depth": 10.15, - "curve": -0.9999999999999999 - }, - { - "pointX": 151.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 154.8, - "pointY": 248.8, - "radius": 19, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 192.8, - "pointY": 248.8, - "radius": 19, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 154.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 157.8, - "pointY": 248.8, - "radius": 16, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 189.8, - "pointY": 248.8, - "radius": 16, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 157.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 160.8, - "pointY": 248.8, - "radius": 13, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 186.8, - "pointY": 248.8, - "radius": 13, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 160.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 163.8, - "pointY": 248.8, - "radius": 10, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 183.8, - "pointY": 248.8, - "radius": 10, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 163.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 166.8, - "pointY": 248.8, - "radius": 7, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 180.8, - "pointY": 248.8, - "radius": 7, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 166.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 169.8, - "pointY": 248.8, - "radius": 4, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 177.8, - "pointY": 248.8, - "radius": 4, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 169.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 172.8, - "pointY": 248.8, - "radius": 1, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 174.8, - "pointY": 248.8, - "radius": 1, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 172.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 151.8, - "pointY": 248.8, - "radius": 22, - "depth": 10.15, - "curve": -0.9999999999999999 - }, - { - "pointX": 195.8, - "pointY": 248.8, - "radius": 22, - "depth": 10.15, - "curve": -0.9999999999999999 - }, - { - "pointX": 151.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 154.8, - "pointY": 248.8, - "radius": 19, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 192.8, - "pointY": 248.8, - "radius": 19, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 154.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 157.8, - "pointY": 248.8, - "radius": 16, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 189.8, - "pointY": 248.8, - "radius": 16, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 157.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 160.8, - "pointY": 248.8, - "radius": 13, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 186.8, - "pointY": 248.8, - "radius": 13, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 160.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 163.8, - "pointY": 248.8, - "radius": 10, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 183.8, - "pointY": 248.8, - "radius": 10, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 163.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 166.8, - "pointY": 248.8, - "radius": 7, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 180.8, - "pointY": 248.8, - "radius": 7, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 166.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 169.8, - "pointY": 248.8, - "radius": 4, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 177.8, - "pointY": 248.8, - "radius": 4, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 169.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 172.8, - "pointY": 248.8, - "radius": 1, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 174.8, - "pointY": 248.8, - "radius": 1, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 172.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.15, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 4, - "lineId": 1, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 216.85943181262843, - "y": 461.0828709383395, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 130.74056818737182, - "y": 461.0828709383395, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 216.85943181262843, - "y": 461.0828709383395, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 133.741, - "pointY": 461.083, - "radius": 40.059, - "depth": 2, - "curve": -0.9999999999999999 - }, - { - "pointX": 213.859, - "pointY": 461.083, - "radius": 40.059, - "depth": 2, - "curve": -0.9999999999999999 - }, - { - "pointX": 133.741, - "pointY": 461.083, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 136.741, - "pointY": 461.083, - "radius": 37.059, - "depth": 2, - "curve": 0.9999999999999999 - }, - { - "pointX": 210.859, - "pointY": 461.083, - "radius": 37.059, - "depth": 2, - "curve": 0.9999999999999999 - }, - { - "pointX": 136.741, - "pointY": 461.083, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 142.829, - "pointY": 463.429, - "radius": 31.059, - "depth": 2, - "curve": 0.19738859486115215 - }, - { - "pointX": 150.123, - "pointY": 440.981, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 154.631, - "pointY": 454.854, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 142.829, - "pointY": 463.429, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 140.614, - "pointY": 468.747, - "radius": 34.059, - "depth": 2, - "curve": 0.2773586187268363 - }, - { - "pointX": 151.457, - "pointY": 435.376, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 158.158, - "pointY": 456, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 140.614, - "pointY": 468.747, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 140.318, - "pointY": 468.962, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 158.158, - "pointY": 456, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.343, - "pointY": 435.028, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053616 - }, - { - "pointX": 155.96, - "pointY": 431.674, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 444.636, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 191.64, - "pointY": 431.674, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053599 - }, - { - "pointX": 196.257, - "pointY": 435.028, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 189.442, - "pointY": 456, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 207.282, - "pointY": 468.962, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053603 - }, - { - "pointX": 205.519, - "pointY": 474.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 183.467, - "pointY": 474.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 176.653, - "pointY": 495.361, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053646 - }, - { - "pointX": 170.947, - "pointY": 495.361, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.133, - "pointY": 474.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 142.081, - "pointY": 474.389, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053591 - }, - { - "pointX": 140.318, - "pointY": 468.962, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 133.741, - "pointY": 461.083, - "radius": 40.059, - "depth": 2, - "curve": -0.9999999999999999 - }, - { - "pointX": 213.859, - "pointY": 461.083, - "radius": 40.059, - "depth": 2, - "curve": -0.9999999999999999 - }, - { - "pointX": 133.741, - "pointY": 461.083, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 136.741, - "pointY": 461.083, - "radius": 37.059, - "depth": 2, - "curve": 0.9999999999999999 - }, - { - "pointX": 210.859, - "pointY": 461.083, - "radius": 37.059, - "depth": 2, - "curve": 0.9999999999999999 - }, - { - "pointX": 136.741, - "pointY": 461.083, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 142.829, - "pointY": 463.429, - "radius": 31.059, - "depth": 2, - "curve": 0.19738859486115215 - }, - { - "pointX": 150.123, - "pointY": 440.981, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 154.631, - "pointY": 454.854, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 142.829, - "pointY": 463.429, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 140.614, - "pointY": 468.747, - "radius": 34.059, - "depth": 2, - "curve": 0.2773586187268363 - }, - { - "pointX": 151.457, - "pointY": 435.376, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 158.158, - "pointY": 456, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 140.614, - "pointY": 468.747, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 140.318, - "pointY": 468.962, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 158.158, - "pointY": 456, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.343, - "pointY": 435.028, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053616 - }, - { - "pointX": 155.96, - "pointY": 431.674, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 444.636, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 191.64, - "pointY": 431.674, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053599 - }, - { - "pointX": 196.257, - "pointY": 435.028, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 189.442, - "pointY": 456, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 207.282, - "pointY": 468.962, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053603 - }, - { - "pointX": 205.519, - "pointY": 474.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 183.467, - "pointY": 474.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 176.653, - "pointY": 495.361, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053646 - }, - { - "pointX": 170.947, - "pointY": 495.361, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.133, - "pointY": 474.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 142.081, - "pointY": 474.389, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053591 - }, - { - "pointX": 140.318, - "pointY": 468.962, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 4, - "lineId": 2, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 216.85943181262843, - "y": 461.0828709383395, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 130.74056818737182, - "y": 461.0828709383395, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 216.85943181262843, - "y": 461.0828709383395, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 142.447, - "pointY": 474.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.133, - "pointY": 474.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 170.834, - "pointY": 495.013, - "radius": 34.059, - "depth": 2, - "curve": 0.2773586187268357 - }, - { - "pointX": 142.447, - "pointY": 474.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 147.365, - "pointY": 477.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 161.953, - "pointY": 477.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 166.461, - "pointY": 491.263, - "radius": 31.059, - "depth": 2, - "curve": 0.1973885948611515 - }, - { - "pointX": 147.365, - "pointY": 477.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 153.438, - "pointY": 480.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 159.773, - "pointY": 480.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 161.731, - "pointY": 486.414, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030140894 - }, - { - "pointX": 153.438, - "pointY": 480.389, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 142.447, - "pointY": 474.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.133, - "pointY": 474.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 170.834, - "pointY": 495.013, - "radius": 34.059, - "depth": 2, - "curve": 0.2773586187268357 - }, - { - "pointX": 142.447, - "pointY": 474.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 147.365, - "pointY": 477.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 161.953, - "pointY": 477.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 166.461, - "pointY": 491.263, - "radius": 31.059, - "depth": 2, - "curve": 0.1973885948611515 - }, - { - "pointX": 147.365, - "pointY": 477.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 153.438, - "pointY": 480.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 159.773, - "pointY": 480.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 161.731, - "pointY": 486.414, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030140894 - }, - { - "pointX": 153.438, - "pointY": 480.389, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 4, - "lineId": 3, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 216.85943181262843, - "y": 461.0828709383395, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 130.74056818737182, - "y": 461.0828709383395, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 216.85943181262843, - "y": 461.0828709383395, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 145.979, - "pointY": 457.432, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030140949 - }, - { - "pointX": 149.147, - "pointY": 447.683, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.104, - "pointY": 453.709, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 145.979, - "pointY": 457.432, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 145.979, - "pointY": 457.432, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030140949 - }, - { - "pointX": 149.147, - "pointY": 447.683, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.104, - "pointY": 453.709, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 145.979, - "pointY": 457.432, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 4, - "lineId": 4, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 216.85943181262843, - "y": 461.0828709383395, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 130.74056818737182, - "y": 461.0828709383395, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 216.85943181262843, - "y": 461.0828709383395, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 156.256, - "pointY": 431.889, - "radius": 34.059, - "depth": 2, - "curve": 0.2773586187268329 - }, - { - "pointX": 191.344, - "pointY": 431.889, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 444.636, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 156.256, - "pointY": 431.889, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 161.998, - "pointY": 432.353, - "radius": 31.059, - "depth": 2, - "curve": 0.19738859486114835 - }, - { - "pointX": 185.602, - "pointY": 432.353, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 440.927, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 161.998, - "pointY": 432.353, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 168.675, - "pointY": 433.495, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030140479 - }, - { - "pointX": 178.925, - "pointY": 433.495, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 437.219, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 168.675, - "pointY": 433.495, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 156.256, - "pointY": 431.889, - "radius": 34.059, - "depth": 2, - "curve": 0.2773586187268329 - }, - { - "pointX": 191.344, - "pointY": 431.889, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 444.636, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 156.256, - "pointY": 431.889, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 161.998, - "pointY": 432.353, - "radius": 31.059, - "depth": 2, - "curve": 0.19738859486114835 - }, - { - "pointX": 185.602, - "pointY": 432.353, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 440.927, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 161.998, - "pointY": 432.353, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 168.675, - "pointY": 433.495, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030140479 - }, - { - "pointX": 178.925, - "pointY": 433.495, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 437.219, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 168.675, - "pointY": 433.495, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 4, - "lineId": 5, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 216.85943181262843, - "y": 461.0828709383395, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 130.74056818737182, - "y": 461.0828709383395, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 216.85943181262843, - "y": 461.0828709383395, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 189.442, - "pointY": 456, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.143, - "pointY": 435.376, - "radius": 34.059, - "depth": 2, - "curve": 0.2773586187268338 - }, - { - "pointX": 206.986, - "pointY": 468.747, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 189.442, - "pointY": 456, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 192.969, - "pointY": 454.854, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 197.477, - "pointY": 440.981, - "radius": 31.059, - "depth": 2, - "curve": 0.19738859486114949 - }, - { - "pointX": 204.771, - "pointY": 463.429, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 192.969, - "pointY": 454.854, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.496, - "pointY": 453.709, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 198.453, - "pointY": 447.683, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030140658 - }, - { - "pointX": 201.621, - "pointY": 457.432, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.496, - "pointY": 453.709, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 189.442, - "pointY": 456, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.143, - "pointY": 435.376, - "radius": 34.059, - "depth": 2, - "curve": 0.2773586187268338 - }, - { - "pointX": 206.986, - "pointY": 468.747, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 189.442, - "pointY": 456, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 192.969, - "pointY": 454.854, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 197.477, - "pointY": 440.981, - "radius": 31.059, - "depth": 2, - "curve": 0.19738859486114949 - }, - { - "pointX": 204.771, - "pointY": 463.429, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 192.969, - "pointY": 454.854, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.496, - "pointY": 453.709, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 198.453, - "pointY": 447.683, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030140658 - }, - { - "pointX": 201.621, - "pointY": 457.432, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.496, - "pointY": 453.709, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 4, - "lineId": 6, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 216.85943181262843, - "y": 461.0828709383395, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 130.74056818737182, - "y": 461.0828709383395, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 216.85943181262843, - "y": 461.0828709383395, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 183.467, - "pointY": 474.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 205.153, - "pointY": 474.389, - "radius": 34.059, - "depth": 2, - "curve": 0.2773586187268312 - }, - { - "pointX": 176.766, - "pointY": 495.013, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 183.467, - "pointY": 474.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 185.647, - "pointY": 477.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 200.235, - "pointY": 477.389, - "radius": 31.059, - "depth": 2, - "curve": 0.19738859486114727 - }, - { - "pointX": 181.139, - "pointY": 491.263, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 185.647, - "pointY": 477.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 187.827, - "pointY": 480.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 194.162, - "pointY": 480.389, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030140522 - }, - { - "pointX": 185.869, - "pointY": 486.414, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 187.827, - "pointY": 480.389, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 183.467, - "pointY": 474.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 205.153, - "pointY": 474.389, - "radius": 34.059, - "depth": 2, - "curve": 0.2773586187268312 - }, - { - "pointX": 176.766, - "pointY": 495.013, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 183.467, - "pointY": 474.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 185.647, - "pointY": 477.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 200.235, - "pointY": 477.389, - "radius": 31.059, - "depth": 2, - "curve": 0.19738859486114727 - }, - { - "pointX": 181.139, - "pointY": 491.263, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 185.647, - "pointY": 477.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 187.827, - "pointY": 480.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 194.162, - "pointY": 480.389, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030140522 - }, - { - "pointX": 185.869, - "pointY": 486.414, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 187.827, - "pointY": 480.389, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - } - ], - "modelListFaceB": [ - { - "orderId": "", - "blockId": 0, - "modelId": 1, - "lineId": 1, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 132.84804678663346, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.4903010084442, - "y": 526.2470588337941, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 199.1096989915565, - "y": 526.2470588337942, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 214.75195321336713, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 173.80000000000035, - "y": 604.1423027509678, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 132.84804678663346, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 136.375, - "pointY": 573.243, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 600.434, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 211.225, - "pointY": 573.243, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.93, - "pointY": 529.247, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 150.67, - "pointY": 529.247, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 136.375, - "pointY": 573.243, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 136.375, - "pointY": 573.243, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 600.434, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 211.225, - "pointY": 573.243, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.93, - "pointY": 529.247, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 150.67, - "pointY": 529.247, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 136.375, - "pointY": 573.243, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 1, - "lineId": 2, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 132.84804678663346, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.4903010084442, - "y": 526.2470588337941, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 199.1096989915565, - "y": 526.2470588337942, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 214.75195321336713, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 173.80000000000035, - "y": 604.1423027509678, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 132.84804678663346, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 142.081, - "pointY": 574.389, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053597 - }, - { - "pointX": 140.318, - "pointY": 568.962, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 158.158, - "pointY": 556, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.343, - "pointY": 535.028, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053655 - }, - { - "pointX": 155.96, - "pointY": 531.674, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 544.636, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 191.64, - "pointY": 531.674, - "radius": 3, - "depth": 2, - "curve": 0.726542528005359 - }, - { - "pointX": 196.257, - "pointY": 535.028, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 189.442, - "pointY": 556, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 207.282, - "pointY": 568.962, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053639 - }, - { - "pointX": 205.519, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 183.467, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 176.653, - "pointY": 595.361, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053636 - }, - { - "pointX": 170.947, - "pointY": 595.361, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.133, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 142.081, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 143.056, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.133, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 170.646, - "pointY": 594.434, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 143.056, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 142.081, - "pointY": 574.389, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053597 - }, - { - "pointX": 140.318, - "pointY": 568.962, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 158.158, - "pointY": 556, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.343, - "pointY": 535.028, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053655 - }, - { - "pointX": 155.96, - "pointY": 531.674, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 544.636, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 191.64, - "pointY": 531.674, - "radius": 3, - "depth": 2, - "curve": 0.726542528005359 - }, - { - "pointX": 196.257, - "pointY": 535.028, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 189.442, - "pointY": 556, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 207.282, - "pointY": 568.962, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053639 - }, - { - "pointX": 205.519, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 183.467, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 176.653, - "pointY": 595.361, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053636 - }, - { - "pointX": 170.947, - "pointY": 595.361, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.133, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 142.081, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 143.056, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.133, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 170.646, - "pointY": 594.434, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 143.056, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 1, - "lineId": 3, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 132.84804678663346, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.4903010084442, - "y": 526.2470588337941, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 199.1096989915565, - "y": 526.2470588337942, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 214.75195321336713, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 173.80000000000035, - "y": 604.1423027509678, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 132.84804678663346, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 141.106, - "pointY": 568.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.645, - "pointY": 535.955, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 158.158, - "pointY": 556, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 141.106, - "pointY": 568.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 146.813, - "pointY": 560.535, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.645, - "pointY": 545.663, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 154.631, - "pointY": 554.854, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 146.813, - "pointY": 560.535, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 141.106, - "pointY": 568.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.645, - "pointY": 535.955, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 158.158, - "pointY": 556, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 141.106, - "pointY": 568.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 146.813, - "pointY": 560.535, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.645, - "pointY": 545.663, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 154.631, - "pointY": 554.854, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 146.813, - "pointY": 560.535, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 1, - "lineId": 4, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 132.84804678663346, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.4903010084442, - "y": 526.2470588337941, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 199.1096989915565, - "y": 526.2470588337942, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 214.75195321336713, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 173.80000000000035, - "y": 604.1423027509678, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 132.84804678663346, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 152.289, - "pointY": 577.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 161.953, - "pointY": 577.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.939, - "pointY": 586.58, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 152.289, - "pointY": 577.389, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 152.289, - "pointY": 577.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 161.953, - "pointY": 577.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.939, - "pointY": 586.58, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 152.289, - "pointY": 577.389, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 1, - "lineId": 5, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 132.84804678663346, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.4903010084442, - "y": 526.2470588337941, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 199.1096989915565, - "y": 526.2470588337942, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 214.75195321336713, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 173.80000000000035, - "y": 604.1423027509678, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 132.84804678663346, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 176.954, - "pointY": 594.434, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 183.467, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 204.544, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 176.954, - "pointY": 594.434, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 182.661, - "pointY": 586.58, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 185.647, - "pointY": 577.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 195.311, - "pointY": 577.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 182.661, - "pointY": 586.58, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 176.954, - "pointY": 594.434, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 183.467, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 204.544, - "pointY": 574.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 176.954, - "pointY": 594.434, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 182.661, - "pointY": 586.58, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 185.647, - "pointY": 577.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 195.311, - "pointY": 577.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 182.661, - "pointY": 586.58, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 1, - "lineId": 6, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 132.84804678663346, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.4903010084442, - "y": 526.2470588337941, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 199.1096989915565, - "y": 526.2470588337942, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 214.75195321336713, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 173.80000000000035, - "y": 604.1423027509678, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 132.84804678663346, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 189.442, - "pointY": 556, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 195.955, - "pointY": 535.955, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 206.494, - "pointY": 568.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 189.442, - "pointY": 556, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 192.969, - "pointY": 554.854, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 195.955, - "pointY": 545.663, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 200.787, - "pointY": 560.535, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 192.969, - "pointY": 554.854, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 189.442, - "pointY": 556, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 195.955, - "pointY": 535.955, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 206.494, - "pointY": 568.389, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 189.442, - "pointY": 556, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 192.969, - "pointY": 554.854, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 195.955, - "pointY": 545.663, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 200.787, - "pointY": 560.535, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 192.969, - "pointY": 554.854, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 1, - "lineId": 7, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 132.84804678663346, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.4903010084442, - "y": 526.2470588337941, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 199.1096989915565, - "y": 526.2470588337942, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 214.75195321336713, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 173.80000000000035, - "y": 604.1423027509678, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 132.84804678663346, - "y": 574.388967136571, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 165.982, - "pointY": 535.247, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 181.618, - "pointY": 535.247, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 540.927, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 165.982, - "pointY": 535.247, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 156.749, - "pointY": 532.247, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 190.851, - "pointY": 532.247, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 544.636, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 156.749, - "pointY": 532.247, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 165.982, - "pointY": 535.247, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 181.618, - "pointY": 535.247, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 540.927, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 165.982, - "pointY": 535.247, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 156.749, - "pointY": 532.247, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 190.851, - "pointY": 532.247, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 544.636, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 156.749, - "pointY": 532.247, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 5, - "lineId": 1, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 10.3, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 228.80000000000035, - "y": 198.7999999999999, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 228.80000000000035, - "y": 98.8, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 278.80000000000035, - "y": 98.8, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 278.80000000000035, - "y": 198.7999999999999, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 228.80000000000035, - "y": 198.7999999999999, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 7, - "addWidth": 0.2, - "addDepth": 0.3 - }, - "pointList": [ - { - "pointX": 231.7, - "pointY": 98.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 231.7, - "pointY": 199.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 275.9, - "pointY": 199.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 275.9, - "pointY": 98.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 231.7, - "pointY": 98.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 237.7, - "pointY": 104.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 269.9, - "pointY": 104.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 269.9, - "pointY": 193.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 237.7, - "pointY": 193.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 237.7, - "pointY": 104.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 243.7, - "pointY": 110.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 263.9, - "pointY": 110.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 263.9, - "pointY": 187.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 243.7, - "pointY": 187.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 243.7, - "pointY": 110.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 249.7, - "pointY": 116.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 257.9, - "pointY": 116.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 257.9, - "pointY": 181.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 249.7, - "pointY": 181.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 249.7, - "pointY": 116.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 253.8, - "pointY": 120.4, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 253.8, - "pointY": 177.2, - "radius": 0, - "depth": 10.3, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 231.7, - "pointY": 98.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 231.7, - "pointY": 199.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 275.9, - "pointY": 199.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 275.9, - "pointY": 98.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 231.7, - "pointY": 98.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 237.7, - "pointY": 104.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 269.9, - "pointY": 104.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 269.9, - "pointY": 193.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 237.7, - "pointY": 193.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 237.7, - "pointY": 104.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 243.7, - "pointY": 110.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 263.9, - "pointY": 110.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 263.9, - "pointY": 187.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 243.7, - "pointY": 187.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 243.7, - "pointY": 110.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 249.7, - "pointY": 116.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 257.9, - "pointY": 116.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 257.9, - "pointY": 181.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 249.7, - "pointY": 181.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 249.7, - "pointY": 116.3, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 253.8, - "pointY": 120.4, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 253.8, - "pointY": 177.2, - "radius": 0, - "depth": 10.3, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 6, - "lineId": 1, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 10.3, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 278.80000000000035, - "y": 248.79999999999978, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 228.80000000000035, - "y": 248.79999999999978, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 278.80000000000035, - "y": 248.79999999999978, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 7, - "addWidth": 0.2, - "addDepth": 0.3 - }, - "pointList": [ - { - "pointX": 231.8, - "pointY": 248.8, - "radius": 22, - "depth": 10.3, - "curve": -0.9999999999999999 - }, - { - "pointX": 275.8, - "pointY": 248.8, - "radius": 22, - "depth": 10.3, - "curve": -0.9999999999999999 - }, - { - "pointX": 231.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 234.8, - "pointY": 248.8, - "radius": 19, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 272.8, - "pointY": 248.8, - "radius": 19, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 234.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 237.8, - "pointY": 248.8, - "radius": 16, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 269.8, - "pointY": 248.8, - "radius": 16, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 237.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 240.8, - "pointY": 248.8, - "radius": 13, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 266.8, - "pointY": 248.8, - "radius": 13, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 240.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 243.8, - "pointY": 248.8, - "radius": 10, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 263.8, - "pointY": 248.8, - "radius": 10, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 243.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 246.8, - "pointY": 248.8, - "radius": 7, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 260.8, - "pointY": 248.8, - "radius": 7, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 246.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 249.8, - "pointY": 248.8, - "radius": 4, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 257.8, - "pointY": 248.8, - "radius": 4, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 249.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 252.8, - "pointY": 248.8, - "radius": 1, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 254.8, - "pointY": 248.8, - "radius": 1, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 252.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.3, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 231.8, - "pointY": 248.8, - "radius": 22, - "depth": 10.3, - "curve": -0.9999999999999999 - }, - { - "pointX": 275.8, - "pointY": 248.8, - "radius": 22, - "depth": 10.3, - "curve": -0.9999999999999999 - }, - { - "pointX": 231.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 234.8, - "pointY": 248.8, - "radius": 19, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 272.8, - "pointY": 248.8, - "radius": 19, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 234.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 237.8, - "pointY": 248.8, - "radius": 16, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 269.8, - "pointY": 248.8, - "radius": 16, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 237.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 240.8, - "pointY": 248.8, - "radius": 13, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 266.8, - "pointY": 248.8, - "radius": 13, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 240.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 243.8, - "pointY": 248.8, - "radius": 10, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 263.8, - "pointY": 248.8, - "radius": 10, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 243.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 246.8, - "pointY": 248.8, - "radius": 7, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 260.8, - "pointY": 248.8, - "radius": 7, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 246.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 249.8, - "pointY": 248.8, - "radius": 4, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 257.8, - "pointY": 248.8, - "radius": 4, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 249.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 252.8, - "pointY": 248.8, - "radius": 1, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 254.8, - "pointY": 248.8, - "radius": 1, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 252.8, - "pointY": 248.8, - "radius": 0, - "depth": 10.3, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - } - ], - "modelListThrough": [], - "modelListSide": [], - "thickness": 18, - "isUnRegular": true, - "bigHoleInFaceA": false, - "holeCountFront": 0, - "holeCountBack": 0, - "holeCountThrough": 0, - "holeCountSide": 0, - "holeCountLeft": 0, - "holeCountRight": 0, - "holeCountTop": 0, - "holeCountBottom": 0, - "holeCountBevelled": 0, - "modelCountFront": 8, - "modelCountBack": 9, - "modelCountThrough": 0, - "hasModelThrogh": false, - "isTwoFaceProcess": false, - "placeStyleFront": 0, - "placeStyleFrontReverse": 1, - "placeStyleBack": 4, - "placeStyleBackReverse": 7, - "labelPosX": -1, - "labelPosY": -1, - "isInited": false, - "isChecked": false, - "isOffsetRounding": true, - "offsetKnifeRadius": 3, - "isUseSameKnifeToHelpCut": false, - "useSameKnifeToHelpCutGap": 0, - "preMillingExpandSize": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0, - "width": 0, - "length": 0 - }, - "modelExpandSize": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0, - "width": 0, - "length": 0 - }, - "vKnifeModelExpandSize": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0, - "width": 0, - "length": 0 - }, - "sameKnfieHelpExpandSize": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0, - "width": 0, - "length": 0 - }, - "currentSizeExpand": { - "left": 3.005, - "right": 3.005, - "top": 3.005, - "bottom": 3.005, - "width": 6.01, - "length": 6.01 - }, - "borderContour": { - "placeStyle": 0, - "borderFinal": [ - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 705.342 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 50 - }, - "tagData": 1, - "tagData2": 0, - "m_Length": 655.342 - }, - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 50 - }, - "m_EndPoint": { - "m_X": 50, - "m_Y": 0 - }, - "tagData": 1, - "tagData2": 0, - "m_Center": { - "m_X": 50.00000000000003, - "m_Y": 50.000000000000014 - }, - "m_Radius": 50.00000000000002, - "m_StartAngle": 3.141592653589793, - "m_EndAngle": 4.712388980384689, - "m_AllAngle": 1.5707963267948957, - "m_Bul": 0.41421356237309476 - }, - { - "m_StartPoint": { - "m_X": 50, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 350, - "m_Y": 0 - }, - "tagData": 1, - "tagData2": 0, - "m_Length": 300 - }, - { - "m_StartPoint": { - "m_X": 350, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 350, - "m_Y": 705.342 - }, - "tagData": 0, - "tagData2": 0, - "m_Length": 705.342 - }, - { - "m_StartPoint": { - "m_X": 350, - "m_Y": 705.342 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 705.342 - }, - "tagData": 0, - "tagData2": 0, - "m_Length": 350 - } - ], - "borderOrg": [ - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 703.542 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 48.8 - }, - "tagData": 0, - "tagData2": 0, - "m_Length": 654.7420000000001 - }, - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 48.8 - }, - "m_EndPoint": { - "m_X": 48.8, - "m_Y": 0 - }, - "tagData": 0, - "tagData2": 0, - "m_Center": { - "m_X": 48.800000000000026, - "m_Y": 48.80000000000001 - }, - "m_Radius": 48.80000000000001, - "m_StartAngle": 3.141592653589793, - "m_EndAngle": 4.712388980384689, - "m_AllAngle": 1.5707963267948957, - "m_Bul": 0.41421356237309476 - }, - { - "m_StartPoint": { - "m_X": 48.8, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 348.2, - "m_Y": 0 - }, - "tagData": 0, - "tagData2": 0, - "m_Length": 299.4 - }, - { - "m_StartPoint": { - "m_X": 348.2, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 348.2, - "m_Y": 703.542 - }, - "tagData": 0, - "tagData2": 0, - "m_Length": 703.542 - } - ], - "borderPreMilling": [ - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 703.542 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 48.8 - }, - "tagData": 0, - "tagData2": 0, - "m_Length": 654.7420000000001 - }, - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 48.8 - }, - "m_EndPoint": { - "m_X": 48.8, - "m_Y": 0 - }, - "tagData": 0, - "tagData2": 0, - "m_Center": { - "m_X": 48.800000000000026, - "m_Y": 48.80000000000001 - }, - "m_Radius": 48.80000000000001, - "m_StartAngle": 3.141592653589793, - "m_EndAngle": 4.712388980384689, - "m_AllAngle": 1.5707963267948957, - "m_Bul": 0.41421356237309476 - }, - { - "m_StartPoint": { - "m_X": 48.8, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 348.2, - "m_Y": 0 - }, - "tagData": 0, - "tagData2": 0, - "m_Length": 299.4 - }, - { - "m_StartPoint": { - "m_X": 348.2, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 348.2, - "m_Y": 703.542 - }, - "tagData": 0, - "tagData2": 0, - "m_Length": 703.542 - } - ], - "polylineOrg": { - "_isErase": false, - "IsEmbedEntity": false, - "OnlyRenderType": true, - "HasEdgeRenderType": false, - "HasPlaceFaceRenderType": false, - "HasBigHoleFaceRenderType": false, - "_CacheDrawObject": {}, - "_Color": 7, - "_Matrix": { - "elements": [ - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1 - ] - }, - "_SpaceOCS": { - "elements": [ - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1 - ] - }, - "_Visible": true, - "_VisibleInRender": true, - "_Freeze": false, - "_LockMaterial": false, - "__ProcessingGroupList": [], - "NeedUpdateFlag": 0, - "AutoUpdate": true, - "__UpdateVersion__": 1, - "_RoomName": "", - "_CabinetName": "", - "_LineData": [ - { - "pt": { - "x": 0, - "y": 703.542 - }, - "bul": 0 - }, - { - "pt": { - "x": 0, - "y": 48.8 - }, - "bul": 0.41421356237309476 - }, - { - "pt": { - "x": 48.8, - "y": 0 - }, - "bul": 0 - }, - { - "pt": { - "x": 348.2, - "y": 0 - }, - "bul": 0 - } - ], - "_DisplayAccuracy": 0, - "_ClosedMark": true - }, - "border": [ - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 703.542 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 48.8 - }, - "tagData": 0, - "tagData2": 0, - "m_Length": 654.7420000000001 - }, - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 48.8 - }, - "m_EndPoint": { - "m_X": 48.8, - "m_Y": 0 - }, - "tagData": 0, - "tagData2": 0, - "m_Center": { - "m_X": 48.800000000000026, - "m_Y": 48.80000000000001 - }, - "m_Radius": 48.80000000000001, - "m_StartAngle": 3.141592653589793, - "m_EndAngle": 4.712388980384689, - "m_AllAngle": 1.5707963267948957, - "m_Bul": 0.41421356237309476 - }, - { - "m_StartPoint": { - "m_X": 48.8, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 348.2, - "m_Y": 0 - }, - "tagData": 0, - "tagData2": 0, - "m_Length": 299.4 - }, - { - "m_StartPoint": { - "m_X": 348.2, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 348.2, - "m_Y": 703.542 - }, - "tagData": 0, - "tagData2": 0, - "m_Length": 703.542 - } - ], - "borderSameKnifeHelpCut": null, - "cutLines": null, - "cutLinesSameKnifeHelpCut": null, - "borderMoving": null, - "borderModelThrough": [], - "borderModelThroughR": [], - "cutLinesModelThrough": [], - "borderInnerPlace": [], - "blockInnerSpace": [], - "blockOuterSpace": null, - "polylines2vModel": [], - "polylinesOutModel": [ - { - "_isErase": false, - "IsEmbedEntity": false, - "OnlyRenderType": true, - "HasEdgeRenderType": false, - "HasPlaceFaceRenderType": false, - "HasBigHoleFaceRenderType": false, - "_CacheDrawObject": {}, - "_Color": 7, - "_Matrix": { - "elements": [ - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1 - ] - }, - "_SpaceOCS": { - "elements": [ - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1 - ] - }, - "_Visible": true, - "_VisibleInRender": true, - "_Freeze": false, - "_LockMaterial": false, - "__ProcessingGroupList": [], - "NeedUpdateFlag": 0, - "AutoUpdate": true, - "__UpdateVersion__": 1, - "_RoomName": "", - "_CabinetName": "", - "_LineData": [ - { - "pt": { - "x": 228.7, - "y": 95.3 - }, - "bul": 0 - }, - { - "pt": { - "x": 278.9, - "y": 95.3 - }, - "bul": 0 - }, - { - "pt": { - "x": 278.9, - "y": 202.3 - }, - "bul": 0 - }, - { - "pt": { - "x": 228.7, - "y": 202.3 - }, - "bul": 0 - } - ], - "_DisplayAccuracy": 0, - "_ClosedMark": true - } - ], - "placeContours": [] - }, - "remarkParams": {} - }, - "orderId": "1907276351086264320", - "goodsId": "BD10010006", - "roomId": 0, - "bodyId": 0, - "blockId": "1907276518380273665", - "oldBlockId": "1907276518380273665", - "blockNo": "25044454400", - "customPlateNo": "F007 - R001 - C001 - P001", - "labelNo": "", - "blockName": "顶板2", - "plateRemark": "前边封厚边", - "remark1": "", - "remark2": "", - "remark3": "", - "remark4": "", - "remark5": "", - "extraRemark": {}, - "width": 350, - "length": 705.342, - "thickness": 18, - "area": 0.247, - "sealLeft": 0, - "sealRight": 0, - "sealTop": 0, - "sealBottom": 0, - "cutWidth": 350, - "cutLength": 705.342, - "cutArea": 0.24686969999999997, - "isAdditionalBlock": false, - "isRemainBlock": false, - "texture": 0, - "placeHole": 1, - "isUnRegular": true, - "isTurnFaceToPlace": true, - "isTwoFaceToPlace": false, - "isCurvedGroundLine": false, - "isPlaced": false, - "fullBoardId": 0, - "boardId": 0, - "placeId": 0, - "placeX": 0, - "placeY": 0, - "placeStyle": 0, - "cutRegion": 0, - "cutOrder": 0, - "cutPointId": 0, - "placeWidth": 0, - "placeLength": 0, - "placeSealLeft": 0, - "placeSealRight": 0, - "placeSealTop": 0, - "placeSealBottom": 0, - "orgSizeExpand": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0, - "width": 0, - "length": 0 - }, - "placeOffX": 0, - "placeOffY": 0, - "isAutoPlaced": true, - "isOutBoard": false, - "isOverlap": false, - "placeDirection": "→", - "placeDirection_Length": "→", - "isDrilling": true, - "isModeling": true, - "overBlockFlag": 0, - "isCutOtherFace": false, - "isCutTurnOver": false, - "holeCountSideLeft": 0, - "holeCountSideRight": 0, - "holeCountSideTop": 0, - "holeCountSideBottom": 0, - "holeListFaceA": [], - "holeListFaceB": [], - "modelListFaceA": [], - "modelListFaceB": [], - "labelPosX": 0, - "labelPosY": 0, - "isCncLabelA": false, - "isCncLabelB": false, - "isCncLabelTurnOver": false, - "type": 2, - "openDoorType": 0, - "_blockId": "1907276518380273665" - }, - { - "blockDetail": { - "organId": 0, - "blockId": "1907276518397050890", - "pointDetail": [], - "modelDetail": [], - "holeDetail": [], - "offsetX": 1.2, - "offsetY": 0.6, - "cutWidth": 498.2, - "cutLength": 798.2, - "points": [], - "orgPoints": [], - "orgContourData": null, - "holes": [], - "holeListFaceA": [], - "holeListFaceB": [], - "holeListThrough": [], - "holeListSide": [], - "models": [ - { - "orderId": "", - "blockId": 0, - "modelId": 1, - "lineId": 1, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 132.84804678663306, - "y": 129.15333561439746, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 173.7999999999998, - "y": 99.4, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 214.75195321336662, - "y": 129.15333561439692, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 199.1096989915563, - "y": 177.29524391717393, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.49030100844396, - "y": 177.29524391717422, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 132.84804678663306, - "y": 129.15333561439746, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 136.375, - "pointY": 130.299, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 150.67, - "pointY": 174.295, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.93, - "pointY": 174.295, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 211.225, - "pointY": 130.299, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 103.108, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 136.375, - "pointY": 130.299, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 136.375, - "pointY": 130.299, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 150.67, - "pointY": 174.295, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.93, - "pointY": 174.295, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 211.225, - "pointY": 130.299, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 103.108, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 136.375, - "pointY": 130.299, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 1, - "lineId": 2, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 132.84804678663306, - "y": 129.15333561439746, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 173.7999999999998, - "y": 99.4, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 214.75195321336662, - "y": 129.15333561439692, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 199.1096989915563, - "y": 177.29524391717393, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.49030100844396, - "y": 177.29524391717422, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 132.84804678663306, - "y": 129.15333561439746, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 142.081, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.133, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 170.947, - "pointY": 108.181, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053626 - }, - { - "pointX": 176.653, - "pointY": 108.181, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 183.467, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 205.519, - "pointY": 129.153, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053591 - }, - { - "pointX": 207.282, - "pointY": 134.58, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 189.442, - "pointY": 147.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.257, - "pointY": 168.514, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053571 - }, - { - "pointX": 191.64, - "pointY": 171.868, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 158.907, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 155.96, - "pointY": 171.868, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053641 - }, - { - "pointX": 151.343, - "pointY": 168.514, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 158.158, - "pointY": 147.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 140.318, - "pointY": 134.58, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053626 - }, - { - "pointX": 142.081, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 143.056, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 170.646, - "pointY": 109.108, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.133, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 143.056, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 142.081, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.133, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 170.947, - "pointY": 108.181, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053626 - }, - { - "pointX": 176.653, - "pointY": 108.181, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 183.467, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 205.519, - "pointY": 129.153, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053591 - }, - { - "pointX": 207.282, - "pointY": 134.58, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 189.442, - "pointY": 147.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.257, - "pointY": 168.514, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053571 - }, - { - "pointX": 191.64, - "pointY": 171.868, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 158.907, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 155.96, - "pointY": 171.868, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053641 - }, - { - "pointX": 151.343, - "pointY": 168.514, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 158.158, - "pointY": 147.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 140.318, - "pointY": 134.58, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053626 - }, - { - "pointX": 142.081, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 143.056, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 170.646, - "pointY": 109.108, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.133, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 143.056, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 1, - "lineId": 3, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 132.84804678663306, - "y": 129.15333561439746, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 173.7999999999998, - "y": 99.4, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 214.75195321336662, - "y": 129.15333561439692, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 199.1096989915563, - "y": 177.29524391717393, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.49030100844396, - "y": 177.29524391717422, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 132.84804678663306, - "y": 129.15333561439746, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 141.106, - "pointY": 135.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 158.158, - "pointY": 147.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.645, - "pointY": 167.587, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 141.106, - "pointY": 135.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 146.813, - "pointY": 143.007, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 154.631, - "pointY": 148.688, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.645, - "pointY": 157.879, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 146.813, - "pointY": 143.007, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 141.106, - "pointY": 135.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 158.158, - "pointY": 147.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.645, - "pointY": 167.587, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 141.106, - "pointY": 135.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 146.813, - "pointY": 143.007, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 154.631, - "pointY": 148.688, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.645, - "pointY": 157.879, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 146.813, - "pointY": 143.007, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 1, - "lineId": 4, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 132.84804678663306, - "y": 129.15333561439746, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 173.7999999999998, - "y": 99.4, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 214.75195321336662, - "y": 129.15333561439692, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 199.1096989915563, - "y": 177.29524391717393, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.49030100844396, - "y": 177.29524391717422, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 132.84804678663306, - "y": 129.15333561439746, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 152.289, - "pointY": 126.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.939, - "pointY": 116.962, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 161.953, - "pointY": 126.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 152.289, - "pointY": 126.153, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 152.289, - "pointY": 126.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.939, - "pointY": 116.962, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 161.953, - "pointY": 126.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 152.289, - "pointY": 126.153, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 1, - "lineId": 5, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 132.84804678663306, - "y": 129.15333561439746, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 173.7999999999998, - "y": 99.4, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 214.75195321336662, - "y": 129.15333561439692, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 199.1096989915563, - "y": 177.29524391717393, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.49030100844396, - "y": 177.29524391717422, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 132.84804678663306, - "y": 129.15333561439746, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 176.954, - "pointY": 109.108, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 204.544, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 183.467, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 176.954, - "pointY": 109.108, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 182.661, - "pointY": 116.962, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 195.311, - "pointY": 126.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 185.647, - "pointY": 126.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 182.661, - "pointY": 116.962, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 176.954, - "pointY": 109.108, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 204.544, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 183.467, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 176.954, - "pointY": 109.108, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 182.661, - "pointY": 116.962, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 195.311, - "pointY": 126.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 185.647, - "pointY": 126.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 182.661, - "pointY": 116.962, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 1, - "lineId": 6, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 132.84804678663306, - "y": 129.15333561439746, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 173.7999999999998, - "y": 99.4, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 214.75195321336662, - "y": 129.15333561439692, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 199.1096989915563, - "y": 177.29524391717393, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.49030100844396, - "y": 177.29524391717422, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 132.84804678663306, - "y": 129.15333561439746, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 189.442, - "pointY": 147.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 206.494, - "pointY": 135.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 195.955, - "pointY": 167.587, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 189.442, - "pointY": 147.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 192.969, - "pointY": 148.688, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 200.787, - "pointY": 143.007, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 195.955, - "pointY": 157.879, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 192.969, - "pointY": 148.688, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 189.442, - "pointY": 147.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 206.494, - "pointY": 135.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 195.955, - "pointY": 167.587, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 189.442, - "pointY": 147.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 192.969, - "pointY": 148.688, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 200.787, - "pointY": 143.007, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 195.955, - "pointY": 157.879, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 192.969, - "pointY": 148.688, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 1, - "lineId": 7, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 132.84804678663306, - "y": 129.15333561439746, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 173.7999999999998, - "y": 99.4, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 214.75195321336662, - "y": 129.15333561439692, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 199.1096989915563, - "y": 177.29524391717393, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.49030100844396, - "y": 177.29524391717422, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 132.84804678663306, - "y": 129.15333561439746, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 165.982, - "pointY": 168.295, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 162.615, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 181.618, - "pointY": 168.295, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 165.982, - "pointY": 168.295, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 156.749, - "pointY": 171.295, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 158.907, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 190.851, - "pointY": 171.295, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 156.749, - "pointY": 171.295, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 165.982, - "pointY": 168.295, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 162.615, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 181.618, - "pointY": 168.295, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 165.982, - "pointY": 168.295, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 156.749, - "pointY": 171.295, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 158.907, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 190.851, - "pointY": 171.295, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 156.749, - "pointY": 171.295, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 2, - "lineId": 1, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 10.15, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 148.79999999999987, - "y": 504.7423027509691, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 198.80000000000007, - "y": 504.7423027509692, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 198.80000000000047, - "y": 604.7423027509692, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.80000000000024, - "y": 604.7423027509692, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.79999999999987, - "y": 504.7423027509691, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 6, - "addWidth": 0.1, - "addDepth": 0.15 - }, - "pointList": [ - { - "pointX": 151.75, - "pointY": 504.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 151.75, - "pointY": 604.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 195.85, - "pointY": 604.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 195.85, - "pointY": 504.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 151.75, - "pointY": 504.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 157.75, - "pointY": 510.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 189.85, - "pointY": 510.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 189.85, - "pointY": 598.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 157.75, - "pointY": 598.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 157.75, - "pointY": 510.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 163.75, - "pointY": 516.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 183.85, - "pointY": 516.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 183.85, - "pointY": 592.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 163.75, - "pointY": 592.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 163.75, - "pointY": 516.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 169.75, - "pointY": 522.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 177.85, - "pointY": 522.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 177.85, - "pointY": 586.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 169.75, - "pointY": 586.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 169.75, - "pointY": 522.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 526.792, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 582.692, - "radius": 0, - "depth": 10.15, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 151.75, - "pointY": 504.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 151.75, - "pointY": 604.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 195.85, - "pointY": 604.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 195.85, - "pointY": 504.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 151.75, - "pointY": 504.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 157.75, - "pointY": 510.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 189.85, - "pointY": 510.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 189.85, - "pointY": 598.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 157.75, - "pointY": 598.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 157.75, - "pointY": 510.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 163.75, - "pointY": 516.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 183.85, - "pointY": 516.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 183.85, - "pointY": 592.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 163.75, - "pointY": 592.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 163.75, - "pointY": 516.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 169.75, - "pointY": 522.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 177.85, - "pointY": 522.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 177.85, - "pointY": 586.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 169.75, - "pointY": 586.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 169.75, - "pointY": 522.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 526.792, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 582.692, - "radius": 0, - "depth": 10.15, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 3, - "lineId": 1, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 10.15, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 198.80000000000013, - "y": 454.74230275096886, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 148.80000000000013, - "y": 454.74230275096886, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 198.80000000000013, - "y": 454.74230275096886, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 6, - "addWidth": 0.1, - "addDepth": 0.15 - }, - "pointList": [ - { - "pointX": 151.8, - "pointY": 454.742, - "radius": 22, - "depth": 10.15, - "curve": -0.9999999999999999 - }, - { - "pointX": 195.8, - "pointY": 454.742, - "radius": 22, - "depth": 10.15, - "curve": -0.9999999999999999 - }, - { - "pointX": 151.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 154.8, - "pointY": 454.742, - "radius": 19, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 192.8, - "pointY": 454.742, - "radius": 19, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 154.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 157.8, - "pointY": 454.742, - "radius": 16, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 189.8, - "pointY": 454.742, - "radius": 16, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 157.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 160.8, - "pointY": 454.742, - "radius": 13, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 186.8, - "pointY": 454.742, - "radius": 13, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 160.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 163.8, - "pointY": 454.742, - "radius": 10, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 183.8, - "pointY": 454.742, - "radius": 10, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 163.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 166.8, - "pointY": 454.742, - "radius": 7, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 180.8, - "pointY": 454.742, - "radius": 7, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 166.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 169.8, - "pointY": 454.742, - "radius": 4, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 177.8, - "pointY": 454.742, - "radius": 4, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 169.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 172.8, - "pointY": 454.742, - "radius": 1, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 174.8, - "pointY": 454.742, - "radius": 1, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 172.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 151.8, - "pointY": 454.742, - "radius": 22, - "depth": 10.15, - "curve": -0.9999999999999999 - }, - { - "pointX": 195.8, - "pointY": 454.742, - "radius": 22, - "depth": 10.15, - "curve": -0.9999999999999999 - }, - { - "pointX": 151.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 154.8, - "pointY": 454.742, - "radius": 19, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 192.8, - "pointY": 454.742, - "radius": 19, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 154.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 157.8, - "pointY": 454.742, - "radius": 16, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 189.8, - "pointY": 454.742, - "radius": 16, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 157.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 160.8, - "pointY": 454.742, - "radius": 13, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 186.8, - "pointY": 454.742, - "radius": 13, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 160.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 163.8, - "pointY": 454.742, - "radius": 10, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 183.8, - "pointY": 454.742, - "radius": 10, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 163.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 166.8, - "pointY": 454.742, - "radius": 7, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 180.8, - "pointY": 454.742, - "radius": 7, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 166.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 169.8, - "pointY": 454.742, - "radius": 4, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 177.8, - "pointY": 454.742, - "radius": 4, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 169.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 172.8, - "pointY": 454.742, - "radius": 1, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 174.8, - "pointY": 454.742, - "radius": 1, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 172.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 4, - "lineId": 1, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 216.85943181262797, - "y": 242.45943181262854, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 130.74056818737137, - "y": 242.45943181262854, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 216.85943181262797, - "y": 242.45943181262854, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 133.741, - "pointY": 242.459, - "radius": 40.059, - "depth": 2, - "curve": -0.9999999999999999 - }, - { - "pointX": 213.859, - "pointY": 242.459, - "radius": 40.059, - "depth": 2, - "curve": -0.9999999999999999 - }, - { - "pointX": 133.741, - "pointY": 242.459, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 136.741, - "pointY": 242.459, - "radius": 37.059, - "depth": 2, - "curve": 0.9999999999999999 - }, - { - "pointX": 210.859, - "pointY": 242.459, - "radius": 37.059, - "depth": 2, - "curve": 0.9999999999999999 - }, - { - "pointX": 136.741, - "pointY": 242.459, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 142.829, - "pointY": 240.113, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 154.631, - "pointY": 248.688, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 150.123, - "pointY": 262.562, - "radius": 31.059, - "depth": 2, - "curve": 0.1973885948611474 - }, - { - "pointX": 142.829, - "pointY": 240.113, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 140.614, - "pointY": 234.796, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 158.158, - "pointY": 247.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.457, - "pointY": 268.166, - "radius": 34.059, - "depth": 2, - "curve": 0.27735861872683165 - }, - { - "pointX": 140.614, - "pointY": 234.796, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 140.318, - "pointY": 234.58, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053575 - }, - { - "pointX": 142.081, - "pointY": 229.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.133, - "pointY": 229.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 170.947, - "pointY": 208.181, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053642 - }, - { - "pointX": 176.653, - "pointY": 208.181, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 183.467, - "pointY": 229.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 205.519, - "pointY": 229.153, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053541 - }, - { - "pointX": 207.282, - "pointY": 234.58, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 189.442, - "pointY": 247.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.257, - "pointY": 268.514, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053606 - }, - { - "pointX": 191.64, - "pointY": 271.868, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 258.907, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 155.96, - "pointY": 271.868, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053635 - }, - { - "pointX": 151.343, - "pointY": 268.514, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 158.158, - "pointY": 247.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 140.318, - "pointY": 234.58, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 133.741, - "pointY": 242.459, - "radius": 40.059, - "depth": 2, - "curve": -0.9999999999999999 - }, - { - "pointX": 213.859, - "pointY": 242.459, - "radius": 40.059, - "depth": 2, - "curve": -0.9999999999999999 - }, - { - "pointX": 133.741, - "pointY": 242.459, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 136.741, - "pointY": 242.459, - "radius": 37.059, - "depth": 2, - "curve": 0.9999999999999999 - }, - { - "pointX": 210.859, - "pointY": 242.459, - "radius": 37.059, - "depth": 2, - "curve": 0.9999999999999999 - }, - { - "pointX": 136.741, - "pointY": 242.459, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 142.829, - "pointY": 240.113, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 154.631, - "pointY": 248.688, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 150.123, - "pointY": 262.562, - "radius": 31.059, - "depth": 2, - "curve": 0.1973885948611474 - }, - { - "pointX": 142.829, - "pointY": 240.113, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 140.614, - "pointY": 234.796, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 158.158, - "pointY": 247.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.457, - "pointY": 268.166, - "radius": 34.059, - "depth": 2, - "curve": 0.27735861872683165 - }, - { - "pointX": 140.614, - "pointY": 234.796, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 140.318, - "pointY": 234.58, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053575 - }, - { - "pointX": 142.081, - "pointY": 229.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.133, - "pointY": 229.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 170.947, - "pointY": 208.181, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053642 - }, - { - "pointX": 176.653, - "pointY": 208.181, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 183.467, - "pointY": 229.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 205.519, - "pointY": 229.153, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053541 - }, - { - "pointX": 207.282, - "pointY": 234.58, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 189.442, - "pointY": 247.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.257, - "pointY": 268.514, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053606 - }, - { - "pointX": 191.64, - "pointY": 271.868, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 258.907, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 155.96, - "pointY": 271.868, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053635 - }, - { - "pointX": 151.343, - "pointY": 268.514, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 158.158, - "pointY": 247.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 140.318, - "pointY": 234.58, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 4, - "lineId": 2, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 216.85943181262797, - "y": 242.45943181262854, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 130.74056818737137, - "y": 242.45943181262854, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 216.85943181262797, - "y": 242.45943181262854, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 142.447, - "pointY": 229.153, - "radius": 34.059, - "depth": 2, - "curve": 0.2773586187268403 - }, - { - "pointX": 170.834, - "pointY": 208.529, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.133, - "pointY": 229.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 142.447, - "pointY": 229.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 147.365, - "pointY": 226.153, - "radius": 31.059, - "depth": 2, - "curve": 0.1973885948611564 - }, - { - "pointX": 166.461, - "pointY": 212.28, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 161.953, - "pointY": 226.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 147.365, - "pointY": 226.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 153.438, - "pointY": 223.153, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030141409 - }, - { - "pointX": 161.731, - "pointY": 217.128, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 159.773, - "pointY": 223.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 153.438, - "pointY": 223.153, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 142.447, - "pointY": 229.153, - "radius": 34.059, - "depth": 2, - "curve": 0.2773586187268403 - }, - { - "pointX": 170.834, - "pointY": 208.529, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.133, - "pointY": 229.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 142.447, - "pointY": 229.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 147.365, - "pointY": 226.153, - "radius": 31.059, - "depth": 2, - "curve": 0.1973885948611564 - }, - { - "pointX": 166.461, - "pointY": 212.28, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 161.953, - "pointY": 226.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 147.365, - "pointY": 226.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 153.438, - "pointY": 223.153, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030141409 - }, - { - "pointX": 161.731, - "pointY": 217.128, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 159.773, - "pointY": 223.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 153.438, - "pointY": 223.153, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 4, - "lineId": 3, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 216.85943181262797, - "y": 242.45943181262854, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 130.74056818737137, - "y": 242.45943181262854, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 216.85943181262797, - "y": 242.45943181262854, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 145.979, - "pointY": 246.11, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.104, - "pointY": 249.834, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 149.147, - "pointY": 255.859, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030140445 - }, - { - "pointX": 145.979, - "pointY": 246.11, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 145.979, - "pointY": 246.11, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.104, - "pointY": 249.834, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 149.147, - "pointY": 255.859, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030140445 - }, - { - "pointX": 145.979, - "pointY": 246.11, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 4, - "lineId": 4, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 216.85943181262797, - "y": 242.45943181262854, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 130.74056818737137, - "y": 242.45943181262854, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 216.85943181262797, - "y": 242.45943181262854, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 156.256, - "pointY": 271.653, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 258.907, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 191.344, - "pointY": 271.653, - "radius": 34.059, - "depth": 2, - "curve": 0.27735861872682543 - }, - { - "pointX": 156.256, - "pointY": 271.653, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 161.998, - "pointY": 271.189, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 262.615, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 185.602, - "pointY": 271.189, - "radius": 31.059, - "depth": 2, - "curve": 0.1973885948611406 - }, - { - "pointX": 161.998, - "pointY": 271.189, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 168.675, - "pointY": 270.047, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 266.323, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 178.925, - "pointY": 270.047, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030139656 - }, - { - "pointX": 168.675, - "pointY": 270.047, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 156.256, - "pointY": 271.653, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 258.907, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 191.344, - "pointY": 271.653, - "radius": 34.059, - "depth": 2, - "curve": 0.27735861872682543 - }, - { - "pointX": 156.256, - "pointY": 271.653, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 161.998, - "pointY": 271.189, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 262.615, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 185.602, - "pointY": 271.189, - "radius": 31.059, - "depth": 2, - "curve": 0.1973885948611406 - }, - { - "pointX": 161.998, - "pointY": 271.189, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 168.675, - "pointY": 270.047, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 266.323, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 178.925, - "pointY": 270.047, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030139656 - }, - { - "pointX": 168.675, - "pointY": 270.047, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 4, - "lineId": 5, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 216.85943181262797, - "y": 242.45943181262854, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 130.74056818737137, - "y": 242.45943181262854, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 216.85943181262797, - "y": 242.45943181262854, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 189.442, - "pointY": 247.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 206.986, - "pointY": 234.796, - "radius": 34.059, - "depth": 2, - "curve": 0.27735861872683215 - }, - { - "pointX": 196.143, - "pointY": 268.166, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 189.442, - "pointY": 247.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 192.969, - "pointY": 248.688, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 204.771, - "pointY": 240.113, - "radius": 31.059, - "depth": 2, - "curve": 0.19738859486114788 - }, - { - "pointX": 197.477, - "pointY": 262.562, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 192.969, - "pointY": 248.688, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.496, - "pointY": 249.834, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 201.621, - "pointY": 246.11, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030140512 - }, - { - "pointX": 198.453, - "pointY": 255.859, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.496, - "pointY": 249.834, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 189.442, - "pointY": 247.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 206.986, - "pointY": 234.796, - "radius": 34.059, - "depth": 2, - "curve": 0.27735861872683215 - }, - { - "pointX": 196.143, - "pointY": 268.166, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 189.442, - "pointY": 247.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 192.969, - "pointY": 248.688, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 204.771, - "pointY": 240.113, - "radius": 31.059, - "depth": 2, - "curve": 0.19738859486114788 - }, - { - "pointX": 197.477, - "pointY": 262.562, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 192.969, - "pointY": 248.688, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.496, - "pointY": 249.834, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 201.621, - "pointY": 246.11, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030140512 - }, - { - "pointX": 198.453, - "pointY": 255.859, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.496, - "pointY": 249.834, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 4, - "lineId": 6, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 216.85943181262797, - "y": 242.45943181262854, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 130.74056818737137, - "y": 242.45943181262854, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 216.85943181262797, - "y": 242.45943181262854, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 183.467, - "pointY": 229.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 176.766, - "pointY": 208.529, - "radius": 34.059, - "depth": 2, - "curve": 0.2773586187268398 - }, - { - "pointX": 205.153, - "pointY": 229.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 183.467, - "pointY": 229.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 185.647, - "pointY": 226.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 181.139, - "pointY": 212.28, - "radius": 31.059, - "depth": 2, - "curve": 0.19738859486115573 - }, - { - "pointX": 200.235, - "pointY": 226.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 185.647, - "pointY": 226.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 187.827, - "pointY": 223.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 185.869, - "pointY": 217.128, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030141397 - }, - { - "pointX": 194.162, - "pointY": 223.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 187.827, - "pointY": 223.153, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 183.467, - "pointY": 229.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 176.766, - "pointY": 208.529, - "radius": 34.059, - "depth": 2, - "curve": 0.2773586187268398 - }, - { - "pointX": 205.153, - "pointY": 229.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 183.467, - "pointY": 229.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 185.647, - "pointY": 226.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 181.139, - "pointY": 212.28, - "radius": 31.059, - "depth": 2, - "curve": 0.19738859486115573 - }, - { - "pointX": 200.235, - "pointY": 226.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 185.647, - "pointY": 226.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 187.827, - "pointY": 223.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 185.869, - "pointY": 217.128, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030141397 - }, - { - "pointX": 194.162, - "pointY": 223.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 187.827, - "pointY": 223.153, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 5, - "lineId": 1, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 10.3, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 228.80000000000015, - "y": 504.74230275096863, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 278.8000000000002, - "y": 504.74230275096863, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 278.80000000000047, - "y": 604.7423027509686, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 228.80000000000047, - "y": 604.7423027509687, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 228.80000000000015, - "y": 504.74230275096863, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 7, - "addWidth": 0.2, - "addDepth": 0.3 - }, - "pointList": [ - { - "pointX": 231.7, - "pointY": 504.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 231.7, - "pointY": 605.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 275.9, - "pointY": 605.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 275.9, - "pointY": 504.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 231.7, - "pointY": 504.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 237.7, - "pointY": 510.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 269.9, - "pointY": 510.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 269.9, - "pointY": 599.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 237.7, - "pointY": 599.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 237.7, - "pointY": 510.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 243.7, - "pointY": 516.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 263.9, - "pointY": 516.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 263.9, - "pointY": 593.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 243.7, - "pointY": 593.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 243.7, - "pointY": 516.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 249.7, - "pointY": 522.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 257.9, - "pointY": 522.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 257.9, - "pointY": 587.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 249.7, - "pointY": 587.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 249.7, - "pointY": 522.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 253.8, - "pointY": 526.342, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 253.8, - "pointY": 583.142, - "radius": 0, - "depth": 10.3, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 231.7, - "pointY": 504.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 231.7, - "pointY": 605.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 275.9, - "pointY": 605.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 275.9, - "pointY": 504.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 231.7, - "pointY": 504.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 237.7, - "pointY": 510.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 269.9, - "pointY": 510.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 269.9, - "pointY": 599.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 237.7, - "pointY": 599.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 237.7, - "pointY": 510.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 243.7, - "pointY": 516.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 263.9, - "pointY": 516.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 263.9, - "pointY": 593.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 243.7, - "pointY": 593.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 243.7, - "pointY": 516.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 249.7, - "pointY": 522.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 257.9, - "pointY": 522.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 257.9, - "pointY": 587.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 249.7, - "pointY": 587.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 249.7, - "pointY": 522.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 253.8, - "pointY": 526.342, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 253.8, - "pointY": 583.142, - "radius": 0, - "depth": 10.3, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 6, - "lineId": 1, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 10.3, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 278.8000000000001, - "y": 454.74230275096863, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 228.80000000000013, - "y": 454.74230275096863, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 278.8000000000001, - "y": 454.74230275096863, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 7, - "addWidth": 0.2, - "addDepth": 0.3 - }, - "pointList": [ - { - "pointX": 231.8, - "pointY": 454.742, - "radius": 22, - "depth": 10.3, - "curve": -0.9999999999999999 - }, - { - "pointX": 275.8, - "pointY": 454.742, - "radius": 22, - "depth": 10.3, - "curve": -0.9999999999999999 - }, - { - "pointX": 231.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 234.8, - "pointY": 454.742, - "radius": 19, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 272.8, - "pointY": 454.742, - "radius": 19, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 234.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 237.8, - "pointY": 454.742, - "radius": 16, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 269.8, - "pointY": 454.742, - "radius": 16, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 237.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 240.8, - "pointY": 454.742, - "radius": 13, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 266.8, - "pointY": 454.742, - "radius": 13, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 240.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 243.8, - "pointY": 454.742, - "radius": 10, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 263.8, - "pointY": 454.742, - "radius": 10, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 243.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 246.8, - "pointY": 454.742, - "radius": 7, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 260.8, - "pointY": 454.742, - "radius": 7, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 246.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 249.8, - "pointY": 454.742, - "radius": 4, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 257.8, - "pointY": 454.742, - "radius": 4, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 249.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 252.8, - "pointY": 454.742, - "radius": 1, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 254.8, - "pointY": 454.742, - "radius": 1, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 252.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.3, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 231.8, - "pointY": 454.742, - "radius": 22, - "depth": 10.3, - "curve": -0.9999999999999999 - }, - { - "pointX": 275.8, - "pointY": 454.742, - "radius": 22, - "depth": 10.3, - "curve": -0.9999999999999999 - }, - { - "pointX": 231.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 234.8, - "pointY": 454.742, - "radius": 19, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 272.8, - "pointY": 454.742, - "radius": 19, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 234.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 237.8, - "pointY": 454.742, - "radius": 16, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 269.8, - "pointY": 454.742, - "radius": 16, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 237.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 240.8, - "pointY": 454.742, - "radius": 13, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 266.8, - "pointY": 454.742, - "radius": 13, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 240.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 243.8, - "pointY": 454.742, - "radius": 10, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 263.8, - "pointY": 454.742, - "radius": 10, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 243.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 246.8, - "pointY": 454.742, - "radius": 7, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 260.8, - "pointY": 454.742, - "radius": 7, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 246.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 249.8, - "pointY": 454.742, - "radius": 4, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 257.8, - "pointY": 454.742, - "radius": 4, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 249.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 252.8, - "pointY": 454.742, - "radius": 1, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 254.8, - "pointY": 454.742, - "radius": 1, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 252.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.3, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - } - ], - "modelListFaceA": [ - { - "orderId": "", - "blockId": 0, - "modelId": 2, - "lineId": 1, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 10.15, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 148.79999999999987, - "y": 504.7423027509691, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 198.80000000000007, - "y": 504.7423027509692, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 198.80000000000047, - "y": 604.7423027509692, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.80000000000024, - "y": 604.7423027509692, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.79999999999987, - "y": 504.7423027509691, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 6, - "addWidth": 0.1, - "addDepth": 0.15 - }, - "pointList": [ - { - "pointX": 151.75, - "pointY": 504.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 151.75, - "pointY": 604.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 195.85, - "pointY": 604.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 195.85, - "pointY": 504.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 151.75, - "pointY": 504.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 157.75, - "pointY": 510.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 189.85, - "pointY": 510.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 189.85, - "pointY": 598.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 157.75, - "pointY": 598.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 157.75, - "pointY": 510.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 163.75, - "pointY": 516.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 183.85, - "pointY": 516.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 183.85, - "pointY": 592.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 163.75, - "pointY": 592.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 163.75, - "pointY": 516.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 169.75, - "pointY": 522.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 177.85, - "pointY": 522.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 177.85, - "pointY": 586.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 169.75, - "pointY": 586.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 169.75, - "pointY": 522.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 526.792, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 582.692, - "radius": 0, - "depth": 10.15, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 151.75, - "pointY": 504.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 151.75, - "pointY": 604.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 195.85, - "pointY": 604.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 195.85, - "pointY": 504.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 151.75, - "pointY": 504.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 157.75, - "pointY": 510.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 189.85, - "pointY": 510.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 189.85, - "pointY": 598.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 157.75, - "pointY": 598.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 157.75, - "pointY": 510.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 163.75, - "pointY": 516.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 183.85, - "pointY": 516.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 183.85, - "pointY": 592.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 163.75, - "pointY": 592.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 163.75, - "pointY": 516.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 169.75, - "pointY": 522.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 177.85, - "pointY": 522.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 177.85, - "pointY": 586.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 169.75, - "pointY": 586.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 169.75, - "pointY": 522.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 526.792, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 582.692, - "radius": 0, - "depth": 10.15, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 3, - "lineId": 1, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 10.15, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 198.80000000000013, - "y": 454.74230275096886, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 148.80000000000013, - "y": 454.74230275096886, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 198.80000000000013, - "y": 454.74230275096886, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 6, - "addWidth": 0.1, - "addDepth": 0.15 - }, - "pointList": [ - { - "pointX": 151.8, - "pointY": 454.742, - "radius": 22, - "depth": 10.15, - "curve": -0.9999999999999999 - }, - { - "pointX": 195.8, - "pointY": 454.742, - "radius": 22, - "depth": 10.15, - "curve": -0.9999999999999999 - }, - { - "pointX": 151.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 154.8, - "pointY": 454.742, - "radius": 19, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 192.8, - "pointY": 454.742, - "radius": 19, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 154.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 157.8, - "pointY": 454.742, - "radius": 16, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 189.8, - "pointY": 454.742, - "radius": 16, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 157.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 160.8, - "pointY": 454.742, - "radius": 13, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 186.8, - "pointY": 454.742, - "radius": 13, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 160.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 163.8, - "pointY": 454.742, - "radius": 10, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 183.8, - "pointY": 454.742, - "radius": 10, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 163.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 166.8, - "pointY": 454.742, - "radius": 7, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 180.8, - "pointY": 454.742, - "radius": 7, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 166.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 169.8, - "pointY": 454.742, - "radius": 4, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 177.8, - "pointY": 454.742, - "radius": 4, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 169.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 172.8, - "pointY": 454.742, - "radius": 1, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 174.8, - "pointY": 454.742, - "radius": 1, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 172.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 151.8, - "pointY": 454.742, - "radius": 22, - "depth": 10.15, - "curve": -0.9999999999999999 - }, - { - "pointX": 195.8, - "pointY": 454.742, - "radius": 22, - "depth": 10.15, - "curve": -0.9999999999999999 - }, - { - "pointX": 151.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 154.8, - "pointY": 454.742, - "radius": 19, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 192.8, - "pointY": 454.742, - "radius": 19, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 154.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 157.8, - "pointY": 454.742, - "radius": 16, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 189.8, - "pointY": 454.742, - "radius": 16, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 157.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 160.8, - "pointY": 454.742, - "radius": 13, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 186.8, - "pointY": 454.742, - "radius": 13, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 160.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 163.8, - "pointY": 454.742, - "radius": 10, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 183.8, - "pointY": 454.742, - "radius": 10, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 163.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 166.8, - "pointY": 454.742, - "radius": 7, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 180.8, - "pointY": 454.742, - "radius": 7, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 166.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 169.8, - "pointY": 454.742, - "radius": 4, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 177.8, - "pointY": 454.742, - "radius": 4, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 169.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - }, - { - "pointX": 172.8, - "pointY": 454.742, - "radius": 1, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 174.8, - "pointY": 454.742, - "radius": 1, - "depth": 10.15, - "curve": 0.9999999999999999 - }, - { - "pointX": 172.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.15, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 4, - "lineId": 1, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 216.85943181262797, - "y": 242.45943181262854, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 130.74056818737137, - "y": 242.45943181262854, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 216.85943181262797, - "y": 242.45943181262854, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 133.741, - "pointY": 242.459, - "radius": 40.059, - "depth": 2, - "curve": -0.9999999999999999 - }, - { - "pointX": 213.859, - "pointY": 242.459, - "radius": 40.059, - "depth": 2, - "curve": -0.9999999999999999 - }, - { - "pointX": 133.741, - "pointY": 242.459, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 136.741, - "pointY": 242.459, - "radius": 37.059, - "depth": 2, - "curve": 0.9999999999999999 - }, - { - "pointX": 210.859, - "pointY": 242.459, - "radius": 37.059, - "depth": 2, - "curve": 0.9999999999999999 - }, - { - "pointX": 136.741, - "pointY": 242.459, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 142.829, - "pointY": 240.113, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 154.631, - "pointY": 248.688, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 150.123, - "pointY": 262.562, - "radius": 31.059, - "depth": 2, - "curve": 0.1973885948611474 - }, - { - "pointX": 142.829, - "pointY": 240.113, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 140.614, - "pointY": 234.796, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 158.158, - "pointY": 247.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.457, - "pointY": 268.166, - "radius": 34.059, - "depth": 2, - "curve": 0.27735861872683165 - }, - { - "pointX": 140.614, - "pointY": 234.796, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 140.318, - "pointY": 234.58, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053575 - }, - { - "pointX": 142.081, - "pointY": 229.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.133, - "pointY": 229.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 170.947, - "pointY": 208.181, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053642 - }, - { - "pointX": 176.653, - "pointY": 208.181, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 183.467, - "pointY": 229.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 205.519, - "pointY": 229.153, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053541 - }, - { - "pointX": 207.282, - "pointY": 234.58, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 189.442, - "pointY": 247.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.257, - "pointY": 268.514, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053606 - }, - { - "pointX": 191.64, - "pointY": 271.868, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 258.907, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 155.96, - "pointY": 271.868, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053635 - }, - { - "pointX": 151.343, - "pointY": 268.514, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 158.158, - "pointY": 247.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 140.318, - "pointY": 234.58, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 133.741, - "pointY": 242.459, - "radius": 40.059, - "depth": 2, - "curve": -0.9999999999999999 - }, - { - "pointX": 213.859, - "pointY": 242.459, - "radius": 40.059, - "depth": 2, - "curve": -0.9999999999999999 - }, - { - "pointX": 133.741, - "pointY": 242.459, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 136.741, - "pointY": 242.459, - "radius": 37.059, - "depth": 2, - "curve": 0.9999999999999999 - }, - { - "pointX": 210.859, - "pointY": 242.459, - "radius": 37.059, - "depth": 2, - "curve": 0.9999999999999999 - }, - { - "pointX": 136.741, - "pointY": 242.459, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 142.829, - "pointY": 240.113, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 154.631, - "pointY": 248.688, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 150.123, - "pointY": 262.562, - "radius": 31.059, - "depth": 2, - "curve": 0.1973885948611474 - }, - { - "pointX": 142.829, - "pointY": 240.113, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 140.614, - "pointY": 234.796, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 158.158, - "pointY": 247.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.457, - "pointY": 268.166, - "radius": 34.059, - "depth": 2, - "curve": 0.27735861872683165 - }, - { - "pointX": 140.614, - "pointY": 234.796, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 140.318, - "pointY": 234.58, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053575 - }, - { - "pointX": 142.081, - "pointY": 229.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.133, - "pointY": 229.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 170.947, - "pointY": 208.181, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053642 - }, - { - "pointX": 176.653, - "pointY": 208.181, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 183.467, - "pointY": 229.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 205.519, - "pointY": 229.153, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053541 - }, - { - "pointX": 207.282, - "pointY": 234.58, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 189.442, - "pointY": 247.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.257, - "pointY": 268.514, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053606 - }, - { - "pointX": 191.64, - "pointY": 271.868, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 258.907, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 155.96, - "pointY": 271.868, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053635 - }, - { - "pointX": 151.343, - "pointY": 268.514, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 158.158, - "pointY": 247.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 140.318, - "pointY": 234.58, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 4, - "lineId": 2, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 216.85943181262797, - "y": 242.45943181262854, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 130.74056818737137, - "y": 242.45943181262854, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 216.85943181262797, - "y": 242.45943181262854, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 142.447, - "pointY": 229.153, - "radius": 34.059, - "depth": 2, - "curve": 0.2773586187268403 - }, - { - "pointX": 170.834, - "pointY": 208.529, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.133, - "pointY": 229.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 142.447, - "pointY": 229.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 147.365, - "pointY": 226.153, - "radius": 31.059, - "depth": 2, - "curve": 0.1973885948611564 - }, - { - "pointX": 166.461, - "pointY": 212.28, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 161.953, - "pointY": 226.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 147.365, - "pointY": 226.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 153.438, - "pointY": 223.153, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030141409 - }, - { - "pointX": 161.731, - "pointY": 217.128, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 159.773, - "pointY": 223.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 153.438, - "pointY": 223.153, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 142.447, - "pointY": 229.153, - "radius": 34.059, - "depth": 2, - "curve": 0.2773586187268403 - }, - { - "pointX": 170.834, - "pointY": 208.529, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.133, - "pointY": 229.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 142.447, - "pointY": 229.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 147.365, - "pointY": 226.153, - "radius": 31.059, - "depth": 2, - "curve": 0.1973885948611564 - }, - { - "pointX": 166.461, - "pointY": 212.28, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 161.953, - "pointY": 226.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 147.365, - "pointY": 226.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 153.438, - "pointY": 223.153, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030141409 - }, - { - "pointX": 161.731, - "pointY": 217.128, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 159.773, - "pointY": 223.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 153.438, - "pointY": 223.153, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 4, - "lineId": 3, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 216.85943181262797, - "y": 242.45943181262854, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 130.74056818737137, - "y": 242.45943181262854, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 216.85943181262797, - "y": 242.45943181262854, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 145.979, - "pointY": 246.11, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.104, - "pointY": 249.834, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 149.147, - "pointY": 255.859, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030140445 - }, - { - "pointX": 145.979, - "pointY": 246.11, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 145.979, - "pointY": 246.11, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.104, - "pointY": 249.834, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 149.147, - "pointY": 255.859, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030140445 - }, - { - "pointX": 145.979, - "pointY": 246.11, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 4, - "lineId": 4, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 216.85943181262797, - "y": 242.45943181262854, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 130.74056818737137, - "y": 242.45943181262854, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 216.85943181262797, - "y": 242.45943181262854, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 156.256, - "pointY": 271.653, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 258.907, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 191.344, - "pointY": 271.653, - "radius": 34.059, - "depth": 2, - "curve": 0.27735861872682543 - }, - { - "pointX": 156.256, - "pointY": 271.653, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 161.998, - "pointY": 271.189, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 262.615, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 185.602, - "pointY": 271.189, - "radius": 31.059, - "depth": 2, - "curve": 0.1973885948611406 - }, - { - "pointX": 161.998, - "pointY": 271.189, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 168.675, - "pointY": 270.047, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 266.323, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 178.925, - "pointY": 270.047, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030139656 - }, - { - "pointX": 168.675, - "pointY": 270.047, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 156.256, - "pointY": 271.653, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 258.907, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 191.344, - "pointY": 271.653, - "radius": 34.059, - "depth": 2, - "curve": 0.27735861872682543 - }, - { - "pointX": 156.256, - "pointY": 271.653, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 161.998, - "pointY": 271.189, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 262.615, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 185.602, - "pointY": 271.189, - "radius": 31.059, - "depth": 2, - "curve": 0.1973885948611406 - }, - { - "pointX": 161.998, - "pointY": 271.189, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 168.675, - "pointY": 270.047, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 266.323, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 178.925, - "pointY": 270.047, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030139656 - }, - { - "pointX": 168.675, - "pointY": 270.047, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 4, - "lineId": 5, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 216.85943181262797, - "y": 242.45943181262854, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 130.74056818737137, - "y": 242.45943181262854, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 216.85943181262797, - "y": 242.45943181262854, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 189.442, - "pointY": 247.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 206.986, - "pointY": 234.796, - "radius": 34.059, - "depth": 2, - "curve": 0.27735861872683215 - }, - { - "pointX": 196.143, - "pointY": 268.166, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 189.442, - "pointY": 247.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 192.969, - "pointY": 248.688, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 204.771, - "pointY": 240.113, - "radius": 31.059, - "depth": 2, - "curve": 0.19738859486114788 - }, - { - "pointX": 197.477, - "pointY": 262.562, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 192.969, - "pointY": 248.688, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.496, - "pointY": 249.834, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 201.621, - "pointY": 246.11, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030140512 - }, - { - "pointX": 198.453, - "pointY": 255.859, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.496, - "pointY": 249.834, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 189.442, - "pointY": 247.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 206.986, - "pointY": 234.796, - "radius": 34.059, - "depth": 2, - "curve": 0.27735861872683215 - }, - { - "pointX": 196.143, - "pointY": 268.166, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 189.442, - "pointY": 247.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 192.969, - "pointY": 248.688, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 204.771, - "pointY": 240.113, - "radius": 31.059, - "depth": 2, - "curve": 0.19738859486114788 - }, - { - "pointX": 197.477, - "pointY": 262.562, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 192.969, - "pointY": 248.688, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.496, - "pointY": 249.834, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 201.621, - "pointY": 246.11, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030140512 - }, - { - "pointX": 198.453, - "pointY": 255.859, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.496, - "pointY": 249.834, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 4, - "lineId": 6, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 216.85943181262797, - "y": 242.45943181262854, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 130.74056818737137, - "y": 242.45943181262854, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 216.85943181262797, - "y": 242.45943181262854, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 183.467, - "pointY": 229.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 176.766, - "pointY": 208.529, - "radius": 34.059, - "depth": 2, - "curve": 0.2773586187268398 - }, - { - "pointX": 205.153, - "pointY": 229.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 183.467, - "pointY": 229.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 185.647, - "pointY": 226.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 181.139, - "pointY": 212.28, - "radius": 31.059, - "depth": 2, - "curve": 0.19738859486115573 - }, - { - "pointX": 200.235, - "pointY": 226.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 185.647, - "pointY": 226.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 187.827, - "pointY": 223.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 185.869, - "pointY": 217.128, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030141397 - }, - { - "pointX": 194.162, - "pointY": 223.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 187.827, - "pointY": 223.153, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 183.467, - "pointY": 229.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 176.766, - "pointY": 208.529, - "radius": 34.059, - "depth": 2, - "curve": 0.2773586187268398 - }, - { - "pointX": 205.153, - "pointY": 229.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 183.467, - "pointY": 229.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 185.647, - "pointY": 226.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 181.139, - "pointY": 212.28, - "radius": 31.059, - "depth": 2, - "curve": 0.19738859486115573 - }, - { - "pointX": 200.235, - "pointY": 226.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 185.647, - "pointY": 226.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 187.827, - "pointY": 223.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 185.869, - "pointY": 217.128, - "radius": 28.059, - "depth": 2, - "curve": 0.09210362030141397 - }, - { - "pointX": 194.162, - "pointY": 223.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 187.827, - "pointY": 223.153, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - } - ], - "modelListFaceB": [ - { - "orderId": "", - "blockId": 0, - "modelId": 1, - "lineId": 1, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 132.84804678663306, - "y": 129.15333561439746, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 173.7999999999998, - "y": 99.4, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 214.75195321336662, - "y": 129.15333561439692, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 199.1096989915563, - "y": 177.29524391717393, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.49030100844396, - "y": 177.29524391717422, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 132.84804678663306, - "y": 129.15333561439746, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 136.375, - "pointY": 130.299, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 150.67, - "pointY": 174.295, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.93, - "pointY": 174.295, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 211.225, - "pointY": 130.299, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 103.108, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 136.375, - "pointY": 130.299, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 136.375, - "pointY": 130.299, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 150.67, - "pointY": 174.295, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.93, - "pointY": 174.295, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 211.225, - "pointY": 130.299, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 103.108, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 136.375, - "pointY": 130.299, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 1, - "lineId": 2, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 132.84804678663306, - "y": 129.15333561439746, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 173.7999999999998, - "y": 99.4, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 214.75195321336662, - "y": 129.15333561439692, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 199.1096989915563, - "y": 177.29524391717393, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.49030100844396, - "y": 177.29524391717422, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 132.84804678663306, - "y": 129.15333561439746, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 142.081, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.133, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 170.947, - "pointY": 108.181, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053626 - }, - { - "pointX": 176.653, - "pointY": 108.181, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 183.467, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 205.519, - "pointY": 129.153, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053591 - }, - { - "pointX": 207.282, - "pointY": 134.58, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 189.442, - "pointY": 147.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.257, - "pointY": 168.514, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053571 - }, - { - "pointX": 191.64, - "pointY": 171.868, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 158.907, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 155.96, - "pointY": 171.868, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053641 - }, - { - "pointX": 151.343, - "pointY": 168.514, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 158.158, - "pointY": 147.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 140.318, - "pointY": 134.58, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053626 - }, - { - "pointX": 142.081, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 143.056, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 170.646, - "pointY": 109.108, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.133, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 143.056, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 142.081, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.133, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 170.947, - "pointY": 108.181, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053626 - }, - { - "pointX": 176.653, - "pointY": 108.181, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 183.467, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 205.519, - "pointY": 129.153, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053591 - }, - { - "pointX": 207.282, - "pointY": 134.58, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 189.442, - "pointY": 147.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 196.257, - "pointY": 168.514, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053571 - }, - { - "pointX": 191.64, - "pointY": 171.868, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 158.907, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 155.96, - "pointY": 171.868, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053641 - }, - { - "pointX": 151.343, - "pointY": 168.514, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 158.158, - "pointY": 147.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 140.318, - "pointY": 134.58, - "radius": 3, - "depth": 2, - "curve": 0.7265425280053626 - }, - { - "pointX": 142.081, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 143.056, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 170.646, - "pointY": 109.108, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.133, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 143.056, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 1, - "lineId": 3, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 132.84804678663306, - "y": 129.15333561439746, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 173.7999999999998, - "y": 99.4, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 214.75195321336662, - "y": 129.15333561439692, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 199.1096989915563, - "y": 177.29524391717393, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.49030100844396, - "y": 177.29524391717422, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 132.84804678663306, - "y": 129.15333561439746, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 141.106, - "pointY": 135.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 158.158, - "pointY": 147.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.645, - "pointY": 167.587, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 141.106, - "pointY": 135.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 146.813, - "pointY": 143.007, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 154.631, - "pointY": 148.688, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.645, - "pointY": 157.879, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 146.813, - "pointY": 143.007, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 141.106, - "pointY": 135.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 158.158, - "pointY": 147.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.645, - "pointY": 167.587, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 141.106, - "pointY": 135.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 146.813, - "pointY": 143.007, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 154.631, - "pointY": 148.688, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 151.645, - "pointY": 157.879, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 146.813, - "pointY": 143.007, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 1, - "lineId": 4, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 132.84804678663306, - "y": 129.15333561439746, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 173.7999999999998, - "y": 99.4, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 214.75195321336662, - "y": 129.15333561439692, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 199.1096989915563, - "y": 177.29524391717393, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.49030100844396, - "y": 177.29524391717422, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 132.84804678663306, - "y": 129.15333561439746, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 152.289, - "pointY": 126.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.939, - "pointY": 116.962, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 161.953, - "pointY": 126.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 152.289, - "pointY": 126.153, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 152.289, - "pointY": 126.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 164.939, - "pointY": 116.962, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 161.953, - "pointY": 126.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 152.289, - "pointY": 126.153, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 1, - "lineId": 5, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 132.84804678663306, - "y": 129.15333561439746, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 173.7999999999998, - "y": 99.4, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 214.75195321336662, - "y": 129.15333561439692, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 199.1096989915563, - "y": 177.29524391717393, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.49030100844396, - "y": 177.29524391717422, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 132.84804678663306, - "y": 129.15333561439746, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 176.954, - "pointY": 109.108, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 204.544, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 183.467, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 176.954, - "pointY": 109.108, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 182.661, - "pointY": 116.962, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 195.311, - "pointY": 126.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 185.647, - "pointY": 126.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 182.661, - "pointY": 116.962, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 176.954, - "pointY": 109.108, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 204.544, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 183.467, - "pointY": 129.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 176.954, - "pointY": 109.108, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 182.661, - "pointY": 116.962, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 195.311, - "pointY": 126.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 185.647, - "pointY": 126.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 182.661, - "pointY": 116.962, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 1, - "lineId": 6, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 132.84804678663306, - "y": 129.15333561439746, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 173.7999999999998, - "y": 99.4, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 214.75195321336662, - "y": 129.15333561439692, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 199.1096989915563, - "y": 177.29524391717393, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.49030100844396, - "y": 177.29524391717422, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 132.84804678663306, - "y": 129.15333561439746, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 189.442, - "pointY": 147.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 206.494, - "pointY": 135.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 195.955, - "pointY": 167.587, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 189.442, - "pointY": 147.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 192.969, - "pointY": 148.688, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 200.787, - "pointY": 143.007, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 195.955, - "pointY": 157.879, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 192.969, - "pointY": 148.688, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 189.442, - "pointY": 147.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 206.494, - "pointY": 135.153, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 195.955, - "pointY": 167.587, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 189.442, - "pointY": 147.542, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 192.969, - "pointY": 148.688, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 200.787, - "pointY": 143.007, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 195.955, - "pointY": 157.879, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 192.969, - "pointY": 148.688, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 1, - "lineId": 7, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 2, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 132.84804678663306, - "y": 129.15333561439746, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 173.7999999999998, - "y": 99.4, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 214.75195321336662, - "y": 129.15333561439692, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 199.1096989915563, - "y": 177.29524391717393, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 148.49030100844396, - "y": 177.29524391717422, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 132.84804678663306, - "y": 129.15333561439746, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 165.982, - "pointY": 168.295, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 162.615, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 181.618, - "pointY": 168.295, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 165.982, - "pointY": 168.295, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 156.749, - "pointY": 171.295, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 158.907, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 190.851, - "pointY": 171.295, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 156.749, - "pointY": 171.295, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 165.982, - "pointY": 168.295, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 162.615, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 181.618, - "pointY": 168.295, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 165.982, - "pointY": 168.295, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 156.749, - "pointY": 171.295, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 173.8, - "pointY": 158.907, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 190.851, - "pointY": 171.295, - "radius": 0, - "depth": 2, - "curve": 0 - }, - { - "pointX": 156.749, - "pointY": 171.295, - "radius": 0, - "depth": 2, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 5, - "lineId": 1, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 10.3, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 228.80000000000015, - "y": 504.74230275096863, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 278.8000000000002, - "y": 504.74230275096863, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 278.80000000000047, - "y": 604.7423027509686, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 228.80000000000047, - "y": 604.7423027509687, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 228.80000000000015, - "y": 504.74230275096863, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 7, - "addWidth": 0.2, - "addDepth": 0.3 - }, - "pointList": [ - { - "pointX": 231.7, - "pointY": 504.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 231.7, - "pointY": 605.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 275.9, - "pointY": 605.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 275.9, - "pointY": 504.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 231.7, - "pointY": 504.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 237.7, - "pointY": 510.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 269.9, - "pointY": 510.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 269.9, - "pointY": 599.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 237.7, - "pointY": 599.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 237.7, - "pointY": 510.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 243.7, - "pointY": 516.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 263.9, - "pointY": 516.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 263.9, - "pointY": 593.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 243.7, - "pointY": 593.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 243.7, - "pointY": 516.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 249.7, - "pointY": 522.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 257.9, - "pointY": 522.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 257.9, - "pointY": 587.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 249.7, - "pointY": 587.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 249.7, - "pointY": 522.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 253.8, - "pointY": 526.342, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 253.8, - "pointY": 583.142, - "radius": 0, - "depth": 10.3, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 231.7, - "pointY": 504.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 231.7, - "pointY": 605.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 275.9, - "pointY": 605.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 275.9, - "pointY": 504.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 231.7, - "pointY": 504.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 237.7, - "pointY": 510.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 269.9, - "pointY": 510.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 269.9, - "pointY": 599.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 237.7, - "pointY": 599.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 237.7, - "pointY": 510.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 243.7, - "pointY": 516.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 263.9, - "pointY": 516.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 263.9, - "pointY": 593.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 243.7, - "pointY": 593.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 243.7, - "pointY": 516.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 249.7, - "pointY": 522.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 257.9, - "pointY": 522.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 257.9, - "pointY": 587.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 249.7, - "pointY": 587.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 249.7, - "pointY": 522.242, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 253.8, - "pointY": 526.342, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 253.8, - "pointY": 583.142, - "radius": 0, - "depth": 10.3, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 6, - "lineId": 1, - "face": 1, - "knifeName": "", - "knifeRadius": 3, - "depth": 10.3, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 278.8000000000001, - "y": 454.74230275096863, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 228.80000000000013, - "y": 454.74230275096863, - "z": null - }, - "buls": 0.9999999999999999, - "radius": null - }, - { - "pts": { - "x": 278.8000000000001, - "y": 454.74230275096863, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 7, - "addWidth": 0.2, - "addDepth": 0.3 - }, - "pointList": [ - { - "pointX": 231.8, - "pointY": 454.742, - "radius": 22, - "depth": 10.3, - "curve": -0.9999999999999999 - }, - { - "pointX": 275.8, - "pointY": 454.742, - "radius": 22, - "depth": 10.3, - "curve": -0.9999999999999999 - }, - { - "pointX": 231.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 234.8, - "pointY": 454.742, - "radius": 19, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 272.8, - "pointY": 454.742, - "radius": 19, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 234.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 237.8, - "pointY": 454.742, - "radius": 16, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 269.8, - "pointY": 454.742, - "radius": 16, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 237.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 240.8, - "pointY": 454.742, - "radius": 13, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 266.8, - "pointY": 454.742, - "radius": 13, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 240.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 243.8, - "pointY": 454.742, - "radius": 10, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 263.8, - "pointY": 454.742, - "radius": 10, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 243.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 246.8, - "pointY": 454.742, - "radius": 7, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 260.8, - "pointY": 454.742, - "radius": 7, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 246.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 249.8, - "pointY": 454.742, - "radius": 4, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 257.8, - "pointY": 454.742, - "radius": 4, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 249.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 252.8, - "pointY": 454.742, - "radius": 1, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 254.8, - "pointY": 454.742, - "radius": 1, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 252.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.3, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 231.8, - "pointY": 454.742, - "radius": 22, - "depth": 10.3, - "curve": -0.9999999999999999 - }, - { - "pointX": 275.8, - "pointY": 454.742, - "radius": 22, - "depth": 10.3, - "curve": -0.9999999999999999 - }, - { - "pointX": 231.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 234.8, - "pointY": 454.742, - "radius": 19, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 272.8, - "pointY": 454.742, - "radius": 19, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 234.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 237.8, - "pointY": 454.742, - "radius": 16, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 269.8, - "pointY": 454.742, - "radius": 16, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 237.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 240.8, - "pointY": 454.742, - "radius": 13, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 266.8, - "pointY": 454.742, - "radius": 13, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 240.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 243.8, - "pointY": 454.742, - "radius": 10, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 263.8, - "pointY": 454.742, - "radius": 10, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 243.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 246.8, - "pointY": 454.742, - "radius": 7, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 260.8, - "pointY": 454.742, - "radius": 7, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 246.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 249.8, - "pointY": 454.742, - "radius": 4, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 257.8, - "pointY": 454.742, - "radius": 4, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 249.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.3, - "curve": 0 - }, - { - "pointX": 252.8, - "pointY": 454.742, - "radius": 1, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 254.8, - "pointY": 454.742, - "radius": 1, - "depth": 10.3, - "curve": 0.9999999999999999 - }, - { - "pointX": 252.8, - "pointY": 454.742, - "radius": 0, - "depth": 10.3, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - } - ], - "modelListThrough": [], - "modelListSide": [], - "thickness": 18, - "isUnRegular": false, - "bigHoleInFaceA": false, - "holeCountFront": 0, - "holeCountBack": 0, - "holeCountThrough": 0, - "holeCountSide": 0, - "holeCountLeft": 0, - "holeCountRight": 0, - "holeCountTop": 0, - "holeCountBottom": 0, - "holeCountBevelled": 0, - "modelCountFront": 8, - "modelCountBack": 9, - "modelCountThrough": 0, - "hasModelThrogh": false, - "isTwoFaceProcess": false, - "placeStyleFront": 0, - "placeStyleFrontReverse": 1, - "placeStyleBack": 4, - "placeStyleBackReverse": 7, - "labelPosX": -1, - "labelPosY": -1, - "isInited": false, - "isChecked": false, - "isOffsetRounding": false, - "offsetKnifeRadius": 3, - "isUseSameKnifeToHelpCut": false, - "useSameKnifeToHelpCutGap": 0, - "preMillingExpandSize": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0, - "width": 0, - "length": 0 - }, - "modelExpandSize": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0, - "width": 0, - "length": 0 - }, - "vKnifeModelExpandSize": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0, - "width": 0, - "length": 0 - }, - "sameKnfieHelpExpandSize": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0, - "width": 0, - "length": 0 - }, - "currentSizeExpand": { - "left": 3.005, - "right": 3.005, - "top": 3.005, - "bottom": 3.005, - "width": 6.01, - "length": 6.01 - }, - "borderContour": { - "placeStyle": 0, - "borderFinal": [ - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 500, - "m_Y": 0 - }, - "tagData": 0, - "m_Length": 500 - }, - { - "m_StartPoint": { - "m_X": 500, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 500, - "m_Y": 800 - }, - "tagData": 1, - "m_Length": 800 - }, - { - "m_StartPoint": { - "m_X": 500, - "m_Y": 800 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 800 - }, - "tagData": 1, - "m_Length": 500 - }, - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 800 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 0 - }, - "tagData": 0, - "m_Length": 800 - } - ], - "borderOrg": [ - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 498.2, - "m_Y": 0 - }, - "m_Length": 498.2 - }, - { - "m_StartPoint": { - "m_X": 498.2, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 498.2, - "m_Y": 798.2 - }, - "m_Length": 798.2 - }, - { - "m_StartPoint": { - "m_X": 498.2, - "m_Y": 798.2 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 798.2 - }, - "m_Length": 498.2 - }, - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 798.2 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 0 - }, - "m_Length": 798.2 - } - ], - "borderPreMilling": [ - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 498.2, - "m_Y": 0 - }, - "m_Length": 498.2 - }, - { - "m_StartPoint": { - "m_X": 498.2, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 498.2, - "m_Y": 798.2 - }, - "m_Length": 798.2 - }, - { - "m_StartPoint": { - "m_X": 498.2, - "m_Y": 798.2 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 798.2 - }, - "m_Length": 498.2 - }, - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 798.2 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 0 - }, - "m_Length": 798.2 - } - ], - "polylineOrg": { - "_isErase": false, - "IsEmbedEntity": false, - "OnlyRenderType": true, - "HasEdgeRenderType": false, - "HasPlaceFaceRenderType": false, - "HasBigHoleFaceRenderType": false, - "_CacheDrawObject": {}, - "_Color": 7, - "_Matrix": { - "elements": [ - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1 - ] - }, - "_SpaceOCS": { - "elements": [ - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1 - ] - }, - "_Visible": true, - "_VisibleInRender": true, - "_Freeze": false, - "_LockMaterial": false, - "__ProcessingGroupList": [], - "NeedUpdateFlag": 0, - "AutoUpdate": true, - "__UpdateVersion__": 1, - "_RoomName": "", - "_CabinetName": "", - "_LineData": [ - { - "pt": { - "x": 0, - "y": 0 - }, - "bul": 0 - }, - { - "pt": { - "x": 498.2, - "y": 0 - }, - "bul": 0 - }, - { - "pt": { - "x": 498.2, - "y": 798.2 - }, - "bul": 0 - }, - { - "pt": { - "x": 0, - "y": 798.2 - }, - "bul": 0 - } - ], - "_DisplayAccuracy": 0, - "_ClosedMark": true - }, - "border": [ - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 498.2, - "m_Y": 0 - }, - "m_Length": 498.2 - }, - { - "m_StartPoint": { - "m_X": 498.2, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 498.2, - "m_Y": 798.2 - }, - "m_Length": 798.2 - }, - { - "m_StartPoint": { - "m_X": 498.2, - "m_Y": 798.2 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 798.2 - }, - "m_Length": 498.2 - }, - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 798.2 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 0 - }, - "m_Length": 798.2 - } - ], - "borderSameKnifeHelpCut": null, - "cutLines": null, - "cutLinesSameKnifeHelpCut": null, - "borderMoving": null, - "borderModelThrough": [], - "borderModelThroughR": [], - "cutLinesModelThrough": [], - "borderInnerPlace": [], - "blockInnerSpace": [], - "blockOuterSpace": null, - "polylines2vModel": [], - "polylinesOutModel": [], - "placeContours": [] - }, - "remarkParams": {} - }, - "orderId": "1907276351086264320", - "goodsId": "BD10010006", - "roomId": 0, - "bodyId": 0, - "blockId": "1907276518397050890", - "oldBlockId": "1907276518397050890", - "blockNo": "25044454401", - "customPlateNo": "F007 - R001 - C001 - P002", - "labelNo": "", - "blockName": "顶板1", - "plateRemark": "前边封厚边", - "remark1": "", - "remark2": "", - "remark3": "", - "remark4": "", - "remark5": "", - "extraRemark": {}, - "width": 500, - "length": 800, - "thickness": 20, - "area": 0.4, - "sealLeft": 0, - "sealRight": 1, - "sealTop": 1, - "sealBottom": 0, - "cutWidth": 499, - "cutLength": 799, - "cutArea": 0.39870099999999997, - "isAdditionalBlock": false, - "isRemainBlock": false, - "texture": 0, - "placeHole": 1, - "isUnRegular": false, - "isTurnFaceToPlace": true, - "isTwoFaceToPlace": false, - "isCurvedGroundLine": false, - "isPlaced": false, - "fullBoardId": 0, - "boardId": 0, - "placeId": 0, - "placeX": 0, - "placeY": 0, - "placeStyle": 0, - "cutRegion": 0, - "cutOrder": 0, - "cutPointId": 0, - "placeWidth": 0, - "placeLength": 0, - "placeSealLeft": 0, - "placeSealRight": 0, - "placeSealTop": 0, - "placeSealBottom": 0, - "orgSizeExpand": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0, - "width": 0, - "length": 0 - }, - "placeOffX": 0, - "placeOffY": 0, - "isAutoPlaced": true, - "isOutBoard": false, - "isOverlap": false, - "placeDirection": "→", - "placeDirection_Length": "→", - "isDrilling": true, - "isModeling": true, - "overBlockFlag": 0, - "isCutOtherFace": false, - "isCutTurnOver": false, - "holeCountSideLeft": 0, - "holeCountSideRight": 0, - "holeCountSideTop": 0, - "holeCountSideBottom": 0, - "holeListFaceA": [], - "holeListFaceB": [], - "modelListFaceA": [], - "modelListFaceB": [], - "labelPosX": 0, - "labelPosY": 0, - "isCncLabelA": false, - "isCncLabelB": false, - "isCncLabelTurnOver": false, - "type": 2, - "openDoorType": 0, - "_blockId": "1907276518397050890" - }, - { - "blockDetail": { - "organId": 0, - "blockId": "1907276518409633793", - "pointDetail": [], - "modelDetail": [], - "holeDetail": [], - "offsetX": 1.2, - "offsetY": -4.4, - "cutWidth": 164.2, - "cutLength": 1032.511, - "points": [], - "orgPoints": [], - "orgContourData": null, - "holes": [], - "holeListFaceA": [], - "holeListFaceB": [], - "holeListThrough": [], - "holeListSide": [], - "models": [], - "modelListFaceA": [], - "modelListFaceB": [], - "modelListThrough": [], - "modelListSide": [], - "thickness": 18, - "isUnRegular": false, - "bigHoleInFaceA": false, - "holeCountFront": 0, - "holeCountBack": 0, - "holeCountThrough": 0, - "holeCountSide": 0, - "holeCountLeft": 0, - "holeCountRight": 0, - "holeCountTop": 0, - "holeCountBottom": 0, - "holeCountBevelled": 0, - "modelCountFront": 0, - "modelCountBack": 0, - "modelCountThrough": 0, - "hasModelThrogh": false, - "isTwoFaceProcess": false, - "placeStyleFront": 0, - "placeStyleFrontReverse": 1, - "placeStyleBack": 4, - "placeStyleBackReverse": 7, - "labelPosX": -1, - "labelPosY": -1, - "isInited": false, - "isChecked": false, - "isOffsetRounding": false, - "offsetKnifeRadius": 3, - "isUseSameKnifeToHelpCut": false, - "useSameKnifeToHelpCutGap": 0, - "preMillingExpandSize": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0, - "width": 0, - "length": 0 - }, - "modelExpandSize": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0, - "width": 0, - "length": 0 - }, - "vKnifeModelExpandSize": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0, - "width": 0, - "length": 0 - }, - "sameKnfieHelpExpandSize": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0, - "width": 0, - "length": 0 - }, - "currentSizeExpand": { - "left": 3.005, - "right": 3.005, - "top": 3.005, - "bottom": 3.005, - "width": 6.01, - "length": 6.01 - }, - "borderContour": { - "placeStyle": 0, - "borderFinal": [ - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 166, - "m_Y": 0 - }, - "tagData": 0, - "m_Length": 166 - }, - { - "m_StartPoint": { - "m_X": 166, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 166, - "m_Y": 1023.711 - }, - "tagData": 1, - "m_Length": 1023.711 - }, - { - "m_StartPoint": { - "m_X": 166, - "m_Y": 1023.711 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 1023.711 - }, - "tagData": 0, - "m_Length": 166 - }, - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 1023.711 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 0 - }, - "tagData": 0, - "m_Length": 1023.711 - } - ], - "borderOrg": [ - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 164.2, - "m_Y": 0 - }, - "m_Length": 164.2 - }, - { - "m_StartPoint": { - "m_X": 164.2, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 164.2, - "m_Y": 1032.511 - }, - "m_Length": 1032.511 - }, - { - "m_StartPoint": { - "m_X": 164.2, - "m_Y": 1032.511 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 1032.511 - }, - "m_Length": 164.2 - }, - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 1032.511 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 0 - }, - "m_Length": 1032.511 - } - ], - "borderPreMilling": [ - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 164.2, - "m_Y": 0 - }, - "m_Length": 164.2 - }, - { - "m_StartPoint": { - "m_X": 164.2, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 164.2, - "m_Y": 1032.511 - }, - "m_Length": 1032.511 - }, - { - "m_StartPoint": { - "m_X": 164.2, - "m_Y": 1032.511 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 1032.511 - }, - "m_Length": 164.2 - }, - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 1032.511 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 0 - }, - "m_Length": 1032.511 - } - ], - "polylineOrg": { - "_isErase": false, - "IsEmbedEntity": false, - "OnlyRenderType": true, - "HasEdgeRenderType": false, - "HasPlaceFaceRenderType": false, - "HasBigHoleFaceRenderType": false, - "_CacheDrawObject": {}, - "_Color": 7, - "_Matrix": { - "elements": [ - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1 - ] - }, - "_SpaceOCS": { - "elements": [ - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1 - ] - }, - "_Visible": true, - "_VisibleInRender": true, - "_Freeze": false, - "_LockMaterial": false, - "__ProcessingGroupList": [], - "NeedUpdateFlag": 0, - "AutoUpdate": true, - "__UpdateVersion__": 1, - "_RoomName": "", - "_CabinetName": "", - "_LineData": [ - { - "pt": { - "x": 0, - "y": 0 - }, - "bul": 0 - }, - { - "pt": { - "x": 164.2, - "y": 0 - }, - "bul": 0 - }, - { - "pt": { - "x": 164.2, - "y": 1032.511 - }, - "bul": 0 - }, - { - "pt": { - "x": 0, - "y": 1032.511 - }, - "bul": 0 - } - ], - "_DisplayAccuracy": 0, - "_ClosedMark": true - }, - "border": [ - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 164.2, - "m_Y": 0 - }, - "m_Length": 164.2 - }, - { - "m_StartPoint": { - "m_X": 164.2, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 164.2, - "m_Y": 1032.511 - }, - "m_Length": 1032.511 - }, - { - "m_StartPoint": { - "m_X": 164.2, - "m_Y": 1032.511 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 1032.511 - }, - "m_Length": 164.2 - }, - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 1032.511 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 0 - }, - "m_Length": 1032.511 - } - ], - "borderSameKnifeHelpCut": null, - "cutLines": null, - "cutLinesSameKnifeHelpCut": null, - "borderMoving": null, - "borderModelThrough": [], - "borderModelThroughR": [], - "cutLinesModelThrough": [], - "borderInnerPlace": [], - "blockInnerSpace": [], - "blockOuterSpace": null, - "polylines2vModel": [], - "polylinesOutModel": [], - "placeContours": [] - }, - "remarkParams": {} - }, - "orderId": "1907276351086264320", - "goodsId": "BD10010006", - "roomId": 0, - "bodyId": 0, - "blockId": "1907276518409633793", - "oldBlockId": "1907276518409633793", - "blockNo": "25044454402", - "customPlateNo": "F007 - R001 - C001 - P003", - "labelNo": "", - "blockName": "层板", - "plateRemark": "上下侧面正面斜切63度, 斜边隐形连接件", - "remark1": "", - "remark2": "", - "remark3": "", - "remark4": "", - "remark5": "", - "extraRemark": {}, - "width": 166, - "length": 1023.711, - "thickness": 6, - "area": 0.17, - "sealLeft": 0, - "sealRight": 1, - "sealTop": 0, - "sealBottom": 0, - "cutWidth": 165, - "cutLength": 1023.711, - "cutArea": 0.168912315, - "isAdditionalBlock": false, - "isRemainBlock": false, - "texture": 0, - "placeHole": 1, - "isUnRegular": false, - "isTurnFaceToPlace": true, - "isTwoFaceToPlace": false, - "isCurvedGroundLine": false, - "isPlaced": false, - "fullBoardId": 0, - "boardId": 0, - "placeId": 0, - "placeX": 0, - "placeY": 0, - "placeStyle": 0, - "cutRegion": 0, - "cutOrder": 0, - "cutPointId": 0, - "placeWidth": 0, - "placeLength": 0, - "placeSealLeft": 0, - "placeSealRight": 0, - "placeSealTop": 0, - "placeSealBottom": 0, - "orgSizeExpand": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0, - "width": 0, - "length": 0 - }, - "placeOffX": 0, - "placeOffY": 0, - "isAutoPlaced": true, - "isOutBoard": false, - "isOverlap": false, - "placeDirection": "→", - "placeDirection_Length": "→", - "isDrilling": true, - "isModeling": true, - "overBlockFlag": 0, - "isCutOtherFace": false, - "isCutTurnOver": false, - "holeCountSideLeft": 0, - "holeCountSideRight": 0, - "holeCountSideTop": 0, - "holeCountSideBottom": 0, - "holeListFaceA": [], - "holeListFaceB": [], - "modelListFaceA": [], - "modelListFaceB": [], - "labelPosX": 0, - "labelPosY": 0, - "isCncLabelA": false, - "isCncLabelB": false, - "isCncLabelTurnOver": false, - "type": 2, - "openDoorType": 0, - "_blockId": "1907276518409633793" - }, - { - "blockDetail": { - "organId": 0, - "blockId": "1907276518426411009", - "pointDetail": [], - "modelDetail": [], - "holeDetail": [], - "offsetX": 1.176, - "offsetY": 1, - "cutWidth": 1138.917, - "cutLength": 1083.174, - "points": [ - { - "pointX": 217.514, - "pointY": 0, - "curve": 0, - "radius": 0, - "sealSize": 0, - "isPreCutRequired": false - }, - { - "pointX": 921.403, - "pointY": 0, - "curve": 0, - "radius": 0, - "sealSize": 0, - "isPreCutRequired": false - }, - { - "pointX": 1138.917, - "pointY": 669.438, - "curve": 0, - "radius": 0, - "sealSize": 0, - "isPreCutRequired": false - }, - { - "pointX": 569.458, - "pointY": 1083.174, - "curve": 0, - "radius": 0, - "sealSize": 0, - "isPreCutRequired": false - }, - { - "pointX": 0, - "pointY": 669.438, - "curve": 0, - "radius": 0, - "sealSize": 0, - "isPreCutRequired": false - } - ], - "orgPoints": [ - { - "pointX": 217.963, - "pointY": 0, - "curve": 0, - "radius": 0, - "sealSize": 1, - "isPreCutRequired": false - }, - { - "pointX": 923.305, - "pointY": 0, - "curve": 0, - "radius": 0, - "sealSize": 1, - "isPreCutRequired": false - }, - { - "pointX": 1141.268, - "pointY": 670.82, - "curve": 0, - "radius": 0, - "sealSize": 1, - "isPreCutRequired": false - }, - { - "pointX": 570.634, - "pointY": 1085.41, - "curve": 0, - "radius": 0, - "sealSize": 1, - "isPreCutRequired": false - }, - { - "pointX": 0, - "pointY": 670.82, - "curve": 0, - "radius": 0, - "sealSize": 1, - "isPreCutRequired": false - } - ], - "orgContourData": null, - "holes": [], - "holeListFaceA": [], - "holeListFaceB": [], - "holeListThrough": [], - "holeListSide": [], - "models": [ - { - "orderId": "", - "blockId": 0, - "modelId": 1, - "lineId": 1, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 10, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 381.1855575027534, - "y": 334.4101966249683, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 405.6878156830016, - "y": 258.99999999999994, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 733.2280038711823, - "y": 259, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 757.7302620514309, - "y": 334.4101966249683, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 733.2280038711823, - "y": 409.82039324993667, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 405.68781568300204, - "y": 409.8203932499368, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 381.1855575027534, - "y": 334.4101966249683, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 384.34, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 407.868, - "pointY": 406.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 731.049, - "pointY": 406.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 754.576, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 731.049, - "pointY": 262, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 407.868, - "pointY": 262, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 384.34, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 387.495, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 410.048, - "pointY": 265, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 728.869, - "pointY": 265, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 751.422, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 728.869, - "pointY": 403.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 410.048, - "pointY": 403.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 387.495, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 390.649, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 412.227, - "pointY": 268, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 726.69, - "pointY": 268, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 748.268, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 726.69, - "pointY": 400.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 412.227, - "pointY": 400.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 390.649, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 393.804, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 414.407, - "pointY": 271, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 724.51, - "pointY": 271, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 745.113, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 724.51, - "pointY": 397.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 414.407, - "pointY": 397.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 393.804, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 396.958, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 416.586, - "pointY": 274, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 722.33, - "pointY": 274, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 741.959, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 722.33, - "pointY": 394.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 416.586, - "pointY": 394.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 396.958, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 400.112, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 418.766, - "pointY": 277, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 720.151, - "pointY": 277, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 738.804, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 720.151, - "pointY": 391.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 418.766, - "pointY": 391.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 400.112, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 403.267, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 420.946, - "pointY": 280, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 717.971, - "pointY": 280, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 735.65, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 717.971, - "pointY": 388.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 420.946, - "pointY": 388.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 403.267, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 406.421, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 423.125, - "pointY": 283, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 715.791, - "pointY": 283, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 732.496, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 715.791, - "pointY": 385.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 423.125, - "pointY": 385.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 406.421, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 409.575, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 425.305, - "pointY": 286, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 713.612, - "pointY": 286, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 729.341, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 713.612, - "pointY": 382.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 425.305, - "pointY": 382.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 409.575, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 412.73, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 427.485, - "pointY": 289, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 711.432, - "pointY": 289, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 726.187, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 711.432, - "pointY": 379.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 427.485, - "pointY": 379.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 412.73, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 415.884, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 429.664, - "pointY": 292, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 709.253, - "pointY": 292, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 723.032, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 709.253, - "pointY": 376.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 429.664, - "pointY": 376.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 415.884, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 419.039, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 431.844, - "pointY": 295, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 707.073, - "pointY": 295, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 719.878, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 707.073, - "pointY": 373.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 431.844, - "pointY": 373.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 419.039, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 422.193, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 434.023, - "pointY": 298, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 704.893, - "pointY": 298, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 716.724, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 704.893, - "pointY": 370.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 434.023, - "pointY": 370.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 422.193, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 425.347, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 436.203, - "pointY": 301, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 702.714, - "pointY": 301, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 713.569, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 702.714, - "pointY": 367.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 436.203, - "pointY": 367.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 425.347, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 428.502, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 438.383, - "pointY": 304, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 700.534, - "pointY": 304, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 710.415, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 700.534, - "pointY": 364.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 438.383, - "pointY": 364.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 428.502, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 431.656, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 440.562, - "pointY": 307, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 698.354, - "pointY": 307, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 707.261, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 698.354, - "pointY": 361.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 440.562, - "pointY": 361.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 431.656, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 434.811, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 442.742, - "pointY": 310, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 696.175, - "pointY": 310, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 704.106, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 696.175, - "pointY": 358.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 442.742, - "pointY": 358.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 434.811, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 437.965, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 444.922, - "pointY": 313, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 693.995, - "pointY": 313, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 700.952, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 693.995, - "pointY": 355.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 444.922, - "pointY": 355.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 437.965, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 441.119, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 447.101, - "pointY": 316, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 691.816, - "pointY": 316, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 697.797, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 691.816, - "pointY": 352.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 447.101, - "pointY": 352.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 441.119, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 444.274, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 449.281, - "pointY": 319, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 689.636, - "pointY": 319, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 694.643, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 689.636, - "pointY": 349.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 449.281, - "pointY": 349.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 444.274, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 447.428, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 451.46, - "pointY": 322, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 687.456, - "pointY": 322, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 691.489, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 687.456, - "pointY": 346.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 451.46, - "pointY": 346.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 447.428, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 450.582, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 453.64, - "pointY": 325, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 685.277, - "pointY": 325, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 688.334, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 685.277, - "pointY": 343.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 453.64, - "pointY": 343.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 450.582, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 453.737, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 455.82, - "pointY": 328, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 683.097, - "pointY": 328, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 685.18, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 683.097, - "pointY": 340.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 455.82, - "pointY": 340.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 453.737, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 456.891, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 457.999, - "pointY": 331, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 680.917, - "pointY": 331, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 682.025, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 680.917, - "pointY": 337.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 457.999, - "pointY": 337.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 456.891, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 460.046, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 460.179, - "pointY": 334, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 678.738, - "pointY": 334, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 678.871, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 678.738, - "pointY": 334.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 460.179, - "pointY": 334.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 460.046, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 384.34, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 407.868, - "pointY": 406.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 731.049, - "pointY": 406.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 754.576, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 731.049, - "pointY": 262, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 407.868, - "pointY": 262, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 384.34, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 387.495, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 410.048, - "pointY": 265, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 728.869, - "pointY": 265, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 751.422, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 728.869, - "pointY": 403.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 410.048, - "pointY": 403.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 387.495, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 390.649, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 412.227, - "pointY": 268, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 726.69, - "pointY": 268, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 748.268, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 726.69, - "pointY": 400.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 412.227, - "pointY": 400.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 390.649, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 393.804, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 414.407, - "pointY": 271, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 724.51, - "pointY": 271, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 745.113, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 724.51, - "pointY": 397.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 414.407, - "pointY": 397.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 393.804, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 396.958, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 416.586, - "pointY": 274, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 722.33, - "pointY": 274, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 741.959, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 722.33, - "pointY": 394.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 416.586, - "pointY": 394.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 396.958, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 400.112, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 418.766, - "pointY": 277, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 720.151, - "pointY": 277, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 738.804, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 720.151, - "pointY": 391.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 418.766, - "pointY": 391.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 400.112, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 403.267, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 420.946, - "pointY": 280, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 717.971, - "pointY": 280, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 735.65, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 717.971, - "pointY": 388.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 420.946, - "pointY": 388.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 403.267, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 406.421, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 423.125, - "pointY": 283, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 715.791, - "pointY": 283, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 732.496, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 715.791, - "pointY": 385.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 423.125, - "pointY": 385.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 406.421, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 409.575, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 425.305, - "pointY": 286, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 713.612, - "pointY": 286, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 729.341, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 713.612, - "pointY": 382.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 425.305, - "pointY": 382.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 409.575, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 412.73, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 427.485, - "pointY": 289, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 711.432, - "pointY": 289, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 726.187, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 711.432, - "pointY": 379.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 427.485, - "pointY": 379.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 412.73, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 415.884, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 429.664, - "pointY": 292, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 709.253, - "pointY": 292, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 723.032, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 709.253, - "pointY": 376.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 429.664, - "pointY": 376.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 415.884, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 419.039, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 431.844, - "pointY": 295, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 707.073, - "pointY": 295, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 719.878, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 707.073, - "pointY": 373.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 431.844, - "pointY": 373.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 419.039, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 422.193, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 434.023, - "pointY": 298, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 704.893, - "pointY": 298, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 716.724, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 704.893, - "pointY": 370.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 434.023, - "pointY": 370.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 422.193, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 425.347, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 436.203, - "pointY": 301, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 702.714, - "pointY": 301, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 713.569, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 702.714, - "pointY": 367.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 436.203, - "pointY": 367.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 425.347, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 428.502, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 438.383, - "pointY": 304, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 700.534, - "pointY": 304, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 710.415, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 700.534, - "pointY": 364.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 438.383, - "pointY": 364.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 428.502, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 431.656, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 440.562, - "pointY": 307, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 698.354, - "pointY": 307, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 707.261, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 698.354, - "pointY": 361.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 440.562, - "pointY": 361.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 431.656, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 434.811, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 442.742, - "pointY": 310, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 696.175, - "pointY": 310, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 704.106, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 696.175, - "pointY": 358.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 442.742, - "pointY": 358.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 434.811, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 437.965, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 444.922, - "pointY": 313, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 693.995, - "pointY": 313, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 700.952, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 693.995, - "pointY": 355.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 444.922, - "pointY": 355.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 437.965, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 441.119, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 447.101, - "pointY": 316, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 691.816, - "pointY": 316, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 697.797, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 691.816, - "pointY": 352.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 447.101, - "pointY": 352.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 441.119, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 444.274, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 449.281, - "pointY": 319, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 689.636, - "pointY": 319, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 694.643, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 689.636, - "pointY": 349.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 449.281, - "pointY": 349.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 444.274, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 447.428, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 451.46, - "pointY": 322, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 687.456, - "pointY": 322, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 691.489, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 687.456, - "pointY": 346.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 451.46, - "pointY": 346.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 447.428, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 450.582, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 453.64, - "pointY": 325, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 685.277, - "pointY": 325, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 688.334, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 685.277, - "pointY": 343.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 453.64, - "pointY": 343.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 450.582, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 453.737, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 455.82, - "pointY": 328, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 683.097, - "pointY": 328, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 685.18, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 683.097, - "pointY": 340.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 455.82, - "pointY": 340.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 453.737, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 456.891, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 457.999, - "pointY": 331, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 680.917, - "pointY": 331, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 682.025, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 680.917, - "pointY": 337.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 457.999, - "pointY": 337.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 456.891, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 460.046, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 460.179, - "pointY": 334, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 678.738, - "pointY": 334, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 678.871, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 678.738, - "pointY": 334.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 460.179, - "pointY": 334.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 460.046, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 2, - "lineId": 2, - "face": 0, - "knifeName": "V90v - 40", - "knifeRadius": 20, - "depth": 10, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": null, - "pointList": [ - { - "pointX": 776.821, - "pointY": 469.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 362.096, - "pointY": 469.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 318.098, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 362.096, - "pointY": 199, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 776.821, - "pointY": 199, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 820.818, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 776.821, - "pointY": 469.82, - "radius": 0, - "depth": 10, - "curve": 0 - } - ], - "realKnifeRadius": 0, - "realPointList": [], - "realKnifeId": -1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [ - { - "name": "V90v - 40", - "offset": 0, - "radius": 20, - "depth": 10, - "angle": 1.571 - }, - { - "name": "V90v - 40", - "offset": -10, - "radius": 20, - "depth": 10, - "angle": 1.571 - }, - { - "name": "ZD5", - "offset": -2.5, - "radius": 2.5, - "depth": 10, - "angle": 0 - }, - { - "name": "ZD5", - "offset": -5, - "radius": 2.5, - "depth": 10, - "angle": 0 - }, - { - "name": "ZD5", - "offset": -7.5, - "radius": 2.5, - "depth": 10, - "angle": 0 - } - ], - "VLines": [ - { - "isFaceB": false, - "name": "V90v - 40", - "value": 0, - "knifeId": -1, - "knifeRadius": 20, - "depth": 10, - "points": [ - { - "x": 784.0879243974632, - "y": 479.82203693949305, - "z": 10, - "bul": 0, - "r": 0 - }, - { - "x": 776.821, - "y": 469.82, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 362.096, - "y": 469.82, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 354.82912664182254, - "y": 479.82203693949305, - "z": 10, - "bul": 0, - "r": 0 - }, - { - "x": 362.096, - "y": 469.82, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 318.098, - "y": 334.41, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 307.5812217510182, - "y": 334.40999999999997, - "z": 10, - "bul": 0, - "r": 0 - }, - { - "x": 318.098, - "y": 334.41, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 362.096, - "y": 199, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 354.8291266418225, - "y": 188.99796306050692, - "z": 10, - "bul": 0, - "r": 0 - }, - { - "x": 362.096, - "y": 199, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 776.821, - "y": 199, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 784.0879243974632, - "y": 188.99796306050692, - "z": 10, - "bul": 0, - "r": 0 - }, - { - "x": 776.821, - "y": 199, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 820.818, - "y": 334.41, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 831.3347554234352, - "y": 334.40999999999997, - "z": 10, - "bul": 0, - "r": 0 - }, - { - "x": 820.818, - "y": 334.41, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 776.821, - "y": 469.82, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 784.0879243974632, - "y": 479.82203693949305, - "z": 10, - "bul": 0, - "r": 0 - } - ], - "offset": { - "name": "V90v - 40", - "offset": 0, - "radius": 20, - "depth": 10, - "angle": 1.571 - } - }, - { - "isFaceB": false, - "name": "V90v - 40", - "value": -10, - "knifeId": -1, - "knifeRadius": 20, - "depth": 10, - "points": [ - { - "x": 776.8224799270778, - "y": 469.82203693949305, - "z": 10, - "bul": 0, - "r": 0 - }, - { - "x": 769.5555555296146, - "y": 459.82, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 369.3613934414942, - "y": 459.82, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 362.0945200833167, - "y": 469.82203693949305, - "z": 10, - "bul": 0, - "r": 0 - }, - { - "x": 369.3613934414942, - "y": 459.82, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 328.6126364811515, - "y": 334.41, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 318.0958582321697, - "y": 334.40999999999997, - "z": 10, - "bul": 0, - "r": 0 - }, - { - "x": 328.6126364811515, - "y": 334.41, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 369.36139344149416, - "y": 209, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 362.0945200833167, - "y": 198.99796306050692, - "z": 10, - "bul": 0, - "r": 0 - }, - { - "x": 369.36139344149416, - "y": 209, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 769.5555555296145, - "y": 209, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 776.8224799270777, - "y": 198.99796306050695, - "z": 10, - "bul": 0, - "r": 0 - }, - { - "x": 769.5555555296145, - "y": 209, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 810.3033863397467, - "y": 334.41, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 820.8201417631819, - "y": 334.41, - "z": 10, - "bul": 0, - "r": 0 - }, - { - "x": 810.3033863397467, - "y": 334.41, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 769.5555555296146, - "y": 459.82, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 776.8224799270778, - "y": 469.82203693949305, - "z": 10, - "bul": 0, - "r": 0 - } - ], - "offset": { - "name": "V90v - 40", - "offset": -10, - "radius": 20, - "depth": 10, - "angle": 1.571 - } - }, - { - "isFaceB": false, - "name": "ZD5", - "value": -2.5, - "knifeId": -1, - "knifeRadius": 2.5, - "depth": 10, - "points": [ - { - "x": 775.0046388824036, - "y": 467.32, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 363.9123483603736, - "y": 467.32, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 320.72665912028793, - "y": 334.41, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 363.9123483603735, - "y": 201.5, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 775.0046388824036, - "y": 201.49999999999997, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 818.1893465849366, - "y": 334.41, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 775.0046388824036, - "y": 467.32, - "z": 0, - "bul": 0, - "r": 0 - } - ], - "offset": { - "name": "ZD5", - "offset": -2.5, - "radius": 2.5, - "depth": 10, - "angle": 0 - } - }, - { - "isFaceB": false, - "name": "ZD5", - "value": -5, - "knifeId": -1, - "knifeRadius": 2.5, - "depth": 10, - "points": [ - { - "x": 773.1882777648073, - "y": 464.82, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 365.72869672074705, - "y": 464.82, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 323.35531824057574, - "y": 334.41, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 365.72869672074705, - "y": 204, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 773.1882777648073, - "y": 204.00000000000003, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 815.5606931698733, - "y": 334.40999999999997, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 773.1882777648073, - "y": 464.82, - "z": 0, - "bul": 0, - "r": 0 - } - ], - "offset": { - "name": "ZD5", - "offset": -5, - "radius": 2.5, - "depth": 10, - "angle": 0 - } - }, - { - "isFaceB": false, - "name": "ZD5", - "value": -7.5, - "knifeId": -1, - "knifeRadius": 2.5, - "depth": 10, - "points": [ - { - "x": 771.3719166472108, - "y": 462.32, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 367.54504508112063, - "y": 462.32, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 325.9839773608636, - "y": 334.41, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 367.54504508112063, - "y": 206.5, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 771.3719166472108, - "y": 206.5, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 812.9320397548099, - "y": 334.41, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 771.3719166472108, - "y": 462.32, - "z": 0, - "bul": 0, - "r": 0 - } - ], - "offset": { - "name": "ZD5", - "offset": -7.5, - "radius": 2.5, - "depth": 10, - "angle": 0 - } - } - ], - "offsetInfo": "4()" - } - ], - "modelListFaceA": [ - { - "orderId": "", - "blockId": 0, - "modelId": 1, - "lineId": 1, - "face": 0, - "knifeName": "", - "knifeRadius": 3, - "depth": 10, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": { - "outline": [ - { - "pts": { - "x": 381.1855575027534, - "y": 334.4101966249683, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 405.6878156830016, - "y": 258.99999999999994, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 733.2280038711823, - "y": 259, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 757.7302620514309, - "y": 334.4101966249683, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 733.2280038711823, - "y": 409.82039324993667, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 405.68781568300204, - "y": 409.8203932499368, - "z": null - }, - "buls": 0, - "radius": null - }, - { - "pts": { - "x": 381.1855575027534, - "y": 334.4101966249683, - "z": null - }, - "buls": 0, - "radius": null - } - ], - "addLen": 0, - "addWidth": 0, - "addDepth": 0 - }, - "pointList": [ - { - "pointX": 384.34, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 407.868, - "pointY": 406.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 731.049, - "pointY": 406.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 754.576, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 731.049, - "pointY": 262, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 407.868, - "pointY": 262, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 384.34, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 387.495, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 410.048, - "pointY": 265, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 728.869, - "pointY": 265, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 751.422, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 728.869, - "pointY": 403.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 410.048, - "pointY": 403.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 387.495, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 390.649, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 412.227, - "pointY": 268, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 726.69, - "pointY": 268, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 748.268, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 726.69, - "pointY": 400.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 412.227, - "pointY": 400.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 390.649, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 393.804, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 414.407, - "pointY": 271, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 724.51, - "pointY": 271, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 745.113, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 724.51, - "pointY": 397.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 414.407, - "pointY": 397.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 393.804, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 396.958, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 416.586, - "pointY": 274, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 722.33, - "pointY": 274, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 741.959, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 722.33, - "pointY": 394.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 416.586, - "pointY": 394.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 396.958, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 400.112, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 418.766, - "pointY": 277, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 720.151, - "pointY": 277, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 738.804, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 720.151, - "pointY": 391.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 418.766, - "pointY": 391.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 400.112, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 403.267, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 420.946, - "pointY": 280, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 717.971, - "pointY": 280, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 735.65, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 717.971, - "pointY": 388.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 420.946, - "pointY": 388.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 403.267, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 406.421, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 423.125, - "pointY": 283, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 715.791, - "pointY": 283, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 732.496, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 715.791, - "pointY": 385.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 423.125, - "pointY": 385.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 406.421, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 409.575, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 425.305, - "pointY": 286, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 713.612, - "pointY": 286, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 729.341, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 713.612, - "pointY": 382.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 425.305, - "pointY": 382.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 409.575, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 412.73, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 427.485, - "pointY": 289, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 711.432, - "pointY": 289, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 726.187, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 711.432, - "pointY": 379.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 427.485, - "pointY": 379.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 412.73, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 415.884, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 429.664, - "pointY": 292, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 709.253, - "pointY": 292, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 723.032, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 709.253, - "pointY": 376.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 429.664, - "pointY": 376.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 415.884, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 419.039, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 431.844, - "pointY": 295, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 707.073, - "pointY": 295, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 719.878, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 707.073, - "pointY": 373.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 431.844, - "pointY": 373.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 419.039, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 422.193, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 434.023, - "pointY": 298, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 704.893, - "pointY": 298, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 716.724, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 704.893, - "pointY": 370.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 434.023, - "pointY": 370.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 422.193, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 425.347, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 436.203, - "pointY": 301, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 702.714, - "pointY": 301, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 713.569, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 702.714, - "pointY": 367.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 436.203, - "pointY": 367.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 425.347, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 428.502, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 438.383, - "pointY": 304, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 700.534, - "pointY": 304, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 710.415, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 700.534, - "pointY": 364.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 438.383, - "pointY": 364.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 428.502, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 431.656, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 440.562, - "pointY": 307, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 698.354, - "pointY": 307, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 707.261, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 698.354, - "pointY": 361.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 440.562, - "pointY": 361.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 431.656, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 434.811, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 442.742, - "pointY": 310, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 696.175, - "pointY": 310, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 704.106, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 696.175, - "pointY": 358.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 442.742, - "pointY": 358.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 434.811, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 437.965, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 444.922, - "pointY": 313, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 693.995, - "pointY": 313, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 700.952, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 693.995, - "pointY": 355.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 444.922, - "pointY": 355.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 437.965, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 441.119, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 447.101, - "pointY": 316, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 691.816, - "pointY": 316, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 697.797, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 691.816, - "pointY": 352.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 447.101, - "pointY": 352.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 441.119, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 444.274, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 449.281, - "pointY": 319, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 689.636, - "pointY": 319, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 694.643, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 689.636, - "pointY": 349.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 449.281, - "pointY": 349.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 444.274, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 447.428, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 451.46, - "pointY": 322, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 687.456, - "pointY": 322, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 691.489, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 687.456, - "pointY": 346.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 451.46, - "pointY": 346.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 447.428, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 450.582, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 453.64, - "pointY": 325, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 685.277, - "pointY": 325, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 688.334, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 685.277, - "pointY": 343.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 453.64, - "pointY": 343.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 450.582, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 453.737, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 455.82, - "pointY": 328, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 683.097, - "pointY": 328, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 685.18, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 683.097, - "pointY": 340.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 455.82, - "pointY": 340.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 453.737, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 456.891, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 457.999, - "pointY": 331, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 680.917, - "pointY": 331, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 682.025, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 680.917, - "pointY": 337.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 457.999, - "pointY": 337.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 456.891, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 460.046, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 460.179, - "pointY": 334, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 678.738, - "pointY": 334, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 678.871, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 678.738, - "pointY": 334.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 460.179, - "pointY": 334.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 460.046, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - } - ], - "realKnifeRadius": 3, - "realPointList": [ - { - "pointX": 384.34, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 407.868, - "pointY": 406.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 731.049, - "pointY": 406.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 754.576, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 731.049, - "pointY": 262, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 407.868, - "pointY": 262, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 384.34, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 387.495, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 410.048, - "pointY": 265, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 728.869, - "pointY": 265, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 751.422, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 728.869, - "pointY": 403.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 410.048, - "pointY": 403.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 387.495, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 390.649, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 412.227, - "pointY": 268, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 726.69, - "pointY": 268, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 748.268, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 726.69, - "pointY": 400.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 412.227, - "pointY": 400.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 390.649, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 393.804, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 414.407, - "pointY": 271, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 724.51, - "pointY": 271, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 745.113, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 724.51, - "pointY": 397.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 414.407, - "pointY": 397.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 393.804, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 396.958, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 416.586, - "pointY": 274, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 722.33, - "pointY": 274, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 741.959, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 722.33, - "pointY": 394.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 416.586, - "pointY": 394.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 396.958, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 400.112, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 418.766, - "pointY": 277, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 720.151, - "pointY": 277, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 738.804, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 720.151, - "pointY": 391.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 418.766, - "pointY": 391.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 400.112, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 403.267, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 420.946, - "pointY": 280, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 717.971, - "pointY": 280, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 735.65, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 717.971, - "pointY": 388.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 420.946, - "pointY": 388.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 403.267, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 406.421, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 423.125, - "pointY": 283, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 715.791, - "pointY": 283, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 732.496, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 715.791, - "pointY": 385.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 423.125, - "pointY": 385.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 406.421, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 409.575, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 425.305, - "pointY": 286, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 713.612, - "pointY": 286, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 729.341, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 713.612, - "pointY": 382.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 425.305, - "pointY": 382.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 409.575, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 412.73, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 427.485, - "pointY": 289, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 711.432, - "pointY": 289, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 726.187, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 711.432, - "pointY": 379.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 427.485, - "pointY": 379.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 412.73, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 415.884, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 429.664, - "pointY": 292, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 709.253, - "pointY": 292, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 723.032, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 709.253, - "pointY": 376.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 429.664, - "pointY": 376.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 415.884, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 419.039, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 431.844, - "pointY": 295, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 707.073, - "pointY": 295, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 719.878, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 707.073, - "pointY": 373.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 431.844, - "pointY": 373.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 419.039, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 422.193, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 434.023, - "pointY": 298, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 704.893, - "pointY": 298, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 716.724, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 704.893, - "pointY": 370.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 434.023, - "pointY": 370.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 422.193, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 425.347, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 436.203, - "pointY": 301, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 702.714, - "pointY": 301, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 713.569, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 702.714, - "pointY": 367.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 436.203, - "pointY": 367.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 425.347, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 428.502, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 438.383, - "pointY": 304, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 700.534, - "pointY": 304, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 710.415, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 700.534, - "pointY": 364.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 438.383, - "pointY": 364.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 428.502, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 431.656, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 440.562, - "pointY": 307, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 698.354, - "pointY": 307, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 707.261, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 698.354, - "pointY": 361.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 440.562, - "pointY": 361.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 431.656, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 434.811, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 442.742, - "pointY": 310, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 696.175, - "pointY": 310, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 704.106, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 696.175, - "pointY": 358.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 442.742, - "pointY": 358.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 434.811, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 437.965, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 444.922, - "pointY": 313, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 693.995, - "pointY": 313, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 700.952, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 693.995, - "pointY": 355.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 444.922, - "pointY": 355.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 437.965, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 441.119, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 447.101, - "pointY": 316, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 691.816, - "pointY": 316, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 697.797, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 691.816, - "pointY": 352.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 447.101, - "pointY": 352.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 441.119, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 444.274, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 449.281, - "pointY": 319, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 689.636, - "pointY": 319, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 694.643, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 689.636, - "pointY": 349.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 449.281, - "pointY": 349.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 444.274, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 447.428, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 451.46, - "pointY": 322, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 687.456, - "pointY": 322, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 691.489, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 687.456, - "pointY": 346.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 451.46, - "pointY": 346.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 447.428, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 450.582, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 453.64, - "pointY": 325, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 685.277, - "pointY": 325, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 688.334, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 685.277, - "pointY": 343.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 453.64, - "pointY": 343.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 450.582, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 453.737, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 455.82, - "pointY": 328, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 683.097, - "pointY": 328, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 685.18, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 683.097, - "pointY": 340.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 455.82, - "pointY": 340.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 453.737, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 456.891, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 457.999, - "pointY": 331, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 680.917, - "pointY": 331, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 682.025, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 680.917, - "pointY": 337.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 457.999, - "pointY": 337.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 456.891, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 460.046, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 460.179, - "pointY": 334, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 678.738, - "pointY": 334, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 678.871, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 678.738, - "pointY": 334.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 460.179, - "pointY": 334.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 460.046, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - } - ], - "realKnifeId": 1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [], - "VLines": [], - "offsetInfo": "" - }, - { - "orderId": "", - "blockId": 0, - "modelId": 2, - "lineId": 2, - "face": 0, - "knifeName": "V90v - 40", - "knifeRadius": 20, - "depth": 10, - "canSpace": false, - "isRect": false, - "isTilt": false, - "type": "", - "knife": null, - "modelWidth": 0, - "modelLength": 0, - "modelStartPoint": null, - "modelEndPoint": null, - "originModeling": null, - "pointList": [ - { - "pointX": 776.821, - "pointY": 469.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 362.096, - "pointY": 469.82, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 318.098, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 362.096, - "pointY": 199, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 776.821, - "pointY": 199, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 820.818, - "pointY": 334.41, - "radius": 0, - "depth": 10, - "curve": 0 - }, - { - "pointX": 776.821, - "pointY": 469.82, - "radius": 0, - "depth": 10, - "curve": 0 - } - ], - "realKnifeRadius": 0, - "realPointList": [], - "realKnifeId": -1, - "isCncCanNotProcess": true, - "cncCanNotProcessType": "", - "isCutting": true, - "offsetList": [ - { - "name": "V90v - 40", - "offset": 0, - "radius": 20, - "depth": 10, - "angle": 1.571 - }, - { - "name": "V90v - 40", - "offset": -10, - "radius": 20, - "depth": 10, - "angle": 1.571 - }, - { - "name": "ZD5", - "offset": -2.5, - "radius": 2.5, - "depth": 10, - "angle": 0 - }, - { - "name": "ZD5", - "offset": -5, - "radius": 2.5, - "depth": 10, - "angle": 0 - }, - { - "name": "ZD5", - "offset": -7.5, - "radius": 2.5, - "depth": 10, - "angle": 0 - } - ], - "VLines": [ - { - "isFaceB": false, - "name": "V90v - 40", - "value": 0, - "knifeId": -1, - "knifeRadius": 20, - "depth": 10, - "points": [ - { - "x": 784.0879243974632, - "y": 479.82203693949305, - "z": 10, - "bul": 0, - "r": 0 - }, - { - "x": 776.821, - "y": 469.82, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 362.096, - "y": 469.82, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 354.82912664182254, - "y": 479.82203693949305, - "z": 10, - "bul": 0, - "r": 0 - }, - { - "x": 362.096, - "y": 469.82, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 318.098, - "y": 334.41, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 307.5812217510182, - "y": 334.40999999999997, - "z": 10, - "bul": 0, - "r": 0 - }, - { - "x": 318.098, - "y": 334.41, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 362.096, - "y": 199, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 354.8291266418225, - "y": 188.99796306050692, - "z": 10, - "bul": 0, - "r": 0 - }, - { - "x": 362.096, - "y": 199, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 776.821, - "y": 199, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 784.0879243974632, - "y": 188.99796306050692, - "z": 10, - "bul": 0, - "r": 0 - }, - { - "x": 776.821, - "y": 199, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 820.818, - "y": 334.41, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 831.3347554234352, - "y": 334.40999999999997, - "z": 10, - "bul": 0, - "r": 0 - }, - { - "x": 820.818, - "y": 334.41, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 776.821, - "y": 469.82, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 784.0879243974632, - "y": 479.82203693949305, - "z": 10, - "bul": 0, - "r": 0 - } - ], - "offset": { - "name": "V90v - 40", - "offset": 0, - "radius": 20, - "depth": 10, - "angle": 1.571 - } - }, - { - "isFaceB": false, - "name": "V90v - 40", - "value": -10, - "knifeId": -1, - "knifeRadius": 20, - "depth": 10, - "points": [ - { - "x": 776.8224799270778, - "y": 469.82203693949305, - "z": 10, - "bul": 0, - "r": 0 - }, - { - "x": 769.5555555296146, - "y": 459.82, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 369.3613934414942, - "y": 459.82, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 362.0945200833167, - "y": 469.82203693949305, - "z": 10, - "bul": 0, - "r": 0 - }, - { - "x": 369.3613934414942, - "y": 459.82, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 328.6126364811515, - "y": 334.41, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 318.0958582321697, - "y": 334.40999999999997, - "z": 10, - "bul": 0, - "r": 0 - }, - { - "x": 328.6126364811515, - "y": 334.41, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 369.36139344149416, - "y": 209, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 362.0945200833167, - "y": 198.99796306050692, - "z": 10, - "bul": 0, - "r": 0 - }, - { - "x": 369.36139344149416, - "y": 209, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 769.5555555296145, - "y": 209, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 776.8224799270777, - "y": 198.99796306050695, - "z": 10, - "bul": 0, - "r": 0 - }, - { - "x": 769.5555555296145, - "y": 209, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 810.3033863397467, - "y": 334.41, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 820.8201417631819, - "y": 334.41, - "z": 10, - "bul": 0, - "r": 0 - }, - { - "x": 810.3033863397467, - "y": 334.41, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 769.5555555296146, - "y": 459.82, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 776.8224799270778, - "y": 469.82203693949305, - "z": 10, - "bul": 0, - "r": 0 - } - ], - "offset": { - "name": "V90v - 40", - "offset": -10, - "radius": 20, - "depth": 10, - "angle": 1.571 - } - }, - { - "isFaceB": false, - "name": "ZD5", - "value": -2.5, - "knifeId": -1, - "knifeRadius": 2.5, - "depth": 10, - "points": [ - { - "x": 775.0046388824036, - "y": 467.32, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 363.9123483603736, - "y": 467.32, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 320.72665912028793, - "y": 334.41, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 363.9123483603735, - "y": 201.5, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 775.0046388824036, - "y": 201.49999999999997, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 818.1893465849366, - "y": 334.41, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 775.0046388824036, - "y": 467.32, - "z": 0, - "bul": 0, - "r": 0 - } - ], - "offset": { - "name": "ZD5", - "offset": -2.5, - "radius": 2.5, - "depth": 10, - "angle": 0 - } - }, - { - "isFaceB": false, - "name": "ZD5", - "value": -5, - "knifeId": -1, - "knifeRadius": 2.5, - "depth": 10, - "points": [ - { - "x": 773.1882777648073, - "y": 464.82, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 365.72869672074705, - "y": 464.82, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 323.35531824057574, - "y": 334.41, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 365.72869672074705, - "y": 204, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 773.1882777648073, - "y": 204.00000000000003, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 815.5606931698733, - "y": 334.40999999999997, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 773.1882777648073, - "y": 464.82, - "z": 0, - "bul": 0, - "r": 0 - } - ], - "offset": { - "name": "ZD5", - "offset": -5, - "radius": 2.5, - "depth": 10, - "angle": 0 - } - }, - { - "isFaceB": false, - "name": "ZD5", - "value": -7.5, - "knifeId": -1, - "knifeRadius": 2.5, - "depth": 10, - "points": [ - { - "x": 771.3719166472108, - "y": 462.32, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 367.54504508112063, - "y": 462.32, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 325.9839773608636, - "y": 334.41, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 367.54504508112063, - "y": 206.5, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 771.3719166472108, - "y": 206.5, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 812.9320397548099, - "y": 334.41, - "z": 0, - "bul": 0, - "r": 0 - }, - { - "x": 771.3719166472108, - "y": 462.32, - "z": 0, - "bul": 0, - "r": 0 - } - ], - "offset": { - "name": "ZD5", - "offset": -7.5, - "radius": 2.5, - "depth": 10, - "angle": 0 - } - } - ], - "offsetInfo": "4()" - } - ], - "modelListFaceB": [], - "modelListThrough": [], - "modelListSide": [], - "thickness": 18, - "isUnRegular": true, - "bigHoleInFaceA": false, - "holeCountFront": 0, - "holeCountBack": 0, - "holeCountThrough": 0, - "holeCountSide": 0, - "holeCountLeft": 0, - "holeCountRight": 0, - "holeCountTop": 0, - "holeCountBottom": 0, - "holeCountBevelled": 0, - "modelCountFront": 2, - "modelCountBack": 0, - "modelCountThrough": 0, - "hasModelThrogh": false, - "isTwoFaceProcess": false, - "placeStyleFront": 0, - "placeStyleFrontReverse": 1, - "placeStyleBack": 4, - "placeStyleBackReverse": 7, - "labelPosX": -1, - "labelPosY": -1, - "isInited": false, - "isChecked": false, - "isOffsetRounding": true, - "offsetKnifeRadius": 3, - "isUseSameKnifeToHelpCut": false, - "useSameKnifeToHelpCutGap": 0, - "preMillingExpandSize": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0, - "width": 0, - "length": 0 - }, - "modelExpandSize": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0, - "width": 0, - "length": 0 - }, - "vKnifeModelExpandSize": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0, - "width": 0, - "length": 0 - }, - "sameKnfieHelpExpandSize": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0, - "width": 0, - "length": 0 - }, - "currentSizeExpand": { - "left": 3.005, - "right": 3.005, - "top": 3.005, - "bottom": 3.005, - "width": 6.01, - "length": 6.01 - }, - "borderContour": { - "placeStyle": 0, - "borderFinal": [ - { - "m_StartPoint": { - "m_X": 217.963, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 923.305, - "m_Y": 0 - }, - "tagData": 1, - "tagData2": 0, - "m_Length": 705.342 - }, - { - "m_StartPoint": { - "m_X": 923.305, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 1141.268, - "m_Y": 670.82 - }, - "tagData": 1, - "tagData2": 0, - "m_Length": 705.3420034061492 - }, - { - "m_StartPoint": { - "m_X": 1141.268, - "m_Y": 670.82 - }, - "m_EndPoint": { - "m_X": 570.634, - "m_Y": 1085.41 - }, - "tagData": 1, - "tagData2": 0, - "m_Length": 705.3424913160982 - }, - { - "m_StartPoint": { - "m_X": 570.634, - "m_Y": 1085.41 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 670.82 - }, - "tagData": 1, - "tagData2": 0, - "m_Length": 705.3424913160982 - }, - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 670.82 - }, - "m_EndPoint": { - "m_X": 217.963, - "m_Y": 0 - }, - "tagData": 1, - "tagData2": 0, - "m_Length": 705.3420034061492 - } - ], - "borderOrg": [ - { - "m_StartPoint": { - "m_X": 217.514, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 921.403, - "m_Y": 0 - }, - "tagData": 0, - "tagData2": 0, - "m_Length": 703.889 - }, - { - "m_StartPoint": { - "m_X": 921.403, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 1138.917, - "m_Y": 669.438 - }, - "tagData": 0, - "tagData2": 0, - "m_Length": 703.8888946701744 - }, - { - "m_StartPoint": { - "m_X": 1138.917, - "m_Y": 669.438 - }, - "m_EndPoint": { - "m_X": 569.458, - "m_Y": 1083.174 - }, - "tagData": 0, - "tagData2": 0, - "m_Length": 703.8899277422571 - }, - { - "m_StartPoint": { - "m_X": 569.458, - "m_Y": 1083.174 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 669.438 - }, - "tagData": 0, - "tagData2": 0, - "m_Length": 703.8891187253856 - } - ], - "borderPreMilling": [ - { - "m_StartPoint": { - "m_X": 217.514, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 921.403, - "m_Y": 0 - }, - "tagData": 0, - "tagData2": 0, - "m_Length": 703.889 - }, - { - "m_StartPoint": { - "m_X": 921.403, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 1138.917, - "m_Y": 669.438 - }, - "tagData": 0, - "tagData2": 0, - "m_Length": 703.8888946701744 - }, - { - "m_StartPoint": { - "m_X": 1138.917, - "m_Y": 669.438 - }, - "m_EndPoint": { - "m_X": 569.458, - "m_Y": 1083.174 - }, - "tagData": 0, - "tagData2": 0, - "m_Length": 703.8899277422571 - }, - { - "m_StartPoint": { - "m_X": 569.458, - "m_Y": 1083.174 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 669.438 - }, - "tagData": 0, - "tagData2": 0, - "m_Length": 703.8891187253856 - } - ], - "polylineOrg": { - "_isErase": false, - "IsEmbedEntity": false, - "OnlyRenderType": true, - "HasEdgeRenderType": false, - "HasPlaceFaceRenderType": false, - "HasBigHoleFaceRenderType": false, - "_CacheDrawObject": {}, - "_Color": 7, - "_Matrix": { - "elements": [ - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1 - ] - }, - "_SpaceOCS": { - "elements": [ - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1 - ] - }, - "_Visible": true, - "_VisibleInRender": true, - "_Freeze": false, - "_LockMaterial": false, - "__ProcessingGroupList": [], - "NeedUpdateFlag": 0, - "AutoUpdate": true, - "__UpdateVersion__": 1, - "_RoomName": "", - "_CabinetName": "", - "_LineData": [ - { - "pt": { - "x": 217.514, - "y": 0 - }, - "bul": 0 - }, - { - "pt": { - "x": 921.403, - "y": 0 - }, - "bul": 0 - }, - { - "pt": { - "x": 1138.917, - "y": 669.438 - }, - "bul": 0 - }, - { - "pt": { - "x": 569.458, - "y": 1083.174 - }, - "bul": 0 - } - ], - "_DisplayAccuracy": 0, - "_ClosedMark": true - }, - "border": [ - { - "m_StartPoint": { - "m_X": 217.514, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 921.403, - "m_Y": 0 - }, - "tagData": 0, - "tagData2": 0, - "m_Length": 703.889 - }, - { - "m_StartPoint": { - "m_X": 921.403, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 1138.917, - "m_Y": 669.438 - }, - "tagData": 0, - "tagData2": 0, - "m_Length": 703.8888946701744 - }, - { - "m_StartPoint": { - "m_X": 1138.917, - "m_Y": 669.438 - }, - "m_EndPoint": { - "m_X": 569.458, - "m_Y": 1083.174 - }, - "tagData": 0, - "tagData2": 0, - "m_Length": 703.8899277422571 - }, - { - "m_StartPoint": { - "m_X": 569.458, - "m_Y": 1083.174 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 669.438 - }, - "tagData": 0, - "tagData2": 0, - "m_Length": 703.8891187253856 - } - ], - "borderSameKnifeHelpCut": null, - "cutLines": null, - "cutLinesSameKnifeHelpCut": null, - "borderMoving": null, - "borderModelThrough": [], - "borderModelThroughR": [], - "cutLinesModelThrough": [], - "borderInnerPlace": [], - "blockInnerSpace": [], - "blockOuterSpace": null, - "polylines2vModel": [ - { - "_isErase": false, - "IsEmbedEntity": false, - "OnlyRenderType": true, - "HasEdgeRenderType": false, - "HasPlaceFaceRenderType": false, - "HasBigHoleFaceRenderType": false, - "_CacheDrawObject": {}, - "_Color": 7, - "_Matrix": { - "elements": [ - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1 - ] - }, - "_SpaceOCS": { - "elements": [ - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1 - ] - }, - "_Visible": true, - "_VisibleInRender": true, - "_Freeze": false, - "_LockMaterial": false, - "__ProcessingGroupList": [], - "NeedUpdateFlag": 0, - "AutoUpdate": true, - "__UpdateVersion__": 1, - "_RoomName": "", - "_CabinetName": "", - "_LineData": [ - { - "pt": { - "x": 812.4284830162819, - "y": 483.95274355862404 - }, - "bul": 0 - }, - { - "pt": { - "x": 779.2588165160631, - "y": 508.05198056447705 - }, - "bul": 0 - }, - { - "pt": { - "x": 766.3757445019467, - "y": 490.31999999999994 - }, - "bul": 0 - }, - { - "pt": { - "x": 372.5412986195547, - "y": 490.32000000000005 - }, - "bul": 0 - }, - { - "pt": { - "x": 359.65832880799826, - "y": 508.05196443564796 - }, - "bul": 0 - }, - { - "pt": { - "x": 326.48858181925226, - "y": 483.9528382128452 - }, - "bul": 0 - }, - { - "pt": { - "x": 339.37155163080985, - "y": 466.2208737771955 - }, - "bul": 0 - }, - { - "pt": { - "x": 303.20394344493695, - "y": 354.9100000000001 - }, - "bul": 0 - }, - { - "pt": { - "x": 287.58122175101823, - "y": 354.90999999999985 - }, - "bul": 0 - }, - { - "pt": { - "x": 287.58122175101823, - "y": 313.90999999999985 - }, - "bul": 0 - }, - { - "pt": { - "x": 303.20394344493695, - "y": 313.90999999999997 - }, - "bul": 0 - }, - { - "pt": { - "x": 339.3715516308099, - "y": 202.59912622280433 - }, - "bul": 0 - }, - { - "pt": { - "x": 326.48858181925266, - "y": 184.86716178715557 - }, - "bul": 0 - }, - { - "pt": { - "x": 359.65832880799763, - "y": 160.76803556435135 - }, - "bul": 0 - }, - { - "pt": { - "x": 372.54129861955454, - "y": 178.5 - }, - "bul": 0 - }, - { - "pt": { - "x": 766.375744501946, - "y": 178.5 - }, - "bul": 0 - }, - { - "pt": { - "x": 779.2588165160631, - "y": 160.7680194355229 - }, - "bul": 0 - }, - { - "pt": { - "x": 812.4284830162819, - "y": 184.8672564413759 - }, - "bul": 0 - }, - { - "pt": { - "x": 799.5454110021647, - "y": 202.59923700585415 - }, - "bul": 0 - }, - { - "pt": { - "x": 835.7121611642901, - "y": 313.9099999999998 - }, - "bul": 0 - }, - { - "pt": { - "x": 851.3347554234352, - "y": 313.90999999999985 - }, - "bul": 0 - }, - { - "pt": { - "x": 851.3347554234352, - "y": 354.90999999999985 - }, - "bul": 0 - }, - { - "pt": { - "x": 835.7121611642903, - "y": 354.90999999999997 - }, - "bul": 0 - }, - { - "pt": { - "x": 799.5454110021647, - "y": 466.22076299414584 - }, - "bul": 0 - } - ], - "_DisplayAccuracy": 0, - "_ClosedMark": true - }, - { - "_isErase": false, - "IsEmbedEntity": false, - "OnlyRenderType": true, - "HasEdgeRenderType": false, - "HasPlaceFaceRenderType": false, - "HasBigHoleFaceRenderType": false, - "_CacheDrawObject": {}, - "_Color": 7, - "_Matrix": { - "elements": [ - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1 - ] - }, - "_SpaceOCS": { - "elements": [ - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1 - ] - }, - "_Visible": true, - "_VisibleInRender": true, - "_Freeze": false, - "_LockMaterial": false, - "__ProcessingGroupList": [], - "NeedUpdateFlag": 0, - "AutoUpdate": true, - "__UpdateVersion__": 1, - "_RoomName": "", - "_CabinetName": "", - "_LineData": [ - { - "pt": { - "x": 805.1630385458965, - "y": 473.95274355862404 - }, - "bul": 0 - }, - { - "pt": { - "x": 771.9933720456777, - "y": 498.05198056447705 - }, - "bul": 0 - }, - { - "pt": { - "x": 759.1103000315613, - "y": 480.32000000000005 - }, - "bul": 0 - }, - { - "pt": { - "x": 379.8066920610485, - "y": 480.32000000000005 - }, - "bul": 0 - }, - { - "pt": { - "x": 366.92372224949236, - "y": 498.05196443564785 - }, - "bul": 0 - }, - { - "pt": { - "x": 333.7539752607463, - "y": 473.9528382128452 - }, - "bul": 0 - }, - { - "pt": { - "x": 346.6369450723041, - "y": 456.2208737771954 - }, - "bul": 0 - }, - { - "pt": { - "x": 313.7185799260885, - "y": 354.9100000000001 - }, - "bul": 0 - }, - { - "pt": { - "x": 298.0958582321697, - "y": 354.90999999999985 - }, - "bul": 0 - }, - { - "pt": { - "x": 298.0958582321697, - "y": 313.90999999999985 - }, - "bul": 0 - }, - { - "pt": { - "x": 313.7185799260885, - "y": 313.90999999999997 - }, - "bul": 0 - }, - { - "pt": { - "x": 346.63694507230406, - "y": 212.5991262228044 - }, - "bul": 0 - }, - { - "pt": { - "x": 333.7539752607469, - "y": 194.8671617871555 - }, - "bul": 0 - }, - { - "pt": { - "x": 366.9237222494919, - "y": 170.7680355643513 - }, - "bul": 0 - }, - { - "pt": { - "x": 379.8066920610488, - "y": 188.5 - }, - "bul": 0 - }, - { - "pt": { - "x": 759.1103000315616, - "y": 188.5 - }, - "bul": 0 - }, - { - "pt": { - "x": 771.9933720456776, - "y": 170.7680194355229 - }, - "bul": 0 - }, - { - "pt": { - "x": 805.1630385458964, - "y": 194.86725644137596 - }, - "bul": 0 - }, - { - "pt": { - "x": 792.2799665317791, - "y": 212.5992370058542 - }, - "bul": 0 - }, - { - "pt": { - "x": 825.197547504037, - "y": 313.90999999999997 - }, - "bul": 0 - }, - { - "pt": { - "x": 840.8201417631819, - "y": 313.91 - }, - "bul": 0 - }, - { - "pt": { - "x": 840.8201417631819, - "y": 354.91 - }, - "bul": 0 - }, - { - "pt": { - "x": 825.1975475040371, - "y": 354.91 - }, - "bul": 0 - }, - { - "pt": { - "x": 792.2799665317793, - "y": 456.22076299414596 - }, - "bul": 0 - } - ], - "_DisplayAccuracy": 0, - "_ClosedMark": true - }, - { - "_isErase": false, - "IsEmbedEntity": false, - "OnlyRenderType": true, - "HasEdgeRenderType": false, - "HasPlaceFaceRenderType": false, - "HasBigHoleFaceRenderType": false, - "_CacheDrawObject": {}, - "_Color": 7, - "_Matrix": { - "elements": [ - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1 - ] - }, - "_SpaceOCS": { - "elements": [ - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1 - ] - }, - "_Visible": true, - "_VisibleInRender": true, - "_Freeze": false, - "_LockMaterial": false, - "__ProcessingGroupList": [], - "NeedUpdateFlag": 0, - "AutoUpdate": true, - "__UpdateVersion__": 1, - "_RoomName": "", - "_CabinetName": "", - "_LineData": [ - { - "pt": { - "x": 821.8150549758003, - "y": 332.9594005844406 - }, - "bul": 0 - }, - { - "pt": { - "x": 821.3437306830127, - "y": 334.40999999999997 - }, - "bul": 0 - }, - { - "pt": { - "x": 821.8150549758003, - "y": 335.8605994155594 - }, - "bul": 0 - }, - { - "pt": { - "x": 820.7611439442396, - "y": 336.20303294082026 - }, - "bul": 0 - }, - { - "pt": { - "x": 777.5046388824036, - "y": 469.33400438030947 - }, - "bul": 0 - }, - { - "pt": { - "x": 777.5046388824036, - "y": 470.31999999999994 - }, - "bul": 0 - }, - { - "pt": { - "x": 777.1842722235191, - "y": 470.31999999999994 - }, - "bul": 0 - }, - { - "pt": { - "x": 777.0852742468801, - "y": 470.6246870472239 - }, - "bul": 0 - }, - { - "pt": { - "x": 776.1475359223443, - "y": 470.31999999999994 - }, - "bul": 0 - }, - { - "pt": { - "x": 362.76949485517287, - "y": 470.31999999999994 - }, - "bul": 0 - }, - { - "pt": { - "x": 361.8317350705015, - "y": 470.62470094532136 - }, - "bul": 0 - }, - { - "pt": { - "x": 361.73273032792525, - "y": 470.31999999999994 - }, - "bul": 0 - }, - { - "pt": { - "x": 361.4123483603736, - "y": 470.31999999999994 - }, - "bul": 0 - }, - { - "pt": { - "x": 361.4123483603736, - "y": 469.333979675754 - }, - "bul": 0 - }, - { - "pt": { - "x": 318.15486408407435, - "y": 336.20302040820377 - }, - "bul": 0 - }, - { - "pt": { - "x": 317.1009410398309, - "y": 335.8605751966195 - }, - "bul": 0 - }, - { - "pt": { - "x": 317.57226817594244, - "y": 334.4100000000001 - }, - "bul": 0 - }, - { - "pt": { - "x": 317.1009410398309, - "y": 332.9594248033806 - }, - "bul": 0 - }, - { - "pt": { - "x": 318.15486408407435, - "y": 332.6169795917964 - }, - "bul": 0 - }, - { - "pt": { - "x": 361.4123483603735, - "y": 199.4860203242461 - }, - "bul": 0 - }, - { - "pt": { - "x": 361.4123483603735, - "y": 198.5 - }, - "bul": 0 - }, - { - "pt": { - "x": 361.73273032792525, - "y": 198.50000000000003 - }, - "bul": 0 - }, - { - "pt": { - "x": 361.8317350705015, - "y": 198.19529905467863 - }, - "bul": 0 - }, - { - "pt": { - "x": 362.76949485517287, - "y": 198.5 - }, - "bul": 0 - }, - { - "pt": { - "x": 776.1475359223446, - "y": 198.49999999999997 - }, - "bul": 0 - }, - { - "pt": { - "x": 777.0852742468801, - "y": 198.19531295277605 - }, - "bul": 0 - }, - { - "pt": { - "x": 777.1842722235193, - "y": 198.49999999999997 - }, - "bul": 0 - }, - { - "pt": { - "x": 777.5046388824036, - "y": 198.49999999999997 - }, - "bul": 0 - }, - { - "pt": { - "x": 777.5046388824036, - "y": 199.48599561969053 - }, - "bul": 0 - }, - { - "pt": { - "x": 820.7611439442396, - "y": 332.61696705917973 - }, - "bul": 0 - } - ], - "_DisplayAccuracy": 0, - "_ClosedMark": true - }, - { - "_isErase": false, - "IsEmbedEntity": false, - "OnlyRenderType": true, - "HasEdgeRenderType": false, - "HasPlaceFaceRenderType": false, - "HasBigHoleFaceRenderType": false, - "_CacheDrawObject": {}, - "_Color": 7, - "_Matrix": { - "elements": [ - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1 - ] - }, - "_SpaceOCS": { - "elements": [ - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1 - ] - }, - "_Visible": true, - "_VisibleInRender": true, - "_Freeze": false, - "_LockMaterial": false, - "__ProcessingGroupList": [], - "NeedUpdateFlag": 0, - "AutoUpdate": true, - "__UpdateVersion__": 1, - "_RoomName": "", - "_CabinetName": "", - "_LineData": [ - { - "pt": { - "x": 819.186401560737, - "y": 332.9594005844406 - }, - "bul": 0 - }, - { - "pt": { - "x": 818.7150772679494, - "y": 334.40999999999997 - }, - "bul": 0 - }, - { - "pt": { - "x": 819.186401560737, - "y": 335.86059941555936 - }, - "bul": 0 - }, - { - "pt": { - "x": 818.1324905291763, - "y": 336.2030329408202 - }, - "bul": 0 - }, - { - "pt": { - "x": 775.6882777648073, - "y": 466.83400438030947 - }, - "bul": 0 - }, - { - "pt": { - "x": 775.6882777648073, - "y": 467.81999999999994 - }, - "bul": 0 - }, - { - "pt": { - "x": 775.3679111059226, - "y": 467.81999999999994 - }, - "bul": 0 - }, - { - "pt": { - "x": 775.2689131292838, - "y": 468.1246870472239 - }, - "bul": 0 - }, - { - "pt": { - "x": 774.331174804748, - "y": 467.81999999999994 - }, - "bul": 0 - }, - { - "pt": { - "x": 364.5858432155463, - "y": 467.81999999999994 - }, - "bul": 0 - }, - { - "pt": { - "x": 363.648083430875, - "y": 468.12470094532136 - }, - "bul": 0 - }, - { - "pt": { - "x": 363.54907868829866, - "y": 467.81999999999994 - }, - "bul": 0 - }, - { - "pt": { - "x": 363.22869672074705, - "y": 467.81999999999994 - }, - "bul": 0 - }, - { - "pt": { - "x": 363.22869672074705, - "y": 466.833979675754 - }, - "bul": 0 - }, - { - "pt": { - "x": 320.78352320436215, - "y": 336.2030204082037 - }, - "bul": 0 - }, - { - "pt": { - "x": 319.7296001601187, - "y": 335.8605751966195 - }, - "bul": 0 - }, - { - "pt": { - "x": 320.20092729623025, - "y": 334.4100000000001 - }, - "bul": 0 - }, - { - "pt": { - "x": 319.7296001601187, - "y": 332.9594248033806 - }, - "bul": 0 - }, - { - "pt": { - "x": 320.78352320436215, - "y": 332.6169795917964 - }, - "bul": 0 - }, - { - "pt": { - "x": 363.22869672074705, - "y": 201.9860203242461 - }, - "bul": 0 - }, - { - "pt": { - "x": 363.22869672074705, - "y": 201 - }, - "bul": 0 - }, - { - "pt": { - "x": 363.5490786882988, - "y": 201 - }, - "bul": 0 - }, - { - "pt": { - "x": 363.64808343087503, - "y": 200.69529905467863 - }, - "bul": 0 - }, - { - "pt": { - "x": 364.5858432155464, - "y": 201 - }, - "bul": 0 - }, - { - "pt": { - "x": 774.3311748047481, - "y": 201.00000000000003 - }, - "bul": 0 - }, - { - "pt": { - "x": 775.2689131292838, - "y": 200.6953129527761 - }, - "bul": 0 - }, - { - "pt": { - "x": 775.367911105923, - "y": 201.00000000000003 - }, - "bul": 0 - }, - { - "pt": { - "x": 775.6882777648073, - "y": 201.00000000000003 - }, - "bul": 0 - }, - { - "pt": { - "x": 775.6882777648073, - "y": 201.98599561969058 - }, - "bul": 0 - }, - { - "pt": { - "x": 818.1324905291763, - "y": 332.6169670591796 - }, - "bul": 0 - } - ], - "_DisplayAccuracy": 0, - "_ClosedMark": true - }, - { - "_isErase": false, - "IsEmbedEntity": false, - "OnlyRenderType": true, - "HasEdgeRenderType": false, - "HasPlaceFaceRenderType": false, - "HasBigHoleFaceRenderType": false, - "_CacheDrawObject": {}, - "_Color": 7, - "_Matrix": { - "elements": [ - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1 - ] - }, - "_SpaceOCS": { - "elements": [ - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1 - ] - }, - "_Visible": true, - "_VisibleInRender": true, - "_Freeze": false, - "_LockMaterial": false, - "__ProcessingGroupList": [], - "NeedUpdateFlag": 0, - "AutoUpdate": true, - "__UpdateVersion__": 1, - "_RoomName": "", - "_CabinetName": "", - "_LineData": [ - { - "pt": { - "x": 816.5577481456736, - "y": 332.9594005844406 - }, - "bul": 0 - }, - { - "pt": { - "x": 816.086423852886, - "y": 334.40999999999997 - }, - "bul": 0 - }, - { - "pt": { - "x": 816.5577481456736, - "y": 335.8605994155594 - }, - "bul": 0 - }, - { - "pt": { - "x": 815.5038371141129, - "y": 336.20303294082026 - }, - "bul": 0 - }, - { - "pt": { - "x": 773.8719166472108, - "y": 464.33400438030947 - }, - "bul": 0 - }, - { - "pt": { - "x": 773.8719166472108, - "y": 465.32 - }, - "bul": 0 - }, - { - "pt": { - "x": 773.5515499883267, - "y": 465.32 - }, - "bul": 0 - }, - { - "pt": { - "x": 773.4525520116873, - "y": 465.6246870472239 - }, - "bul": 0 - }, - { - "pt": { - "x": 772.5148136871517, - "y": 465.32 - }, - "bul": 0 - }, - { - "pt": { - "x": 366.4021915759199, - "y": 465.32 - }, - "bul": 0 - }, - { - "pt": { - "x": 365.4644317912486, - "y": 465.62470094532136 - }, - "bul": 0 - }, - { - "pt": { - "x": 365.36542704867236, - "y": 465.32 - }, - "bul": 0 - }, - { - "pt": { - "x": 365.04504508112063, - "y": 465.32 - }, - "bul": 0 - }, - { - "pt": { - "x": 365.04504508112063, - "y": 464.3339796757539 - }, - "bul": 0 - }, - { - "pt": { - "x": 323.41218232465, - "y": 336.20302040820366 - }, - "bul": 0 - }, - { - "pt": { - "x": 322.35825928040657, - "y": 335.86057519661944 - }, - "bul": 0 - }, - { - "pt": { - "x": 322.8295864165181, - "y": 334.41 - }, - "bul": 0 - }, - { - "pt": { - "x": 322.35825928040657, - "y": 332.9594248033806 - }, - "bul": 0 - }, - { - "pt": { - "x": 323.41218232465, - "y": 332.61697959179634 - }, - "bul": 0 - }, - { - "pt": { - "x": 365.04504508112063, - "y": 204.48602032424608 - }, - "bul": 0 - }, - { - "pt": { - "x": 365.04504508112063, - "y": 203.5 - }, - "bul": 0 - }, - { - "pt": { - "x": 365.36542704867236, - "y": 203.5 - }, - "bul": 0 - }, - { - "pt": { - "x": 365.4644317912486, - "y": 203.19529905467863 - }, - "bul": 0 - }, - { - "pt": { - "x": 366.40219157591997, - "y": 203.5 - }, - "bul": 0 - }, - { - "pt": { - "x": 772.5148136871517, - "y": 203.5 - }, - "bul": 0 - }, - { - "pt": { - "x": 773.4525520116873, - "y": 203.1953129527761 - }, - "bul": 0 - }, - { - "pt": { - "x": 773.5515499883263, - "y": 203.5 - }, - "bul": 0 - }, - { - "pt": { - "x": 773.8719166472108, - "y": 203.5 - }, - "bul": 0 - }, - { - "pt": { - "x": 773.8719166472108, - "y": 204.48599561969058 - }, - "bul": 0 - }, - { - "pt": { - "x": 815.5038371141129, - "y": 332.61696705917973 - }, - "bul": 0 - } - ], - "_DisplayAccuracy": 0, - "_ClosedMark": true - } - ], - "polylinesOutModel": [], - "placeContours": [] - }, - "remarkParams": {} - }, - "orderId": "1907276351086264320", - "goodsId": "BD10010006", - "roomId": 0, - "bodyId": 0, - "blockId": "1907276518426411009", - "oldBlockId": "1907276518426411009", - "blockNo": "25044454403", - "customPlateNo": "F007 - R001 - C001 - P004", - "labelNo": "", - "blockName": "背板", - "plateRemark": "2边排孔 + 2边侧槽 + 1边隐形件造型槽", - "remark1": "", - "remark2": "", - "remark3": "", - "remark4": "", - "remark5": "", - "extraRemark": {}, - "width": 1141.268, - "length": 1085.41, - "thickness": 18, - "area": 1.239, - "sealLeft": 0, - "sealRight": 0, - "sealTop": 0, - "sealBottom": 0, - "cutWidth": 1141.268, - "cutLength": 1085.41, - "cutArea": 1.23874369988, - "isAdditionalBlock": false, - "isRemainBlock": false, - "texture": 0, - "placeHole": 1, - "isUnRegular": true, - "isTurnFaceToPlace": true, - "isTwoFaceToPlace": false, - "isCurvedGroundLine": false, - "isPlaced": false, - "fullBoardId": 0, - "boardId": 0, - "placeId": 0, - "placeX": 0, - "placeY": 0, - "placeStyle": 0, - "cutRegion": 0, - "cutOrder": 0, - "cutPointId": 0, - "placeWidth": 0, - "placeLength": 0, - "placeSealLeft": 0, - "placeSealRight": 0, - "placeSealTop": 0, - "placeSealBottom": 0, - "orgSizeExpand": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0, - "width": 0, - "length": 0 - }, - "placeOffX": 0, - "placeOffY": 0, - "isAutoPlaced": true, - "isOutBoard": false, - "isOverlap": false, - "placeDirection": "→", - "placeDirection_Length": "→", - "isDrilling": true, - "isModeling": true, - "overBlockFlag": 0, - "isCutOtherFace": false, - "isCutTurnOver": false, - "holeCountSideLeft": 0, - "holeCountSideRight": 0, - "holeCountSideTop": 0, - "holeCountSideBottom": 0, - "holeListFaceA": [], - "holeListFaceB": [], - "modelListFaceA": [], - "modelListFaceB": [], - "labelPosX": 0, - "labelPosY": 0, - "isCncLabelA": false, - "isCncLabelB": false, - "isCncLabelTurnOver": false, - "type": 2, - "openDoorType": 0, - "_blockId": "1907276518426411009" - }, - { - "blockDetail": { - "organId": 0, - "blockId": "1907276518443188225", - "pointDetail": [], - "modelDetail": [], - "holeDetail": [], - "offsetX": 1.2, - "offsetY": -4.4, - "cutWidth": 164.2, - "cutLength": 103.4, - "points": [], - "orgPoints": [], - "orgContourData": null, - "holes": [], - "holeListFaceA": [], - "holeListFaceB": [], - "holeListThrough": [], - "holeListSide": [], - "models": [], - "modelListFaceA": [], - "modelListFaceB": [], - "modelListThrough": [], - "modelListSide": [], - "thickness": 18, - "isUnRegular": false, - "bigHoleInFaceA": false, - "holeCountFront": 0, - "holeCountBack": 0, - "holeCountThrough": 0, - "holeCountSide": 0, - "holeCountLeft": 0, - "holeCountRight": 0, - "holeCountTop": 0, - "holeCountBottom": 0, - "holeCountBevelled": 0, - "modelCountFront": 0, - "modelCountBack": 0, - "modelCountThrough": 0, - "hasModelThrogh": false, - "isTwoFaceProcess": false, - "placeStyleFront": 0, - "placeStyleFrontReverse": 1, - "placeStyleBack": 4, - "placeStyleBackReverse": 7, - "labelPosX": -1, - "labelPosY": -1, - "isInited": false, - "isChecked": false, - "isOffsetRounding": false, - "offsetKnifeRadius": 3, - "isUseSameKnifeToHelpCut": false, - "useSameKnifeToHelpCutGap": 0, - "preMillingExpandSize": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0, - "width": 0, - "length": 0 - }, - "modelExpandSize": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0, - "width": 0, - "length": 0 - }, - "vKnifeModelExpandSize": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0, - "width": 0, - "length": 0 - }, - "sameKnfieHelpExpandSize": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0, - "width": 0, - "length": 0 - }, - "currentSizeExpand": { - "left": 3.005, - "right": 3.005, - "top": 3.005, - "bottom": 3.005, - "width": 6.01, - "length": 6.01 - }, - "borderContour": { - "placeStyle": 0, - "borderFinal": [ - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 166, - "m_Y": 0 - }, - "tagData": 0, - "m_Length": 166 - }, - { - "m_StartPoint": { - "m_X": 166, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 166, - "m_Y": 100 - }, - "tagData": 1, - "m_Length": 100 - }, - { - "m_StartPoint": { - "m_X": 166, - "m_Y": 100 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 100 - }, - "tagData": 1, - "m_Length": 166 - }, - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 100 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 0 - }, - "tagData": 0, - "m_Length": 100 - } - ], - "borderOrg": [ - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 164.2, - "m_Y": 0 - }, - "m_Length": 164.2 - }, - { - "m_StartPoint": { - "m_X": 164.2, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 164.2, - "m_Y": 103.4 - }, - "m_Length": 103.4 - }, - { - "m_StartPoint": { - "m_X": 164.2, - "m_Y": 103.4 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 103.4 - }, - "m_Length": 164.2 - }, - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 103.4 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 0 - }, - "m_Length": 103.4 - } - ], - "borderPreMilling": [ - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 164.2, - "m_Y": 0 - }, - "m_Length": 164.2 - }, - { - "m_StartPoint": { - "m_X": 164.2, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 164.2, - "m_Y": 103.4 - }, - "m_Length": 103.4 - }, - { - "m_StartPoint": { - "m_X": 164.2, - "m_Y": 103.4 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 103.4 - }, - "m_Length": 164.2 - }, - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 103.4 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 0 - }, - "m_Length": 103.4 - } - ], - "polylineOrg": { - "_isErase": false, - "IsEmbedEntity": false, - "OnlyRenderType": true, - "HasEdgeRenderType": false, - "HasPlaceFaceRenderType": false, - "HasBigHoleFaceRenderType": false, - "_CacheDrawObject": {}, - "_Color": 7, - "_Matrix": { - "elements": [ - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1 - ] - }, - "_SpaceOCS": { - "elements": [ - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1 - ] - }, - "_Visible": true, - "_VisibleInRender": true, - "_Freeze": false, - "_LockMaterial": false, - "__ProcessingGroupList": [], - "NeedUpdateFlag": 0, - "AutoUpdate": true, - "__UpdateVersion__": 1, - "_RoomName": "", - "_CabinetName": "", - "_LineData": [ - { - "pt": { - "x": 0, - "y": 0 - }, - "bul": 0 - }, - { - "pt": { - "x": 164.2, - "y": 0 - }, - "bul": 0 - }, - { - "pt": { - "x": 164.2, - "y": 103.4 - }, - "bul": 0 - }, - { - "pt": { - "x": 0, - "y": 103.4 - }, - "bul": 0 - } - ], - "_DisplayAccuracy": 0, - "_ClosedMark": true - }, - "border": [ - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 164.2, - "m_Y": 0 - }, - "m_Length": 164.2 - }, - { - "m_StartPoint": { - "m_X": 164.2, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 164.2, - "m_Y": 103.4 - }, - "m_Length": 103.4 - }, - { - "m_StartPoint": { - "m_X": 164.2, - "m_Y": 103.4 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 103.4 - }, - "m_Length": 164.2 - }, - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 103.4 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 0 - }, - "m_Length": 103.4 - } - ], - "borderSameKnifeHelpCut": null, - "cutLines": null, - "cutLinesSameKnifeHelpCut": null, - "borderMoving": null, - "borderModelThrough": [], - "borderModelThroughR": [], - "cutLinesModelThrough": [], - "borderInnerPlace": [], - "blockInnerSpace": [], - "blockOuterSpace": null, - "polylines2vModel": [], - "polylinesOutModel": [], - "placeContours": [] - }, - "remarkParams": {} - }, - "orderId": "1907276351086264320", - "goodsId": "BD10010006", - "roomId": 0, - "bodyId": 0, - "blockId": "1907276518443188225", - "oldBlockId": "1907276518443188225", - "blockNo": "25044454404", - "customPlateNo": "F007 - R001 - C001 - P005", - "labelNo": "", - "blockName": "右侧板", - "plateRemark": "侧边反面斜切63度, 斜边隐形连接件", - "remark1": "", - "remark2": "", - "remark3": "", - "remark4": "", - "remark5": "", - "extraRemark": {}, - "width": 166, - "length": 100, - "thickness": 18, - "area": 0.017, - "sealLeft": 0, - "sealRight": 1, - "sealTop": 1, - "sealBottom": 0, - "cutWidth": 165, - "cutLength": 99, - "cutArea": 0.016335, - "isAdditionalBlock": false, - "isRemainBlock": false, - "texture": 0, - "placeHole": 0, - "isUnRegular": false, - "isTurnFaceToPlace": true, - "isTwoFaceToPlace": false, - "isCurvedGroundLine": false, - "isPlaced": false, - "fullBoardId": 0, - "boardId": 0, - "placeId": 0, - "placeX": 0, - "placeY": 0, - "placeStyle": 0, - "cutRegion": 0, - "cutOrder": 0, - "cutPointId": 0, - "placeWidth": 0, - "placeLength": 0, - "placeSealLeft": 0, - "placeSealRight": 0, - "placeSealTop": 0, - "placeSealBottom": 0, - "orgSizeExpand": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0, - "width": 0, - "length": 0 - }, - "placeOffX": 0, - "placeOffY": 0, - "isAutoPlaced": true, - "isOutBoard": false, - "isOverlap": false, - "placeDirection": "→", - "placeDirection_Length": "→", - "isDrilling": true, - "isModeling": true, - "overBlockFlag": 0, - "isCutOtherFace": false, - "isCutTurnOver": false, - "holeCountSideLeft": 0, - "holeCountSideRight": 0, - "holeCountSideTop": 0, - "holeCountSideBottom": 0, - "holeListFaceA": [], - "holeListFaceB": [], - "modelListFaceA": [], - "modelListFaceB": [], - "labelPosX": 0, - "labelPosY": 0, - "isCncLabelA": false, - "isCncLabelB": false, - "isCncLabelTurnOver": false, - "type": 2, - "openDoorType": 0, - "_blockId": "1907276518443188225" - }, - { - "blockDetail": { - "organId": 0, - "blockId": "1907276518443188233", - "pointDetail": [], - "modelDetail": [], - "holeDetail": [], - "offsetX": 1.2, - "offsetY": -4.4, - "cutWidth": 164.2, - "cutLength": 103.8, - "points": [], - "orgPoints": [], - "orgContourData": null, - "holes": [], - "holeListFaceA": [], - "holeListFaceB": [], - "holeListThrough": [], - "holeListSide": [], - "models": [], - "modelListFaceA": [], - "modelListFaceB": [], - "modelListThrough": [], - "modelListSide": [], - "thickness": 18, - "isUnRegular": false, - "bigHoleInFaceA": false, - "holeCountFront": 0, - "holeCountBack": 0, - "holeCountThrough": 0, - "holeCountSide": 0, - "holeCountLeft": 0, - "holeCountRight": 0, - "holeCountTop": 0, - "holeCountBottom": 0, - "holeCountBevelled": 0, - "modelCountFront": 0, - "modelCountBack": 0, - "modelCountThrough": 0, - "hasModelThrogh": false, - "isTwoFaceProcess": false, - "placeStyleFront": 0, - "placeStyleFrontReverse": 1, - "placeStyleBack": 4, - "placeStyleBackReverse": 7, - "labelPosX": -1, - "labelPosY": -1, - "isInited": false, - "isChecked": false, - "isOffsetRounding": false, - "offsetKnifeRadius": 3, - "isUseSameKnifeToHelpCut": false, - "useSameKnifeToHelpCutGap": 0, - "preMillingExpandSize": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0, - "width": 0, - "length": 0 - }, - "modelExpandSize": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0, - "width": 0, - "length": 0 - }, - "vKnifeModelExpandSize": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0, - "width": 0, - "length": 0 - }, - "sameKnfieHelpExpandSize": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0, - "width": 0, - "length": 0 - }, - "currentSizeExpand": { - "left": 3.005, - "right": 3.005, - "top": 3.005, - "bottom": 3.005, - "width": 6.01, - "length": 6.01 - }, - "borderContour": { - "placeStyle": 0, - "borderFinal": [ - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 166, - "m_Y": 0 - }, - "tagData": 0, - "m_Length": 166 - }, - { - "m_StartPoint": { - "m_X": 166, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 166, - "m_Y": 100 - }, - "tagData": 1, - "m_Length": 100 - }, - { - "m_StartPoint": { - "m_X": 166, - "m_Y": 100 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 100 - }, - "tagData": 0, - "m_Length": 166 - }, - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 100 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 0 - }, - "tagData": 0, - "m_Length": 100 - } - ], - "borderOrg": [ - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 164.2, - "m_Y": 0 - }, - "m_Length": 164.2 - }, - { - "m_StartPoint": { - "m_X": 164.2, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 164.2, - "m_Y": 103.8 - }, - "m_Length": 103.8 - }, - { - "m_StartPoint": { - "m_X": 164.2, - "m_Y": 103.8 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 103.8 - }, - "m_Length": 164.2 - }, - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 103.8 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 0 - }, - "m_Length": 103.8 - } - ], - "borderPreMilling": [ - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 164.2, - "m_Y": 0 - }, - "m_Length": 164.2 - }, - { - "m_StartPoint": { - "m_X": 164.2, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 164.2, - "m_Y": 103.8 - }, - "m_Length": 103.8 - }, - { - "m_StartPoint": { - "m_X": 164.2, - "m_Y": 103.8 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 103.8 - }, - "m_Length": 164.2 - }, - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 103.8 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 0 - }, - "m_Length": 103.8 - } - ], - "polylineOrg": { - "_isErase": false, - "IsEmbedEntity": false, - "OnlyRenderType": true, - "HasEdgeRenderType": false, - "HasPlaceFaceRenderType": false, - "HasBigHoleFaceRenderType": false, - "_CacheDrawObject": {}, - "_Color": 7, - "_Matrix": { - "elements": [ - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1 - ] - }, - "_SpaceOCS": { - "elements": [ - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1 - ] - }, - "_Visible": true, - "_VisibleInRender": true, - "_Freeze": false, - "_LockMaterial": false, - "__ProcessingGroupList": [], - "NeedUpdateFlag": 0, - "AutoUpdate": true, - "__UpdateVersion__": 1, - "_RoomName": "", - "_CabinetName": "", - "_LineData": [ - { - "pt": { - "x": 0, - "y": 0 - }, - "bul": 0 - }, - { - "pt": { - "x": 164.2, - "y": 0 - }, - "bul": 0 - }, - { - "pt": { - "x": 164.2, - "y": 103.8 - }, - "bul": 0 - }, - { - "pt": { - "x": 0, - "y": 103.8 - }, - "bul": 0 - } - ], - "_DisplayAccuracy": 0, - "_ClosedMark": true - }, - "border": [ - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 164.2, - "m_Y": 0 - }, - "m_Length": 164.2 - }, - { - "m_StartPoint": { - "m_X": 164.2, - "m_Y": 0 - }, - "m_EndPoint": { - "m_X": 164.2, - "m_Y": 103.8 - }, - "m_Length": 103.8 - }, - { - "m_StartPoint": { - "m_X": 164.2, - "m_Y": 103.8 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 103.8 - }, - "m_Length": 164.2 - }, - { - "m_StartPoint": { - "m_X": 0, - "m_Y": 103.8 - }, - "m_EndPoint": { - "m_X": 0, - "m_Y": 0 - }, - "m_Length": 103.8 - } - ], - "borderSameKnifeHelpCut": null, - "cutLines": null, - "cutLinesSameKnifeHelpCut": null, - "borderMoving": null, - "borderModelThrough": [], - "borderModelThroughR": [], - "cutLinesModelThrough": [], - "borderInnerPlace": [], - "blockInnerSpace": [], - "blockOuterSpace": null, - "polylines2vModel": [], - "polylinesOutModel": [], - "placeContours": [] - }, - "remarkParams": {} - }, - "orderId": "1907276351086264320", - "goodsId": "BD10010006", - "roomId": 0, - "bodyId": 0, - "blockId": "1907276518443188233", - "oldBlockId": "1907276518443188233", - "blockNo": "25044454405", - "customPlateNo": "F007 - R001 - C001 - P006", - "labelNo": "", - "blockName": "左侧板", - "plateRemark": "侧边正面斜切63度, 斜边隐形连接件", - "remark1": "", - "remark2": "", - "remark3": "", - "remark4": "", - "remark5": "", - "extraRemark": {}, - "width": 166, - "length": 100, - "thickness": 18, - "area": 0.017, - "sealLeft": 0, - "sealRight": 1, - "sealTop": 0, - "sealBottom": 0, - "cutWidth": 165, - "cutLength": 100, - "cutArea": 0.0165, - "isAdditionalBlock": false, - "isRemainBlock": false, - "texture": 0, - "placeHole": 0, - "isUnRegular": false, - "isTurnFaceToPlace": true, - "isTwoFaceToPlace": false, - "isCurvedGroundLine": false, - "isPlaced": false, - "fullBoardId": 0, - "boardId": 0, - "placeId": 0, - "placeX": 0, - "placeY": 0, - "placeStyle": 0, - "cutRegion": 0, - "cutOrder": 0, - "cutPointId": 0, - "placeWidth": 0, - "placeLength": 0, - "placeSealLeft": 0, - "placeSealRight": 0, - "placeSealTop": 0, - "placeSealBottom": 0, - "orgSizeExpand": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0, - "width": 0, - "length": 0 - }, - "placeOffX": 0, - "placeOffY": 0, - "isAutoPlaced": true, - "isOutBoard": false, - "isOverlap": false, - "placeDirection": "→", - "placeDirection_Length": "→", - "isDrilling": true, - "isModeling": true, - "overBlockFlag": 0, - "isCutOtherFace": false, - "isCutTurnOver": false, - "holeCountSideLeft": 0, - "holeCountSideRight": 0, - "holeCountSideTop": 0, - "holeCountSideBottom": 0, - "holeListFaceA": [], - "holeListFaceB": [], - "modelListFaceA": [], - "modelListFaceB": [], - "labelPosX": 0, - "labelPosY": 0, - "isCncLabelA": false, - "isCncLabelB": false, - "isCncLabelTurnOver": false, - "type": 2, - "openDoorType": 0, - "_blockId": "1907276518443188233" - } - ], - "tempBestPlaceResult": null, - "tempBestPlaceResultLast": null, - "tempBestPlaceResultLastTime": 0, - "rePlaceLastBoardRequired": false, - "tempPlaceUnregular": false, - "tempPlaceResultOnyUnlockedBoard": false, - "tempPlaceResultError": "", - "moveBlockList": [] - } - }, - "info": { - "times": 0, - "type": "loop" - } -} \ No newline at end of file diff --git a/src/models/processItem.ts b/src/models/processItem.ts new file mode 100644 index 0000000..fa629e3 --- /dev/null +++ b/src/models/processItem.ts @@ -0,0 +1,27 @@ + +export interface IPoint { x: number, y: number; } +/** + * 加工数据 + */ +export interface IProcessingItem { + /** + * 加工点数组 + */ + pts: IPoint[]; + /** + * 凸度数组 + */ + buls: number[]; + /** + * 加工深度 + */ + depth: number; + /** + * 半径 + */ + radius: number; + /** + * 刀ID + */ + knifeId?: number; +} \ No newline at end of file -- 2.49.1