美文网首页Ruby建筑圈
Sketchup 程序自动化(一)基本结构

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

作者: LeonR | 来源:发表于2018-02-26 17:14 被阅读61次
    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的子类。

    相关文章

      网友评论

        本文标题:Sketchup 程序自动化(一)基本结构

        本文链接:https://www.haomeiwen.com/subject/jcwyxftx.html