SketchUp uses "meta-attributes" in two ways:

  • Most meta-attributes depend on another (meta-)attribute and describe one of its properties (eg, formula, label, units).

  • Several additional meta-attributes are used to define properties of the entire model.


Meta-attributes are easy to distinguish from attributes. Their names all begin with an underscore and follow well-defined conventions.

Let's say you create an attribute called "FavoriteColor", using the Component Attributes window. These are some attributes and meta-attributes that SketchUp might create (and consequently, that a Ruby plugin would need to create in order to achieve the same functionality):

# raw value of the attribute
favoritecolor            = 'Red'

_favoritecolor_access    = 'TEXTBOX'
# access = 'NONE'    if consumers can't see or edit this attribute
#        = 'VIEW'    if consumers can see this attribute
#        = 'TEXTBOX' if consumers can enter a value for this attribute
#        = 'LIST'    if consumers can select a value from a list

# label for use in forms
_favoritecolor_formlabel = 'Favorite Color'

# (spreadsheet-style) formula, if set
_favoritecolor_formula   = ''

# label for use in the Component Attributes dialog
_favoritecolor_label     = 'FavoriteColor'

# URL-encoded list for a pulldown menu (ie, LIST)
_favoritecolor_options   = 'Pink=pink&Red=255,0,0&Blue=blue'

_favoritecolor_units     = 'STRING'

Note: The example above was adapted from this thread on the SketchUcation Community Forums.

Comprehensive Lists

Here is a start on some comprehensive lists of meta-attributes. Additions and corrections are earnestly requested.

Dependent meta-attribute types

  • _A_access

    user access settings for attribute A (eg, LIST, NONE, TEXTBOX, VIEW)

  • _A_behaviors

    unknown - help?

  • _A_error

    unknown - help?

  • _A_formlabel

    attribute A's label for use in forms (eg, Finish, Height)

  • _A_formula

    spreadsheet-style formula for attribute A (eg, box!LenX-1.25)

  • _A_formulaunits

    units for attribute A's formula results (eg, FLOAT, INCHES, STRING)

  • _A_label

    attribute A's label for use in the Component Attributes dialog (eg, Copies, Hidden, LenX)

  • _A_nominal

    the nominal value for attribute A (eg, 0.5, 1.971, 17.625)

  • _A_options

    URL-encoded list for a pulldown menu for attribute A (see Pulldown Menus)

  • _A_state1

    unknown - help? (eg, 0, 1)

  • _A_units

    the units to be used in interpreting attribute A (eg, INCHES, STRING)

  • _inst_A

    the value of attribute A for this instance (eg, -15.25, X, false)

Independent meta-attributes

  • _formatversion

    unknown - help? (eg, 1.0)

  • _hasbehaviors

    unknown - help? (eg, 1.0)

  • _has_movetool_behaviors

    unknown - help?

  • _iscollapsed

    unknown - help? (eg, false)

  • _lastmodified

    the date and time of the last modification of this component (eg, 2010-06-02 12:02)

  • _lengthunits

    The default unit for length values (eg, INCHES)

  • _name

    name of top-level component (eg, LB_31)

This wiki page is maintained by Rich Morin, an independent consultant specializing in software design, development, and documentation. Please feel free to email comments, inquiries, suggestions, etc!

Topic revision: r8 - 03 Jan 2012, RichMorin
This site is powered by Foswiki Copyright © by the contributing authors. All material on this wiki is the property of the contributing authors.
Foswiki version v2.1.6, Release Foswiki-2.1.6, Plugin API version 2.4
Ideas, requests, problems regarding CFCL Wiki? Send us email