Hi @jon6CUA5 .
We have created a sample that dumps the materialProperties of a selected body.
# Fusion360API Python script
import traceback
import adsk.fusion
import adsk.core
def run(context):
ui = adsk.core.UserInterface.cast(None)
try:
app: adsk.core.Application = adsk.core.Application.get()
ui = app.userInterface
des: adsk.fusion.Design = app.activeProduct
root: adsk.fusion.Component = des.rootComponent
msg: str = 'Select'
selFilter: str = 'Bodies'
sel: adsk.core.Selection = selectEnt(msg, selFilter)
if not sel:
return
body: adsk.fusion.BRepBody = sel.entity
material: adsk.core.Material = body.material
dump(f'-- {material.name} : {material.id} --')
props: adsk.core.Properties = material.materialProperties
dump('(Property.name : Property.id : Property.value : Property.isReadOnly)')
for idx in range(props.count):
prop: adsk.core.Property = props.item(idx)
dump(f'{prop.name} : {prop.id} : {prop.value} : {prop.isReadOnly}')
except:
if ui:
ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
def dump(s):
adsk.core.Application.get().log(f'{s}')
print(s)
def selectEnt(
msg: str,
filterStr: str) -> adsk.core.Selection:
try:
app: adsk.core.Application = adsk.core.Application.get()
ui: adsk.core.UserInterface = app.userInterface
sel = ui.selectEntity(msg, filterStr)
return sel
except:
return None
It seems that each material has different properties that it owns, so I felt that I had to provide an itemById method and an itemByName method.