Lua 的循环创建多个间隔项

我是 Lua 的新手。我正在尝试创建一个 Lua 插件,它将创建多个间隔块。目前,我似乎无法让表函数更新块的新位置。

这里有一个坐标系统,文档可以在这里找到 https://github.com/daniel-flassig/pytha-lua-api/wiki/pytha.create_block

用户界面允许用户输入他们想要的重复块的数量。

for x_panels = 1,data.x_panels do

       local position =  {data.origin[1],data.origin[2],data.origin[3]}


       local new_stock = pytha.create_block(data.width, data.height, data.thickness, {data.position})
             pytha.set_element_name(new_stock, "Stock")
             table.insert(data.cur_elements, new_stock)
             data.x_panels = -1
             table.insert(position,{data.origin[1] + data.width, data.origin[2], data.origin[3]})

   end

谢谢您的帮助!

点赞
用户14305351
用户14305351

根据您的代码,您正在使用 table.insert() 尝试更新下一个块的位置。这个方法的作用是将您新的期望位置插入到您已经存在的位置表中,得到以下结果:

position = {
  data.origin[1],
  data.origin[2],
  data.origin[3],
  { data.origin[1] + data.width, data.origin[2], data.origin[3] }
}

此外,位置变量似乎没有在您的创建块中使用,从您发布的 API 来看,data.position 不可用。

我的建议是,在循环之外创建原始位置表,在循环内通过直接设置该表中的值来更新它,以获得您下次迭代的新期望位置:

-- 假设 data.origin 的格式为 {0,0,0}
local position = data.origin

for i = 1, data.x_panels do
  pytha.create_block(data.width, data.height, data.thickness, position)
  pytha.set_element_name(new_stock, "Stock")
  table.insert(data.cur_elements, new_stock)
  position[1] = position[1] + data.width
end

您也可以使用 while 循环,因为 i 实际上没有被使用,但这取决于您!

2020-09-19 12:03:19