From 7e6946ef6e0fd2305ea1f77a3ae9d03c15d832e7 Mon Sep 17 00:00:00 2001 From: luoyifan Date: Sat, 21 Jun 2025 15:20:10 +0800 Subject: [PATCH] =?UTF-8?q?pallet=20=E5=B1=9E=E6=80=A7=E9=9D=A2=E6=9D=BF?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/plan/plan.md | 81 ++++++++++++++++++++++++++++++ src/example/example1.js | 4 +- src/modules/pallet/PalletPropertySetter.ts | 49 +++++++++++------- src/modules/tote/TotePropertySetter.ts | 53 ++++++++++++------- 4 files changed, 151 insertions(+), 36 deletions(-) create mode 100644 doc/plan/plan.md diff --git a/doc/plan/plan.md b/doc/plan/plan.md new file mode 100644 index 0000000..e42c617 --- /dev/null +++ b/doc/plan/plan.md @@ -0,0 +1,81 @@ + +## CL2 + +### CL2 动画全流程 +```typescript +const cl2 = Model.getCl2('ptr1') +const palletId = 'pallet1124' +const yy = Model.getPositionByEntityId(palletId).y + +cl2.addTravel('23') // 移动并旋转 +cl2.addRotation(90) + +cl2.addTravel('27') // 运行至托盘对应的货架列Point +cl2.addArmRaise(yy) // 提高叉子到托盘高度 +cl2.addArmExtender() // 伸叉 +cl2.addLoad(palletId) // 载入托盘,转移库存 +cl2.addArmRetractor() // 收叉 +cl2.addArmLower() // 将叉子放回到车上 + +cl2.addTravel('23') // 移动并旋转 +cl2.addRotation(-90) + +cl2.addTravel('20') // 移动到目标点位 +cl2.addArmRaise(0.2) // 提叉 +cl2.addArmExtender() // 伸叉 +cl2.addArmLower() // 放叉 +cl2.addUnload(palletId, '20') // 转移库存 +cl2.addArmRetractor() // 收叉 +cl2.addTravel('17') // 移动到休息点位 + +cl2.taskStartRun() +``` + +### PlanTask +```typescript +const cl2 = Model.getCl2('ptr1') +// 创建一个任务 +RCS.dispatchTask({ + agv: 'cl2', // 指定车辆 + type: 'carry', // 任务类型 + lpn: 'pallet1124', // 托盘ID, 用于校验 + from: '27', // 起始点位 + to: '' // 目标点位 +}) +``` + + +## CLX 动画全流程 + +```typescript +const cl2 = Model.getClx('clx1') +const palletId = 'pallet1125' +const yy = Model.getPositionByEntityId(palletId).y + + +cl2.addTravel('1') // 移动并旋转 +cl2.addRotation(-90) + + +cl2.addTravel('8'); // 运行至托盘对应的货架列Point +cl2.addArmRaise(yy) // 提高叉子到托盘高度 +cl2.addArmExtender() // 伸叉 + + +cl2.addLoad(palletId) // 载入托盘 +cl2.addArmRetractor() // 收叉 +cl2.addArmLower() // 将叉子放回到车上 +cl2.addTravel('1') // 移动并旋转 +cl2.addRotation(0) +cl2.addTravel('36') // 移动到目标点位 +cl2.addArmRaise(0.3) // 提叉 +cl2.addArmExtender() // 伸叉 +cl2.addArmLower() // 放叉 +cl2.addUnload(palletId, '47') // 转移库存 +cl2.addArmRetractor() // 收叉 +cl2.addTravel('38') // 移动到休息点位 + + +cl2.taskStartRun() +``` + diff --git a/src/example/example1.js b/src/example/example1.js index 30b4aae..241ebf2 100644 --- a/src/example/example1.js +++ b/src/example/example1.js @@ -206,7 +206,7 @@ export default { tf: [[2.7, 0, 2.13], [90, 0, 0], [0.25, 0.25, 0.1]], dt: { in: ['2', '38', '36'], out: ['2', '38', '36'], center: [], - ration: ['cl2', 'clx'] + agvRotation: ['cl2', 'clx'] } }, { @@ -290,7 +290,7 @@ export default { tf: [[5.65, 0, 5.232], [90, 0, 0], [0.25, 0.25, 0.1]], dt: { in: ['22', '24'], out: ['22', '24'], center: [], - ration: ['cl2', 'clx'], + agvRotation: ['cl2', 'clx'], linkStore: [{ item: 'rack1', bay: 2, level: 1, cell: 0 }] } }, diff --git a/src/modules/pallet/PalletPropertySetter.ts b/src/modules/pallet/PalletPropertySetter.ts index 4a5cfc9..2e3adc1 100644 --- a/src/modules/pallet/PalletPropertySetter.ts +++ b/src/modules/pallet/PalletPropertySetter.ts @@ -1,20 +1,35 @@ -import type { PropertySetter } from "@/core/base/PropertyTypes.ts"; -import { basicFieldsSetter } from "@/editor/widgets/property/PropertyPanelConstant.ts"; +import type { PropertySetter } from '@/core/base/PropertyTypes.ts' +import { basicFieldsSetter } from '@/editor/widgets/property/PropertyPanelConstant.ts' const propertySetter: PropertySetter = { - flatten: { - fields: [ - ...basicFieldsSetter, - { - dataPath: 'dt.palletWidth', label: '托盘宽度', input: 'InputNumber', - inputProps: {}, - }, - { - dataPath: 'dt.palletDepth', label: '托盘深度', input: 'InputNumber', - inputProps: {}, - }, - ], - }, -}; + flatten: { + fields: [ + ...basicFieldsSetter + ] + }, + groups: [ + { + title: '存储位置', expand: true, size: 'small', + fields: [ + { + dataPath: 'dt.storeAt.item', label: '存储位置', input: 'InputSelect', + inputProps: {} + }, + { + dataPath: 'dt.storeAt.bay', label: '存储位置[列]', input: 'InputNumber', + inputProps: {} + }, + { + dataPath: 'dt.storeAt.level', label: '存储位置[层]', input: 'InputNumber', + inputProps: {} + }, + { + dataPath: 'dt.storeAt.cell', label: '存储位置[格]', input: 'InputNumber', + inputProps: {} + } + ] + } + ] +} -export default propertySetter; +export default propertySetter diff --git a/src/modules/tote/TotePropertySetter.ts b/src/modules/tote/TotePropertySetter.ts index 4a5cfc9..b885b96 100644 --- a/src/modules/tote/TotePropertySetter.ts +++ b/src/modules/tote/TotePropertySetter.ts @@ -1,20 +1,39 @@ -import type { PropertySetter } from "@/core/base/PropertyTypes.ts"; -import { basicFieldsSetter } from "@/editor/widgets/property/PropertyPanelConstant.ts"; +import type { PropertySetter } from '@/core/base/PropertyTypes.ts' +import { basicFieldsSetter } from '@/editor/widgets/property/PropertyPanelConstant.ts' const propertySetter: PropertySetter = { - flatten: { - fields: [ - ...basicFieldsSetter, - { - dataPath: 'dt.palletWidth', label: '托盘宽度', input: 'InputNumber', - inputProps: {}, - }, - { - dataPath: 'dt.palletDepth', label: '托盘深度', input: 'InputNumber', - inputProps: {}, - }, - ], - }, -}; + flatten: { + fields: [ + ...basicFieldsSetter, + { + dataPath: 'dt.palletWidth', label: '托盘宽度', input: 'InputNumber', + inputProps: {} + }, + { + dataPath: 'dt.palletDepth', label: '托盘深度', input: 'InputNumber', + inputProps: {} + }, -export default propertySetter; + // storeAt: { item: 'rack1', bay: 0, level: 1, cell: 0 } + { + dataPath: 'dt.storeAt.item', label: '存储位置', input: 'InputSelect', inputProps: {} + }, + { + dataPath: 'dt.storeAt.bay', label: '存储位置[列]', input: 'InputNumber', + inputProps: {} + }, + { + dataPath: 'dt.storeAt.level', label: '存储位置[层]', input: 'InputNumber', + inputProps: {} + }, + { + dataPath: 'dt.storeAt.cell', label: '存储位置[格]', input: 'InputNumber', + inputProps: {} + } + + ] + }, + groups: [] +} + +export default propertySetter