本帖最后由 CSN小助理 于 2026-10-21 15:05 编辑
问题描述:
在 FlexSim 的 FloorStorage(地面存储)中,需要通过 FlexScript 动态设置某个特定 Bay(库区)的层数与层高,使不同库区可以有不同的存储高度配置。设置层数时,使用以下代码可以正常生效,目标 Bay 的层数被正确修改:
- function_s(FS, "setNumLevels", nLevels, token.slot.as(Storage.Slot).bayID);
复制代码 但在设置层高时,同样的思路传入 bayID,发现整个 FloorStorage 中所有 Bay 的层高都被统一修改了,而不是只作用于目标 Bay:
- function_s(FS, "setLevelSize", DimY_Level, nLevels, token.slot.as(Storage.Slot).bayID);
复制代码
解决方法:
setLevelSize 函数的第四个参数不接受单个 bayID ,而是需要传入一个数组,明确列出要应用新高度的所有 level 位置。数组中每个元素的格式为 [bayRank, levelRank](bay 编号 + 层编号)。正确写法如下:
- function_s(FS, "setLevelSize", height, [level1, level2, level3]);
- // 其中 levelX = [bayRank, levelRank]
复制代码 例如要设置第 2 个 Bay 的第 1、2、3 层高度为 2:
- function_s(FS, "setLevelSize", 2, [[2, 1], [2, 2], [2, 3]]);
复制代码 这样修改只会作用于数组中列出的特定 Bay 的指定层,不会影响整个 FloorStorage中其他Bay的层高配置。
|