Sketchup动态组件选项从ruby操作

时间:2011-12-14 15:55:23

标签: ruby sketchup

我创建了一个依赖于其选项的动态组件。 我只需要以编程方式从ruby api更改此选项。但我无法理解如何做到这一点。

1 个答案:

答案 0 :(得分:2)

为为SketchUp创建动态组件的Google工程师,并在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)
}