Sketchup 程序自动化(一)基本结构

image

在文章开始之前,我向说明以下两点:

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 这三者有个清晰的认识。

image

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 就是一个物件,比如点、线、面等等。

image

Entity 类也是一个超级类,提供了许多建立具体物件的方法,其中子类中的Drawingelement 为我们二次开发提供了大量对具体物件的操作API,画线画面等基本操作就是在这一层提供的,比如:add_line 、add_circle 返回一个Edge实体对象,add_face 返回face实体对象,这些对象都是Entity的子类Drawingelement的子类。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,665评论 25 708
  • 这周看了本书,书名叫《西藏的女儿》,是位年轻女性藏族作者写的,她写到了从西藏的女儿写到了格萨尔王的王妃,女神班丹拉...
    15央宗阅读 499评论 1 0
  • 文:莠子 黄药师究竟有多么不喜欢郭靖?那是非常非常的不喜欢。 在郭靖与黄蓉成亲之前,黄药师就反复阻止,要不是黄蓉拼...
    莠子阅读 710评论 2 2
  • 今晚流氓兔推荐的歌曲是《甘心情愿》,郭峰。一开始听这首歌的时候感觉旋律有点熟悉,越听到后面才知道原来很久很久以前听...
    佐恬阅读 173评论 0 0