Adding dynamic attributes to multiple objects
-
Here is a DC with a single editable Textbox for an attribute named Color. Maybe it'll help
-
I am using Pro but I am more interested in mass dumping attributes to objects that users using Pro can see. I am able to add the attributes using set_attribute but they show up as "User cannot see this attribute". How can I add an attribute so a user can see it or edit it?
Thanks,
-
You need to inspect the "dynamic_attributes" dictionary. It uses meta-attributes that begin with an underscore to store meta-data about other attributes, such as if it has an entry in the Options dialog.
So for the model I attached previously, there is an attribute named "color", but also several that begin with "_color". These are what control how it appears in the Options dialog. I don't know the details of what all the meta-attributes are or do. You probably will need to reverse engineer them.
-
So I was able to add a "Quantity" textbox to the user options dialog with the following code:
ad = selection[0].definition.attribute_dictionaries["dynamic_attributes"] ad["quantity"] = "1" ad["_quantity_access"] = "TEXTBOX" ad["_quantity_formlabel"] = "Quantity" -
Didn't realise one could set attributes like that.
-
Yeah, it wouldn't actually be too hard to create a DC editor for non-pro users.
I was considering doing a specialized one just for animating doors and windows.
-
I meant the way you added items to AttributeDictionaries. I've always used the explicit
set_attributemethod. -
set_attribute and get_attribute are probably better to use in the long run, if changes were ever made internally they would likely still work.
-
heeeey? where was that comment of being able to remove attributs using set_attribute? mind trixies!
-
It was wrong! I was thinking of something else. There was what I thought an odd way to delete an attribute, but I think it was an odd way to delete the entire dictionary.
-
set_attributecan potentially kill the whole dictionary?? -
Ok, this is what I was remembering:
delete_attribute can delete the entire dictionary if the value param is not used.
http://code.google.com/apis/sketchup/docs/ourdoc/entity.html#delete_attribute
@unknownuser said:
Entity.delete_attributeSketchUp 6.0+
The delete_attribute method is used to delete an attribute from an entity. If only the dictionary_name is given, then it deletes the entire AttributeDictionary. Otherwise, delete_attribute deletes the attribute with the given key from the given dictionary. -
@jim said:
Ok, this is what I was remembering:
Entity.delete_attribute can delete the entire dictionary if the value param is not used.
AGREED !
There should have been (should be,) an explicit Entity.delete_dictionary method (even if it calls the other one with 'secret' parameters. Of course the safest way is to rename and then override the delete_attribute method, so only a call to a delete_dictionary method would do the deletion.
Which may actually be how things work with delete_attribute, ie if num args == 1 then it calls the Entity.attribute_dictionaries.delete(arg) method. ) -
Guys,
Thanks for your help! Great insight.
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better π
Register LoginAdvertisement