在SketchUp中加载Ruby脚本:LoadError:(eval):0:在`load'中:没有要加载的文件

时间:2016-02-19 13:48:41

标签: ruby sketchup

我一直在尝试使用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

2 个答案:

答案 0 :(得分:0)

这里有三个问题:

  1. H:Document\sclf_color_by_z_1.6.1_1.rbz不是有效路径。在驱动器说明符H:之后,您应该有一个分隔符:\ - 就像这样:H:\Document\sclf_color_by_z_1.6.1_1.rbz

  2. 编程时请注意字符串中的转义字符。 \就是这样一个角色。 要纠正你的字符串,你必须有这样的东西: "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"

  3. 您正在尝试在此处加载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

  4. 请注意,Sketchup.install_from_archiveload完全相同 - 它会将扩展程序永久安装到SketchUp,其中load仅用于该会话。

    每当你有一个你认为应该在磁盘上的文件路径时 - 作为系统是否可以找到它:File.exist?("H:\Document\sclf_color_by_z_1.6.1_1.rbz")如果返回false你知道你需要仔细检查你的路径检查语法错误和拼写错误。

答案 1 :(得分:0)

  1. 您应该使用File.join()方法。在你的情况下:

  2. 您不能将load用于.rbz文件,但可以Sketchup.install_from_archive()使用thomthom表示

  3. 所以在你的情况下,你可以做到:

    file = File.join( 'H:', 'Document' , 'sclf_color_by_z_1.6.1_1.rbz' )
    Sketchup.install_from_archive file