在 SketchUp 8.0 上移植 Ruby 插件的正确方法
SketchUp 8.0 更新了 Ruby 解译器
SketchUp 8.0 内建 API (应用程式介面)的 Ruby 解译器, 已经从 Ruby 1.8.0 更新到 1.8.6 版, 这是一个支持程度更好、更稳定的解译器版本。这个版本让 API 的使用者能够受惠於修正了 上百个 Ruby 的错误,但是 1.8.6 同时也对 Ruby 的程式语法要求得更加严格。如果某个插件 脚本出现了执行错误的状况,你可能需要跟这个插件的原作者联络,要求插件的新版本』
Ruby 解译器更新衍生的插件问题 解译器更新衍生的插件问题
上面那段说明表述了 SketchUp 8.0 的 Ruby 控制台使用了新的 1.8.6 解译器,虽然在"理 论上" 1.8.6 能解译从前以 1.8.0 或更早版本写的 Ruby script,但是 1.8.6 的程序语法要求更 加严格,当前 Ruby 插件的众多作者其专业程度参差不齐,编程的语法未必都很严谨,所以 无法保证从前那些为 SU 写的 Ruby 插件都能在 SU 8 里正常解译运行。 除了外来插件自身的 Ruby 语法问题之外,由於 SketchUp 8.0 是个主要版本,安装程序 在安装过程中会在 SU8 安装目录下 Plugins 和 Tools 这二个文件夹里装进基於上述 1.8.6 的 『新 版本 Ruby 插件』 ,这些 Ruby 插件是运行 SU8 的某些功能所必要的插件,其中有些属于基本 工具插件,例如 sketchup.rb, langhandler.rb, extensions.rb 等等,许多外来的 Ruby 插件需要 呼叫这些插件来协同运行。由於这些基本插件在 SU8 更新了版本,故而所有基于旧版本 SketchUp 所写的外来插件,都无法保证在 SU8 里一定能正常运行。身为使用者,你必须留 意插件间不相容的可能性。至于哪些相容、哪些不相容?现在没有人能明确告诉你,换句话 说,你得自己去试出来。 因此,如果你打算从旧版本 SketchUp 的 Plugins 插件目录里,把原先安装的 Ruby 插件 复制到 SU8 的插件目录里继续使用,千万不要全选然后一股脑儿整批丢过去,别让 SU8 的 Plugins 以及 Tools 目录里既有的这些插件被旧版本(SU7/SU6)的同名插件覆盖(overwrite)掉。 也不要让那些旧版本的 sketchup.rb, langhandler.rb, extensions.rb 等等基本插件随着别的插件 夹带进 SU8 里来。否则…死也!当你再进入 SU8 的时候总会遇上什麽麻烦,或许有个错误 信息对话框跳出来叫你"猜猜我是谁"。 这二年我们曾经历过 SU6 到 SU7 的主版本更新,虽然在论坛里不止一次的提醒过注意 插件更新的潜在冲突
问题,许多人还是当成耳边风。为了怕麻烦,仍然是把整批插件不分青 红皂白一股脑儿倒进 SU 的插件目录里,心存侥幸的认为传闻中"插件冲突"那档事不会那么 倒霉的刚好落在自己头上。 结果呢?结果就是在论坛上曾经陆陆续续看到有朋友发帖寻求协 助处理这类
问题,询问看到了错误信息该怎么办? 这次我们又遇上从 SU7 到 SU8 这次主版本更新,并且 Ruby 解译器也同时更新了。这两 天在论坛的一些回帖里看到有人说:"我不想更新到 SU8…我还是坚持使用旧版本的 SU7…" 等等言语。数码阿叔则以为,讲话不要那么"铁齿",这事由不得你的,当你从互联网上下载 的模型或组件逐渐都换成了 SU8 的 SKP 文件时,你还能坚持继续使用 SU7 吗?也许你会迟 一些时间更新,但是总归要顺从趋势那么做的。
移植 Ruby 插件正确的做法
安装好 SU8 以后,当你准备要把来自於旧版本 SketchUp 的 Ruby 插件移植进新安装的 SU8 里的时候,为了避免发生插件间相互冲突的问题,正确的做法是: (1)首先把 SU8 安装时自带的 Tools 和 Plugins 二个文件夹做个备份,放在 SU8 安装目录 之外,或者把备份的文件夹更名成 SketchUp 认不得的文件夹名称。 (2) 移植 Ruby 插件时,"每次只复制一个插件"。接着就得重新进入 SU8 操作这个插件, 测试这个插件是否运行正常。假如发生了冲突或 SU 崩溃的问题,你就能准确的辨认出就是 这个最后加进的插件跟已经安装在 Plugins 目录里的某