2011-12-14 233 views

回答

2

從谷歌工程師誰創建的動態組件SketchUp和發佈此代碼對the SketchUcation Forum

UI.menu("Plugins").add_item('Make Sang Red') { 

# Assumes that sang is the 1st entity in model. 
sang = Sketchup.active_model.entities[0] 
sang_def = sang.definition 

# Override sang's shirt color to red. ("material" 
# is a special attribute that requires 
# you to set a formula to "take control" 
# over the default material the user has painted.) 
sang_def.set_attribute 'dynamic_attributes', 'material', 'red' 
sang_def.set_attribute 'dynamic_attributes', '_material_formula', '"red"' 

# Add a new configurable option to Sang. 
# (Any attribute that starts with an underscore 
# is a "meta attribute" that describes behavior.) 
sang_def.set_attribute 'dynamic_attributes', 'weight', '145' 
sang_def.set_attribute 'dynamic_attributes', '_weight_label', 'weight' 
sang_def.set_attribute 'dynamic_attributes', '_weight_formlabel', 'My Weight' 
sang_def.set_attribute 'dynamic_attributes', '_weight_units', 'STRING' 
sang_def.set_attribute 'dynamic_attributes', '_weight_access', 'TEXTBOX' 

# Change the description that shows 
# up in the configure box with a custom 
# formula. 
sang_def.set_attribute 'dynamic_attributes', '_description_formula', '"Sang is now red and weighs " & weight' 

# There is a global handle into the plugin that 
# allows you to make the same calls that the 
# plugin does, like so... 
dcs = $dc_observers.get_latest_class 
dcs.redraw_with_undo(sang) 
} 
+0

感謝@Jim!你可以在最後解釋更多的全局句柄/ $ dc_observers的東西嗎? – villares 2015-04-26 20:45:16