无法在 SketchUp Ruby 中打开 .html 文件

Unable to open a .html file in SketchUp Ruby

我正在尝试创建一个可以打开 .html 文件的工具,但是我需要有关打开所述 .html 文件的代码段的帮助。我在下面有这段代码...

help_file = Sketchup.find_support_files("html", "Plugins")
if help_file
  # Print out the help_file full path
  UI.messagebox(help_file)

  # Open the help_file in a web browser
  UI.openURL("file://" + help_file)
else
  UI.messagebox("Failure")
end

这段代码的输出如下面的截图所示。

https://i.stack.imgur.com/ixLIT.png

这是我所期望的。没有 .html 在 Chrome 中打开,因为有两个 .html 文件。所以现在我更进一步,尝试指定我想打开哪个 .html 文件。我想打开 'basic.html'(到目前为止它是一个空白的 .html 文件)并相应地更改我的代码(第一行要具体)。

help_file = Sketchup.find_support_files("basic.html", "Plugins")
if help_file
  # Print out the help_file full path
  UI.messagebox(help_file)

  # Open the help_file in a web browser
  UI.openURL("file://" + help_file)
else
  UI.messagebox("Failure")
end

不幸的是,我没有得到我希望的输出。这就是我最终得到的结果。

https://i.stack.imgur.com/4xyQT.png

basic.html 也没有在 Chrome 中打开,真可惜。

下面是我在 Plugins 文件夹中的文件的样子,如果您想查看的话。

https://i.stack.imgur.com/OW7xM.png

我面临的问题是什么?

如何测试下面的代码:

  1. 创建 .rb 文件(例如将其命名为 'open-html.rb')并复制并粘贴下面的代码。然后将文件放在 SketchUp Plugins 文件夹中。
  2. 通过转到 Plugins or Extension Menu -> Open basic.html inside the plugins folder
  3. 激活 Sketchup 中的工具
  4. 完成!如果插件文件夹中有一个名为 'basic.html' 的 HTML 文件,那么此脚本将打开它。

可能的解决方案#1

module DevName
  module PluginName
    class Main
      def activate
        @dlg = UI::HtmlDialog.new(html_properties_activate)

        plugins_folder = "file:///#{Sketchup.find_support_file('Plugins').gsub(/ /, '%20')}" #/
        html_file = File.join(plugins_folder, 'basic.html')
        @dlg.set_url(html_file)
        @dlg.show
        @dlg.center
      end

      def html_properties_activate
        {
          dialog_title: 'Dialog Example',
          preferences_key: 'com.sample.plugin',
          scrollable: true,
          resizable: true,
          width: 420,
          height: 320
        }
      end
    end
    unless defined?(@loaded)
      UI.menu('Plugins').add_item('Open basic.html inside the plugins folder') do
        Sketchup.active_model.select_tool(DevName::PluginName::Main.new)
      end
      @loaded = true
    end
  end
end

可能的解决方案 #2(更好的解决方案)

我更喜欢使用“.rb”脚本的相对路径而不是 'Plugins' 文件夹路径来查找 'basic.html' 的位置。

此外,打开本地 HTML 文件时最好使用 .set_file 而不是 .set_url

module DevName
  module PluginName2
    class Main
      def activate
        @dlg = UI::HtmlDialog.new(html_properties_activate)
        path = File.dirname(__FILE__)
        html_file = File.join(path, '/basic.html')
        @dlg.set_file(html_file)
        @dlg.show
        @dlg.center
      end

      def html_properties_activate
        {
          dialog_title: 'Dialog Example',
          preferences_key: 'com.sample.plugin',
          scrollable: true,
          resizable: true,
          width: 420,
          height: 320
        }
      end
    end
    unless defined?(@loaded)
      UI.menu('Plugins').add_item('Open basic.html inside plugins folder Solution #2') do
        Sketchup.active_model.select_tool(DevName::PluginName2::Main.new)
      end
      @loaded = true
    end
  end
end