Hi @runeruiterkamp -San.
I was curious so I ran the following script using the attached file.
import traceback
import adsk.core as core
import adsk.fusion as fusion
def run(context):
ui: core.UserInterface = None
try:
app: core.Application = core.Application.get()
ui = app.userInterface
des: fusion.Design = app.activeProduct
root: fusion.Component = des.rootComponent
app.log(f"** Fusion360 ver{app.version} **")
rootBody1: fusion.BRepBody = root.bRepBodies[0]
rootBody2: fusion.BRepBody = root.bRepBodies[1]
test_measureMinimumDistance(
"Root Body",
rootBody1,
rootBody2,
)
test_measureMinimumDistance(
"Root Body Face",
rootBody1.faces[0],
rootBody2.faces[0],
)
test_measureMinimumDistance(
"Root Body Edge",
rootBody1.edges[0],
rootBody2.edges[0],
)
test_measureMinimumDistance(
"Root Body Vertex",
rootBody1.vertices[0],
rootBody2.vertices[0],
)
occ1: fusion.Occurrence = root.occurrences[0]
occ2: fusion.Occurrence = root.occurrences[1]
test_measureMinimumDistance(
"Occurrence",
occ1,
occ2,
)
occBody1: fusion.BRepBody = occ1.component.bRepBodies[0]
occBody1 = occBody1.createForAssemblyContext(occ1)
occBody2: fusion.BRepBody = occ2.component.bRepBodies[0]
occBody2 = occBody2.createForAssemblyContext(occ2)
test_measureMinimumDistance(
"Occurrence Body",
occBody1,
occBody2,
)
test_measureMinimumDistance(
"Occurrence Body Face",
occBody1.faces[0],
occBody2.faces[0],
)
test_measureMinimumDistance(
"Occurrence Body Edge",
occBody1.edges[0],
occBody2.edges[0],
)
test_measureMinimumDistance(
"Occurrence Body Vertex",
occBody1.vertices[0],
occBody2.vertices[0],
)
except:
if ui:
ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
def test_measureMinimumDistance(
msg: str,
entity1,
entity2,
) -> None:
res = is_measureMinimumDistance(
entity1,
entity2,
)
app: core.Application = core.Application.get()
app.log(f"{msg} -> {res}")
def is_measureMinimumDistance(
entity1,
entity2,
) -> bool:
try:
app: core.Application = core.Application.get()
measMgr: core.MeasureManager = app.measureManager
measMgr.measureMinimumDistance(entity1, entity2)
return True
except:
return False
Here are the results.
** Fusion360 ver2.0.16490 **
Root Body -> False
Root Body Face -> True
Root Body Edge -> True
Root Body Vertex -> True
Occurrence -> False
Occurrence Body -> False
Occurrence Body Face -> True
Occurrence Body Edge -> True
Occurrence Body Vertex -> True
The measureMinimumDistance method succeeds for face, edge, and vertex, but fails between body and occurrence.
I think this is probably a bug, but I would like to have it fixed as soon as possible, because it is very inconvenient to not be able to perform measurements.