在文章开始之前,我向说明以下两点:
1、我们怎么编写Sketchup 的Ruby脚本程序 ?脚本如何执行 ?
进行 Sketchup 二次开发的主要工具,是通过一款文本编辑插件rubyeditor,代码编写完成后,可通过点击运行按钮就可以在Sketchup界面看到运行的结果,控制台也会显示相关信息,比如报错信息等等。
在程序代码编写完毕后,我们可通过编辑插件进行保存,保存为.rb文件,Sketchup程序执行的目录为 Plugins 文件夹,我们需要把.rb文件放入其中。
# 找到本机的 Plugins 文件夹
UI.openURL("file:///#{Sketchup.find_support_file('Plugins')}")
这样我们就可以控制台调用我们所编写的程序。在控制台输入:
# 后面为 Plugins 文件夹下的路径
load "mycode/001.rb"
2、注释和程序调试
注释是我们对自己代码的备注,有利于提高我们代码的可读性,Sketchup 开发中可使用 “#” 号对单行代码进行注释,也可以使用“ =begin =end” 的方式进行批量注释。
程序调试,主要是通过 “put” 方法对一些相关关键点进行打印输出,根据输出内容进行判断代码是否正确,当然我们也可以用来输出一些数据。比如:
# Sketchup 名称
puts Sketchup.name
# Sketchup 版本
puts Sketchup.version
# 当前加载模型的名字
puts model.title
# 这个档案是否进行存储
puts model.modified?
# 答应这个档案的位置
puts model.path
# 输出曲线的长度
puts curve.length
进入正文,在开始对Sketchup进行二次开发时,我们首先需要了解 Sketchup 官方给出的主要的类族,整体结构有个认识。
对于实际开发而言,主要是对 Sketchup Module -> Model -> Entities 这三者有个清晰的认识。
Sketchup Module :是Sketchup专属的模组,处理软件层级的信息,比如设置本机的Sketchup设置选项,输出当前软件的语言,版本等等。
Model :Sketchup.active_model 返回的Model物件,是对当前Sketchup中物件的容器,我们主要使用它来处理容器中的这些物件。
image# layers 图层:包含了所有的图层信息
layers = model.layers
# definitions 物件关联的元件定义
definitions = model.definitions
# materials 材质信息
materials = model.materials
# options 有关模型的设定选项
options = model.options
# pages 场景书面信息
pages = model.pages
# 返回了容器中所有的图形信息,这也是我们进行二次开发的主要战场。
entities :model.entities
entities 数组中包含的是许多 Entity 对象,或者具体的说是Entity及其子类对象,每个 Entity 就是一个物件,比如点、线、面等等。
imageEntity 类也是一个超级类,提供了许多建立具体物件的方法,其中子类中的Drawingelement 为我们二次开发提供了大量对具体物件的操作API,画线画面等基本操作就是在这一层提供的,比如:add_line 、add_circle 返回一个Edge实体对象,add_face 返回face实体对象,这些对象都是Entity的子类Drawingelement的子类。
网友评论