无法在 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
我面临的问题是什么?
如何测试下面的代码:
- 创建 .rb 文件(例如将其命名为 'open-html.rb')并复制并粘贴下面的代码。然后将文件放在 SketchUp Plugins 文件夹中。
- 通过转到
Plugins or Extension Menu
-> Open basic.html inside the plugins folder
激活 Sketchup 中的工具
- 完成!如果插件文件夹中有一个名为 '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
我正在尝试创建一个可以打开 .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
我面临的问题是什么?
如何测试下面的代码:
- 创建 .rb 文件(例如将其命名为 'open-html.rb')并复制并粘贴下面的代码。然后将文件放在 SketchUp Plugins 文件夹中。
- 通过转到
Plugins or Extension Menu
->Open basic.html inside the plugins folder
激活 Sketchup 中的工具
- 完成!如果插件文件夹中有一个名为 '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