From 219479014e24850a8daba91824932179c2abd288 Mon Sep 17 00:00:00 2001 From: yuliang <398780299@qq.com> Date: Thu, 26 Jun 2025 09:09:54 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=E8=B4=A7=E6=9E=B6?= =?UTF-8?q?=E6=B8=B2=E6=9F=93,=20=E4=BB=A5=E6=AF=8F=E5=B1=82=E7=9B=B8?= =?UTF-8?q?=E5=AF=B9=E5=9C=B0=E9=9D=A2=E9=AB=98=E5=BA=A6=E4=B8=BA=E5=BD=93?= =?UTF-8?q?=E5=89=8D=E5=B1=82=E9=AB=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/editor/propEditors/BayEditor.vue | 16 ++++++++++++++++ src/modules/rack/Rack3dObject.ts | 12 +++++------- src/types/Types.d.ts | 1 + 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/editor/propEditors/BayEditor.vue b/src/editor/propEditors/BayEditor.vue index 09cd98f..5fc324c 100644 --- a/src/editor/propEditors/BayEditor.vue +++ b/src/editor/propEditors/BayEditor.vue @@ -14,6 +14,8 @@ interface DtBay { bayWidth: number; /** 列偏移 */ offset: number; + /** 列的顶部空间 */ + topHeight: number; /** 每层的高度 */ levelHeight: Array; } @@ -85,6 +87,7 @@ function applyBasicSettings() { const bay: DtBay = { bayWidth: widthOfBays, offset: 0, + topHeight: 0, levelHeight: [], }; for (let i = 0; i < numberOfLevels; i++) { @@ -124,6 +127,12 @@ function updateBayWidth(bay: DtBay, bayWidth?: number) { emit("update:modelValue", newValue); } +function updateBayTopHeight(bay: DtBay, topHeight?: number) { + bay.topHeight = topHeight; + const newValue = getModelValue(); + emit("update:modelValue", newValue); +} + function updateBayOffset(bay: DtBay, offset?: number) { bay.offset = offset; const newValue = getModelValue(); @@ -227,6 +236,13 @@ export type { @change="(offset: number) => updateBayOffset(selectDay, offset)" /> + + +
Level Heights
diff --git a/src/modules/rack/Rack3dObject.ts b/src/modules/rack/Rack3dObject.ts index db86e8f..7dece62 100644 --- a/src/modules/rack/Rack3dObject.ts +++ b/src/modules/rack/Rack3dObject.ts @@ -25,7 +25,6 @@ export default class Rack3dObject extends THREE.Object3D { private static rackHorizontalBarGeometryMap: Map = new Map() private static rackHorizontalBarMaterial: Material = null - bottomBarHeight = 0.2 bottomLinkHeight = 0.2 topLinkDistance = 0.2 @@ -297,7 +296,7 @@ export default class Rack3dObject extends THREE.Object3D { const heights = [] for (let i = 0; i < item.dt.bays.length; i++) { const bay = item.dt.bays[i] - const bayHeight = decimalSumBy(bay.levelHeight) + const bayHeight = bay.levelHeight[bay.levelHeight.length - 1] + bay.topHeight heights.push(bayHeight) } const rackHeight = _.max(heights) @@ -357,16 +356,15 @@ export default class Rack3dObject extends THREE.Object3D { const hBarMatrix: { x: number, y: number, z: number, sx: number, sy: number, sz: number, rx: number, ry: number, rz: number, l: number }[] = [] distanceX = 0 for (let i = 0; i < item.dt.bays.length; i++) { - distanceY = this.bottomBarHeight const bay = item.dt.bays[i] for (let j = 0; j < bay.levelHeight.length; j++) { const levelHeight = bay.levelHeight[j] - if (distanceY <= 0) { + if (levelHeight <= 0.005) { continue } hBarMatrix.push({ x: distanceX - rackWidth / 2, - y: distanceY, + y: levelHeight, z: -rackDepth / 2, sx: 1, sy: 0.8, @@ -378,7 +376,7 @@ export default class Rack3dObject extends THREE.Object3D { }) hBarMatrix.push({ x: distanceX - rackWidth / 2, - y: distanceY, + y: levelHeight, z: item.dt.rackDepth - rackDepth / 2, sx: 1, sy: 0.8, @@ -388,7 +386,7 @@ export default class Rack3dObject extends THREE.Object3D { rz: 0, l: bay.bayWidth }) - distanceY += levelHeight + distanceY = levelHeight } distanceX += bay.bayWidth } diff --git a/src/types/Types.d.ts b/src/types/Types.d.ts index a706e4e..5b9c759 100644 --- a/src/types/Types.d.ts +++ b/src/types/Types.d.ts @@ -257,6 +257,7 @@ interface ItemJson extends ItemMetrix { bays?: { bayWidth: number, + topHeight: number, levelHeight: number[] }[] From d235bf2f548199c2a9d83d147d86bb6b1dced615 Mon Sep 17 00:00:00 2001 From: yuliang <398780299@qq.com> Date: Thu, 26 Jun 2025 09:30:37 +0800 Subject: [PATCH 2/2] rackrender --- src/modules/rack/Rack3dObject.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/modules/rack/Rack3dObject.ts b/src/modules/rack/Rack3dObject.ts index 7dece62..56f1086 100644 --- a/src/modules/rack/Rack3dObject.ts +++ b/src/modules/rack/Rack3dObject.ts @@ -296,6 +296,9 @@ export default class Rack3dObject extends THREE.Object3D { const heights = [] for (let i = 0; i < item.dt.bays.length; i++) { const bay = item.dt.bays[i] + if (bay.topHeight == null || bay.topHeight < 0) { + bay.topHeight = 0.5 + } const bayHeight = bay.levelHeight[bay.levelHeight.length - 1] + bay.topHeight heights.push(bayHeight) } @@ -358,8 +361,8 @@ export default class Rack3dObject extends THREE.Object3D { for (let i = 0; i < item.dt.bays.length; i++) { const bay = item.dt.bays[i] for (let j = 0; j < bay.levelHeight.length; j++) { - const levelHeight = bay.levelHeight[j] - if (levelHeight <= 0.005) { + const levelHeight = bay.levelHeight[j] - 0.05 // 0.05为横梁自身高度的一半 + if (levelHeight <= 0.0) { continue } hBarMatrix.push({