Ruby 搭配 Sketchup 學習筆記(七)
前情提要
Sketchup 是一款在建築、都市計畫和遊戲開發都頗有名氣的 3D 建模軟體,而 Ruby 則是一個程式語言,它可以搭配 Sketchup 達成程式化 建模的任務,近期經由系主任引薦,要開發 Sketchup 的 Extension,雖然我寫過 Ruby,但 Sketchup 則是完全沒碰過,於是利用文章來記錄所學的一點一滴。
本篇內容
- 屬性
- 模型的屬性
- 檔案存取
屬性
與實體物件有關的資料都被稱為「屬性(Attributes)」,可以使用以下指令進行操作:
- set_attribute:新增 key 和 value,有三個參數
- get_attribute:取得特定 key 的 value,第三個參數可選填,當無該屬性資料時會回傳該值
- attribute_dictionaries:取得該實體物件所有屬性
例如以下範例:
person = Sketchup.active_model.entities[0]
person.set_attribute "person", "state", "relaxing"
person_state = person.get_attribute "person", "state" #relaxing
person_age = person.get_attribute "person", "age", 18 # 18
attr_dicts = person.attribute_dictionaries
attr_dicts.each {|attr| attr.each_pair{|key, value| puts "#{key}-#{value}"}}
#Owner-
#Status-
#state-relaxing
模型的屬性
在之前有提過的 Active_model 之下的其中一個類別 OptionsManager,其用來放置 Sketchup 的所有選項,包括一開始所點選的英吋單位,而 OptionsManager 就像是上方的屬性一樣。以下查看所有的選項及其值:
options_manager = Sketchup.active_model.options
options_manager.each do |options_provider|
puts options_provider.name
options_provider.each do |key, value|
puts "\t#{key}-#{value}"
end
end
NamedOptions
PageOptions
ShowTransition-true
TransitionTime-2.0
SlideshowOptions
LoopSlideshow-true
SlideTime-1.0
UnitsOptions
LengthPrecision-2
LengthFormat-0
LengthUnit-4
LengthSnapEnabled-true
LengthSnapLength-0.3937007874015748
AnglePrecision-1
AngleSnapEnabled-true
SnapAngle-15.0
SuppressUnitsDisplay-false
ForceInchDisplay-false
AreaUnit-4
VolumeUnit-4
AreaPrecision-2
VolumePrecision-2
檔案存取
Sketchup 相關的副檔名有以下:
-
.skm:材料檔
-
.style:樣式檔
-
.skp:元件定義檔
在 Sketchup 中開啟檔案就和 Ruby 一樣,也可以用 chmod 進行權限修改。
當檔案位於 Sketchup 預設工作資料夾之下時,可以使用 Sketchup.find_support_file 取得其路徑,而 Sketchup.find_support_files 則可以取得多個檔案位置,例如:
Sketchup.find_support_files "rb", "Plugins"