sketchucation logo sketchucation
    • Login
    Oops, your profile's looking a bit empty! To help us tailor your experience, please fill in key details like your SketchUp version, skill level, operating system, and more. Update and save your info on your profile page today!
    πŸ›£οΈ Road Profile Builder | Generate roads, curbs and pavements easily Download

    Adding dynamic attributes to multiple objects

    Scheduled Pinned Locked Moved Developers' Forum
    19 Posts 4 Posters 1.2k Views 4 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • N Offline
      NewGuy
      last edited by

      I think set_attribute is what I was looking for.

      1 Reply Last reply Reply Quote 0
      • N Offline
        NewGuy
        last edited by

        Is there a way to toggle the attribute so that "Users can edit as a textbox" in the Component Attributes panel?

        1 Reply Last reply Reply Quote 0
        • J Offline
          Jim
          last edited by

          That's all controlled by specially named attributes in the "dynamic_attributes" dictionary. If you have Pro, you can edit them in the Attributes Editor, so I'm assuming you are using the Free version?

          Hi

          1 Reply Last reply Reply Quote 0
          • J Offline
            Jim
            last edited by

            Here is a DC with a single editable Textbox for an attribute named Color. Maybe it'll help


            lemon_box.skp

            Hi

            1 Reply Last reply Reply Quote 0
            • N Offline
              NewGuy
              last edited by

              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,

              1 Reply Last reply Reply Quote 0
              • J Offline
                Jim
                last edited by

                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.

                Hi

                1 Reply Last reply Reply Quote 0
                • J Offline
                  Jim
                  last edited by

                  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"
                  

                  Hi

                  1 Reply Last reply Reply Quote 0
                  • thomthomT Offline
                    thomthom
                    last edited by

                    Didn't realise one could set attributes like that.

                    Thomas Thomassen β€” SketchUp Monkey & Coding addict
                    List of my plugins and link to the CookieWare fund

                    1 Reply Last reply Reply Quote 0
                    • J Offline
                      Jim
                      last edited by

                      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.

                      Hi

                      1 Reply Last reply Reply Quote 0
                      • thomthomT Offline
                        thomthom
                        last edited by

                        I meant the way you added items to AttributeDictionaries. I've always used the explicit set_attribute method.

                        Thomas Thomassen β€” SketchUp Monkey & Coding addict
                        List of my plugins and link to the CookieWare fund

                        1 Reply Last reply Reply Quote 0
                        • J Offline
                          Jim
                          last edited by

                          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.

                          Hi

                          1 Reply Last reply Reply Quote 0
                          • thomthomT Offline
                            thomthom
                            last edited by

                            heeeey? where was that comment of being able to remove attributs using set_attribute? mind trixies!

                            Thomas Thomassen β€” SketchUp Monkey & Coding addict
                            List of my plugins and link to the CookieWare fund

                            1 Reply Last reply Reply Quote 0
                            • J Offline
                              Jim
                              last edited by

                              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.

                              Hi

                              1 Reply Last reply Reply Quote 0
                              • thomthomT Offline
                                thomthom
                                last edited by

                                set_attribute can potentially kill the whole dictionary??

                                Thomas Thomassen β€” SketchUp Monkey & Coding addict
                                List of my plugins and link to the CookieWare fund

                                1 Reply Last reply Reply Quote 0
                                • J Offline
                                  Jim
                                  last edited by

                                  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.
                                  

                                  Hi

                                  1 Reply Last reply Reply Quote 0
                                  • Dan RathbunD Offline
                                    Dan Rathbun
                                    last edited by

                                    @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. )

                                    I'm not here much anymore.

                                    1 Reply Last reply Reply Quote 0
                                    • N Offline
                                      NewGuy
                                      last edited by

                                      Guys,
                                      Thanks for your help! Great insight.

                                      1 Reply Last reply Reply Quote 0
                                      • 1 / 1
                                      • First post
                                        Last post
                                      Buy SketchPlus
                                      Buy SUbD
                                      Buy WrapR
                                      Buy eBook
                                      Buy Modelur
                                      Buy Vertex Tools
                                      Buy SketchCuisine
                                      Buy FormFonts

                                      Advertisement