我們學習了群組、組件及組件定義,今天來看看圖層【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代碼控制的,感興趣的小伙伴下去試試