我们学习了群组、组件及组件定义,今天来看看图层【Layer】,在Sketchup2020版本中已经更名为“标记”,如图
那么图层在我们建模过程中能带来哪些便利呢?
- 可以快速的隐藏同一图层内所有东西,而不需要逐一选择并右键点击隐藏
- 在电脑卡顿的时候,选择隐藏部分模型,比如,大量的家具模型导入会导致sketchup运行卡顿,这时你只需要关掉家具图层,就可以顺畅的修改其他位置了。
- 导出图稿的时候,可以分层按需求方便快捷的逐一导出。
下面我们手动演示一下如何将模型放入图层中,这里采用最新版SketchUp2020版本演示
图层集合及图层【Layers&Layer】
图层跟组件定义一样,他们都有一个集合用来管理模型对象中的所有图层对像。我们先来了解一下图层集合Layers。
Layers图层集合使你可以查看和管理模型中的所有图层。您可以从模型中获得指向Layers对象的指针。
如:
model = Sketchup.active_model
layers = model.layers
在Layers中也有很多的查询和管理图层的方法如:
- 根据索引或名称检索图层
#[](index_or_name) ⇒ Sketchup::Layer?
调用方法:
model = Sketchup.active_model
layers = model.layers
new_layer = layers.add "test layer"
layer_by_number = layers[1]
layer_by_name = layers["test layer"]
- 添加新图层
#add(layer_name) ⇒ Object
调用方法:
layers = Sketchup.active_model.layers
layer = layers.add("Test Layer")
- 移除图层,也可以移除图层中的模型
#remove(layer, remove_geometry = false) ⇒ Object
调用方法:
# 通过图层对象删除图层.
layer = Sketchup.active_model.layers.add("MyLayer")
Sketchup.active_model.layers.remove(layer)# 通过图层名称删除图层.
Sketchup.active_model.layers.add("MyLayer")
Sketchup.active_model.layers.remove("MyLayer")# 通过图层索引删除图层.
Sketchup.active_model.layers.remove(1)# 删除图层及其图层中的模型.
edge = Sketchup.active_model.entities.add_line([0, 0, 0], [9, 9, 9])
edge.layer = Sketchup.active_model.layers.add("MyLayer")
Sketchup.active_model.layers.remove("MyLayer", true)
参数:
layer => 索引、名称或图层对象
remove_geometry => 布尔值 如果为true,删除图层时,相应的模型也会被删除
以上就是图层集合中常常用到的方法 ,还有就是观察员方法 这个在后面会讲到
Layer
Layer类包含修改和提取层信息的方法。
默认情况下,SketchUp模型具有一层,即第0层(零),这是基础层。您无法删除或重命名第0层。与某些其他CAD软件包不同,SketchUp中与不同层关联的实体仍然彼此相交。(如果您希望实体的集合不相交,请将它们放在“组”中。)
图层通常用于组织模型并控制相关组和组件的可见性。例如,您可以将所有墙壁和屋顶实体设为不同的组,将图层与这些组关联,然后隐藏这些图层,以便仅在模型中显示平面图。
图层创建方法:
可以通过调用Layers.add方法创建新图层。
model = Sketchup.active_model
layers = model.layers
new_layer = layers.add "test layer"
- 图层排序
#<=>(layer2) ⇒ Object
<=>方法用于根据两个图层的名称进行比较。如果要构建图层名称列表,则可以使用它进行排序。
调用方法:
model = Sketchup.active_model
layers = model.layers
new_layer = layers.add "test layer"
layer1 = layers[0]
layer2 = layers[1]
status = layer1 <=> layer2
返回值:
如果layer1小于layer2,则为-1。如果layer2小于layer1,则为1。如果layer1和layer2相等,则为0。
- 判断图层是否为同一个
#==(layer2) ⇒ Object
调用方法:
model = Sketchup.active_model
layers = model.layers
layer1 = layers.add "test layer 1"
layer2 = layers.add "test layer 2"
status = layer1 == layer2
返回值:
如果layer1和layer2相等,则为true。如果layer1和layer2不相等,则返回false。
- 设置图层是否可见
#visible=(is_visible) ⇒ Object
#visible? ⇒ Boolean
调用方法:
model = Sketchup.active_model
layers = model.layers
new_layer = layers.add "test layer"# 隐藏图层.
new_layer.visible = false
# 确定该方法是否隐藏
UI.messagebox(new_layer.visible?)
效果:
图层控制示例
这里我们新建一个图层来控制图层中的实体模型
model = Sketchup.active_model
ent = model.selection.first # 选中一个组或组件
layers = model.layers
new_layer = layers.add "test layer" # 新建一个图层ent.layer = new_layer
效果:
就这样把群组或组件加到了图层中,可以通过su图层来控制群组或组件的显示或隐藏了。
当然也是可以通过ruby代码控制的,感兴趣的小伙伴下去试试