Question

I have created an Dynamic Component which depend of its options. I just need to change this options programmatically from ruby api. But I can't understand how to do it.

Was it helpful?

Solution

From the Google Engineer who created Dynamic Components for SketchUp and posted this code on 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)
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top