我一直在尝试使用load手动将Ruby脚本手动加载到SketchUp中。我总是得到一个错误,说文件不存在,即使它在目录中。
以下是我的代码示例:
load "H:Document\sclf_color_by_z_1.6.1_1.rbz"
和错误消息:
错误:LoadError:(eval):0:在'load'中:没有要加载的文件 - H:文档clf_color_by_z_1.6.1_1.rbz>
(EVAL)
(EVAL):0
答案 0 :(得分:0)
这里有三个问题:
H:Document\sclf_color_by_z_1.6.1_1.rbz
不是有效路径。在驱动器说明符H:
之后,您应该有一个分隔符:\
- 就像这样:H:\Document\sclf_color_by_z_1.6.1_1.rbz
编程时请注意字符串中的转义字符。 \
就是这样一个角色。
要纠正你的字符串,你必须有这样的东西:
"H:\\Document\\sclf_color_by_z_1.6.1_1.rbz"
https://en.wikibooks.org/wiki/Ruby_Programming/Strings#Escape_sequences
但请注意,Ruby的约定是使用正斜杠 - 即使在Windows上:"H:/Document/clf_color_by_z_1.6.1_1.rbz"
您正在尝试在此处加载RBZ文件。这不与RB文件相同。 RBZ是打包的SketchUp扩展(实际上是ZIP文件)。要以编程方式安装RBZ,您必须使用Sketchup.install_from_archive("H:/Document/clf_color_by_z_1.6.1_1.rbz")
http://www.sketchup.com/intl/en/developer/docs/ourdoc/sketchup#install_from_archive
请注意,Sketchup.install_from_archive
与load
完全相同 - 它会将扩展程序永久安装到SketchUp,其中load
仅用于该会话。
每当你有一个你认为应该在磁盘上的文件路径时 - 作为系统是否可以找到它:File.exist?("H:\Document\sclf_color_by_z_1.6.1_1.rbz")
如果返回false
你知道你需要仔细检查你的路径检查语法错误和拼写错误。
答案 1 :(得分:0)
您应该使用File.join()
方法。在你的情况下:
您不能将load
用于.rbz
文件,但可以Sketchup.install_from_archive()
使用thomthom表示
所以在你的情况下,你可以做到:
file = File.join( 'H:', 'Document' , 'sclf_color_by_z_1.6.1_1.rbz' )
Sketchup.install_from_archive file