From ddfb1fbc60dcf378aa4fb5eb772a5fd6c8d27119 Mon Sep 17 00:00:00 2001 From: luoyifan Date: Mon, 30 Jun 2025 20:49:25 +0800 Subject: [PATCH] =?UTF-8?q?Charger=20=E5=85=85=E7=94=B5API=20=E5=B7=B2?= =?UTF-8?q?=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/manager/EnvManager.ts | 20 ++++++++++++++++++-- src/core/script/RCSScript.ts | 5 ++--- src/modules/charger/ChargerPropertySetter.ts | 8 ++------ src/modules/charger/ChargerRenderer.ts | 19 ++++--------------- src/modules/clx/ClxRenderer.ts | 5 ----- src/types/RCS.d.ts | 5 ++--- 6 files changed, 28 insertions(+), 34 deletions(-) diff --git a/src/core/manager/EnvManager.ts b/src/core/manager/EnvManager.ts index 4034393..b52ab3c 100644 --- a/src/core/manager/EnvManager.ts +++ b/src/core/manager/EnvManager.ts @@ -24,7 +24,8 @@ export default class EnvManager { for (const row of res.data) { const executor_id = row.executor_id const payload = JSON.parse(row.virtual_executor_payload) - const wayPointId = row.virtual_location_at + // 车所在的标记位置,及方向 11_4:RIGHT + const [wayPointId, direction] = _.split(row.virtual_location_at, ':') const point = Model.find(wayPointId) if (!point) { @@ -35,6 +36,21 @@ export default class EnvManager { const item = _.cloneDeep(payload) item.id = executor_id item.tf[0] = _.cloneDeep(point.tf[0]) + switch (_.toLower(direction)) { + // right=0/left=180/up=90/down=-90 + case 'right': + item.tf[1][1] = 0 // 右侧 + break + case 'left': + item.tf[1][1] = 180 // 左侧 + break + case 'down': + item.tf[1][1] = -90 // 下方 + break + case 'up': + item.tf[1][1] = 90 // 上方 + break + } Model.createExecutor(item) } } @@ -163,7 +179,7 @@ export default class EnvManager { this.clearExecutors() this.clearInv() - this.viewport.runtimeManager.clear() + this.viewport?.runtimeManager?.clear() } finally { system.clearLoading() diff --git a/src/core/script/RCSScript.ts b/src/core/script/RCSScript.ts index 63f8f2e..5bb085c 100644 --- a/src/core/script/RCSScript.ts +++ b/src/core/script/RCSScript.ts @@ -85,14 +85,13 @@ export default class RCSScript implements RCS { }) } - agvToCharger(agvId: string, targetWayPointId: string, targetDirection: LLCDirection, option?: any): Promise> { + agvToCharger(agvId: string, chargerId: string, option: AgvOptions = {}): Promise> { return Request.request.post('/api/workbench/RcsController@agvToCharger', { projectUUID: worldModel.state.project_uuid, catalogCode: worldModel.state.catalogCode, envId: 1, agvId: agvId, - targetWayPointId, - targetDirection, + chargerId, option }) } diff --git a/src/modules/charger/ChargerPropertySetter.ts b/src/modules/charger/ChargerPropertySetter.ts index ec222bc..87ec953 100644 --- a/src/modules/charger/ChargerPropertySetter.ts +++ b/src/modules/charger/ChargerPropertySetter.ts @@ -6,13 +6,9 @@ const propertySetter: PropertySetter = { fields: [ ...basicFieldsSetter, { - dataPath: 'dt.chargerWidth', label: '充电桩宽度', input: 'InputNumber', + dataPath: 'dt.chargerPortDirection', label: '充口方向', input: 'Input', inputProps: {}, - }, - { - dataPath: 'dt.chargerDepth', label: '充电桩深度', input: 'InputNumber', - inputProps: {}, - }, + } ], }, }; diff --git a/src/modules/charger/ChargerRenderer.ts b/src/modules/charger/ChargerRenderer.ts index e3d5904..f675318 100644 --- a/src/modules/charger/ChargerRenderer.ts +++ b/src/modules/charger/ChargerRenderer.ts @@ -19,7 +19,7 @@ export default class ChargerRenderer extends BaseRenderer { * 默认点的高度, 防止和地面重合 */ readonly defulePositionY: number = Constract.HEIGHT_WAY - readonly defaultScale: THREE.Vector3 = new THREE.Vector3(1, 1, 1) + readonly defaultScale: THREE.Vector3 = new THREE.Vector3(0.6, 1, 0.3) readonly defaultRotation: THREE.Vector3 = new THREE.Vector3(0, 0, 0) constructor(itemTypeName: string) { @@ -42,23 +42,12 @@ export default class ChargerRenderer extends BaseRenderer { ) } - - createLineBasic(start: ItemJson, end: ItemJson, type: LinkType): THREE.Object3D { - throw new Error('not allow store line.') - } - - updateLine(start: ItemJson, end: ItemJson, type: LinkType, option?: RendererCudOption) { - throw new Error('not allow store line.') + createLine(start: ItemJson, end: ItemJson, type: LinkType): THREE.Object3D { + return null } - createPoint(item: ItemJson, option?: RendererCudOption): THREE.Object3D { // 创建平面几何体 - if (!item.dt.chargerWidth || !item.dt.chargerDepth) { - system.showErrorDialog('field chargerWidth / chargerDepth is null!') - return null - } - const textureLoader = new THREE.TextureLoader() const texture = textureLoader.load(chargerUrl) @@ -66,7 +55,7 @@ export default class ChargerRenderer extends BaseRenderer { group.name = ChargerRenderer.POINT_NAME // 绘制背景矩形框 - const planeGeometry = new THREE.PlaneGeometry(item.dt.chargerWidth, item.dt.chargerDepth) + const planeGeometry = new THREE.PlaneGeometry(this.defaultScale.x, this.defaultScale.z) planeGeometry.rotateX(-Math.PI / 2) const planeMaterial = new THREE.MeshLambertMaterial({ map: texture, // 颜色贴图 diff --git a/src/modules/clx/ClxRenderer.ts b/src/modules/clx/ClxRenderer.ts index 46ec3cd..7073390 100644 --- a/src/modules/clx/ClxRenderer.ts +++ b/src/modules/clx/ClxRenderer.ts @@ -51,11 +51,6 @@ export default class ClxRenderer extends BaseRenderer { createPoint(item: ItemJson, option?: RendererCudOption): THREE.Object3D { // 创建平面几何体 - if (!item.dt.clxWidth || !item.dt.clxDepth) { - system.showErrorDialog('field clxWidth / clxDepth is null!') - return - } - const group = new Clx3dObject(item, option) group.name = ClxRenderer.POINT_NAME diff --git a/src/types/RCS.d.ts b/src/types/RCS.d.ts index b0e1e43..5b837e9 100644 --- a/src/types/RCS.d.ts +++ b/src/types/RCS.d.ts @@ -53,11 +53,10 @@ declare interface RCS { /** * 机器人充电 * @param agvId 机器人ID - * @param targetWayPointId 充电路标ID - * @param targetDirection 充电时车的方向 + * @param chargerId 充电路标ID * @param option 其他选项 */ - agvToCharger(agvId: string, targetWayPointId: string, targetDirection: LLCDirection, option: AgvOptions = {}): Promise> + agvToCharger(agvId: string, chargerId: string, option: AgvOptions = {}): Promise> /** * 等待机器人任务完成