Appearance Object

Derived from: Base Object
Defined in namespace "adsk::core" and the header file is <Core/Materials/Appearance.h>

Description

An appearance.

Methods

Name Description
classType

Static function that all classes support that returns the type of the class as a string. The returned string matches the string returned by the objectType property. For example if you have a reference to an object and you want to check if it's a SketchLine you can use myObject.objectType == fusion.SketchLine.classType().

copyTo

**RETIRED** Copies this appearance to the specified target.

deleteMe

Deletes the Appearance from the Design. This method is only valid for appearances that are in a Design and are unused.

Properties

Name Description
appearanceProperties returns the collection of Properties that define this appearance
color PreviewThe appearance's primary color as RGBA. Maps to the schema-appropriate color property — `opaque_albedo` for opaque appearances, `metal_f0` for metallic, `transparent_color` for transparent. Setting alpha less than 255 enables translucency on opaque appearances.

For schema-specific properties not exposed here (emission, index of refraction, anisotropy, etc.), use `appearanceProperties`.
colorTexture PreviewPath to a base-color image used as a texture for the appearance's primary color slot. Setting a non-empty path connects a fresh texture; setting an empty string disconnects the existing texture. Reading returns the connected texture's filename, or an empty string if none is connected.

Whichever of `colorTexture`, `normalTexture`, and `roughnessTexture` is set first anchors the UV scale; any of the three that are set afterward copy that scale on connect so all three maps tile at the same rate. The order matters because the underlying color and roughness textures default to a different real-world tile size than the normal-map texture, so without this alignment a typical PBR set wired through these three setters in mixed order would tile at visibly different rates.

To set a specific UV scale instead, override `texture_RealWorldScaleX` and `texture_RealWorldScaleY` on each texture via `appearanceProperties` after connecting. The same path applies for overriding wrap modes or other texture properties — access the underlying texture via `appearanceProperties.itemById('opaque_albedo').value` (or `metal_f0` / `transparent_color` depending on the appearance's surface type).

The texture image is saved inside the document, so the appearance continues to render correctly when the document is opened on another machine. The string returned by the getter, however, is the path to the image on the local file system, which after a save and re-open will typically differ from the path that was originally set. Treat the returned value as a valid path for reading the image, not as a stable identifier.

Returns false when the appearance does not host a primary color slot. Appearances created via `Appearances.add` always support this property.
hasTexture Property that indicates if this appearance has a texture associated with it.
id The unique internal ID of this Appearance.
isUsed Returns true if this Appearance is used in the Design.
isValid Indicates if this object is still valid, i.e. hasn't been deleted or some other action done to invalidate the reference.
name Returns the name of this Appearance. This is the localized name shown in the UI.
normalTexture PreviewPath to a tangent-space normal map used as a texture for the appearance's `surface_normal` slot. Setting a non-empty path connects a fresh texture; setting an empty string disconnects the existing texture. Reading returns the connected texture's filename, or an empty string if none is connected.

The supplied image is interpreted as an OpenGL-convention tangent-space normal map (the "normal_gl" variant from typical PBR sources). To use a heightmap or bump map instead, set this property to the image path and then change the texture's `bumpmap_Type` to `bumpmap_height_map` via `appearanceProperties.itemById('surface_normal').value.properties`.

The order in which `colorTexture`, `normalTexture`, and `roughnessTexture` are set matters — see the note on `colorTexture`.

As with `colorTexture`, the image is saved inside the document, but the path returned by the getter after a save and re-open is a local file-system path that may differ from the path originally set.

Returns false when the appearance does not host a `surface_normal` slot. Appearances created via `Appearances.add` always support this property.
objectType This property is supported by all objects in the API and returns a string that contains the full name (namespace::objecttype) describing the type of the object.

It's often useful to use this in combination with the classType method to see if an object is a certain type. For example: if obj.objectType == adsk.core.Point3D.classType():
parent Property that returns the Parent object of this Appearance (a MaterialLibrary, Design, or AppearanceFavorites collection).
roughness PreviewSurface microfacet roughness in the range [0, 1]. 0.0 is a perfect mirror, 1.0 is fully matte. Maps to the `surface_roughness` property.
roughnessTexture PreviewPath to a grayscale roughness map used as a texture for the appearance's `surface_roughness` slot. Setting a non-empty path connects a fresh texture; setting an empty string disconnects the existing texture and falls back to the scalar `roughness` value. Reading returns the connected texture's filename, or an empty string if none is connected.

Setting this property resets the scalar `roughness` to 1.0 so the texture's grayscale values pass through directly (0 = mirror-smooth, 1 = fully matte). To attenuate the texture, set `roughness` afterwards:

appearance.roughnessTexture = path appearance.roughness = 0.7  # cap roughness at 70%

The order in which `colorTexture`, `normalTexture`, and `roughnessTexture` are set matters — see the note on `colorTexture`.

As with `colorTexture`, the image is saved inside the document, but the path returned by the getter after a save and re-open is a local file-system path that may differ from the path originally set.

Returns false when the appearance does not host a `surface_roughness` slot. Appearances created via `Appearances.add` always support this property.
usedBy Returns a collection of the entities currently using this appearance. This property is only valid for an appearance in a Design and where the IsUsed property returns true. The collection returned can contain bodies, faces, or occurrences that have this appearance applied.

Accessed From

Appearances.add, Appearances.addByCopy, Appearances.item, Appearances.itemById, Appearances.itemByName, BRepBody.appearance, BRepFace.appearance, ConfigurationAppearanceCell.appearance, CustomGraphicsAppearanceColorEffect.appearance, FavoriteAppearances.add, FavoriteAppearances.item, FavoriteAppearances.itemById, FavoriteAppearances.itemByName, Material.appearance, MaterialPreferences.appearanceOverride, MeshBody.appearance, Occurrence.appearance

Samples

Name Description
Avoid Machine Surface Settings API Sample

This sample script demonstrates how to use Machine/Avoid/Gouge/Fixture functionality.

The script starts by opening a sample model from the CAM Samples folder via its URN. The model comprises a curved surface with a through slot, a countersunk hole and a raised, circular and filleted upstand from the surface. The model is supported by two rectangular blocks, themselves mounted on a fixture plate. A setup is included with a single operation running a 3-axis diagonal raster over the model, supports and fixture. The operation machines the fixture, the supporting blocks, the upper surface of the upstand and the area within the slot and hole, something we would like to avoid.

The script duplicates the original operation and then proceeds to create a series of MachineAvoidGroups. These are labelled as either Machine in the case of 2 cap surfaces for the slot and hole, Fixture for the fixture plate, Gouge for the supporting blocks and Avoid for the top face of the upstand. Additionally, both AxialOffset and RadialOffset can be specified for the Machine, Avoid and Fixture passes.

Create Engravings Selection Sets API Sample

This sample script demonstrates how to find and machine engravings in the Z+ direction using pocket recognition.

The script will first open an example model via its URN. Using pocket recognition, it will identify pockets that may be engravings based on their dimensions.

We assume here that an engraving pocket is:

  • Made with a flat bottom face and no fillet.
  • A closed pocket.
  • Have a Z height less than 2 mm

We demonstrate creating selection sets in both design and manufacture workspaces and use one of the selection sets as an operation geometry selection input to generate an engraving operation.

The engraving toolpath can be seen by expanding the setup and selecting the operation.

Material API Sample

Demonstrates using materials and appearance using the API.

To use the sample, create a new Python or C++ script and copy and paste this code, replacing the default code. The sample also used an external appearance library which you can get here. Copy that to any location on your computer and edit the path in the script. When running the script, have a design open that contains a body in the root component.

Version

Introduced in version August 2014