用于在html和SketchUp中循环数据

sz81bmfz  于 2023-02-14  发布在  其他
关注(0)|答案(2)|浏览(198)

我在SketchUp中有一个数据数组,我需要将其以表格格式呈现给html。我有一个硬编码的代码示例。

ID = [["Harry", "22", "Male"],["Sam", "19", "Male"],["Christine", "23", "Female"]]

  dialog = UI::HtmlDialog.new(
    {
      :dialog_title => "Personal Info",
      :scrollable => true,
      :resizable => true,
      :width => 500,
      :height => 250,
      :left => 200,
      :top => 200,
      :min_width => 50,
      :min_height => 50,
      :max_width =>1000,
      :max_height => 500,
      :style => UI::HtmlDialog::STYLE_DIALOG
    })

for i in 0...Facelayers.length do
     html = "
     <!DOCTYPE html>
     <html>
     <style>
     table, th, td {
       border:1px solid black;
     }
     </style>
       <body>
         <h2>Personal Info</h2>
     <table style='width:75%'>
       <tr>
         <td>Name</td>
     <td>Age</td>
     <td>Gender</td>
       </tr>
       <tr>
     <td>#{ID[0][0]}</td>
         <td>#{ID[0][1]}</td>
         <td>#{ID[0][2]}</td>
       </tr>
       <tr>
     <td>#{ID[1][0]}</td>
         <td>#{ID[1][1]}</td>
         <td>#{ID[1][2]}</td>
       </tr>
       <tr>
     <td>#{ID[2][0]}</td>
         <td>#{ID[2][1]}</td>
         <td>#{ID[2][2]}</td>
       </tr>
     </table>
     </body>
     </html>
   "
   dialog.set_html(html)
   dialog.show 
   i=i+1
  end

如果您在SketchUp中运行此程序,您将得到以下输出...

输出是完美的,不能得到任何更好的。但问题是,它的硬编码。
你会注意到'ID'数组中有三个名字、年龄和性别不同的人,但是如果我有四个人呢?或者五个?甚至十个?
这里的这部分需要循环。有人能帮我创建一个循环,将所有必要的信息打印到html吗?

谢谢你的帮忙!

egmofgnx

egmofgnx1#

Ruby脚本
ids = [%w[Harry 22 Male], %w[Sam 19 Male], %w[Christine 23 Female], %w[Rafael 39 Male]]
@rows = ""

@dialog = UI::HtmlDialog.new(
  {
    dialog_title: 'Personal Info',
    scrollable: true,
    resizable: true,
    width: 500,
    height: 250,
    left: 200,
    top: 200,
    min_width: 50,
    min_height: 50,
    max_width: 1000,
    max_height: 500,
    style: UI::HtmlDialog::STYLE_DIALOG
  }
)

ids.each do |data|
  @rows.concat "<tr><td>#{data[0]}</td><td>#{data[1]}</td><td>#{data[2]}</td></tr>"
end

html = "
  <!DOCTYPE html>
  <html>
    <style>
      table, th, td {
      border:1px solid black;
      }
    </style>
    <body>
      <h2>Personal Info</h2>
      <table style='width:75%'>
        <tr>
          <td>Name</td>
          <td>Age</td>
          <td>Gender</td>
        </tr>
        #{@rows}
      </table>
    </body>
  </html>
"

@dialog.set_html(html)
@dialog.show
结果

yiytaume

yiytaume2#

这不是构建HTML对话框的最佳方法。构建一个基本的HTML页面要好得多,您可以使用sketchup.get_init_data()和js从HTML向ruby发送请求以形成表格。get_init_data是ruby中定义的方法,并注册到add_action_callback方法。
你应该使用这种模式的原因是如果表格变得复杂或者你有很多其他的表格,用ruby来组织HTML字符串会非常困难。

相关问题