app
Fusion - the Fusion 360 Bridge
Public Made by Adomby adom
Drive Autodesk Fusion 360 from the cloud via Adom Bridge: component libraries, IPC package generation, board layout, exports (STEP/Gerbers/BOM/CPL), fast APS cloud search, and parametric modeling.
master
[
{
"modelPath": "C:/tmp/LAN7800.step",
"orient": true,
"layersOff": [],
"script": "import adsk.core, adsk.fusion, math\nres={}\nd=adsk.fusion.Design.cast(app.activeProduct); root=d.rootComponent\nim=app.importManager\nim.importToTarget(im.createSTEPImportOptions('C:/tmp/LAN7800.step'), root)\noc=root.occurrences.item(root.occurrences.count-1); bb=oc.boundingBox\ndx=bb.maxPoint.x-bb.minPoint.x; dy=bb.maxPoint.y-bb.minPoint.y; dz=bb.maxPoint.z-bb.minPoint.z\nthin=min(dx,dy,dz); big=max(dx,dy,dz)\ntall_z=(dz>=dx and dz>=dy)\naxis=None\nif (thin < 0.5*big) and not tall_z:\n axis=(1,0,0) if (dy<=dx and dy<=dz) else ((0,1,0) if (dx<=dy and dx<=dz) else None)\nif axis:\n mat=oc.transform2.copy(); rot=adsk.core.Matrix3D.create()\n rot.setToRotation(math.pi/2, adsk.core.Vector3D.create(*axis), adsk.core.Point3D.create(0,0,0))\n mat.transformBy(rot); oc.transform2=mat\n d.snapshots.add() if d.snapshots.hasPendingSnapshot else None\nres['dims_mm']=[round(dx*10,2),round(dy*10,2),round(dz*10,2)]\nnames=[]; hidden=[]\ndef _layer(n):\n n=(n or '').split(':')[0]\n return n.startswith('Adom.') and n in LAYERS_OFF\ndef _walk(comp, group, hide):\n for i in range(comp.bRepBodies.count):\n b=comp.bRepBodies.item(i); names.append((group or '')+'/'+b.name)\n if hide or _layer(b.name):\n try:\n b.isLightBulbOn=False; hidden.append((group or '')+'/'+b.name)\n except Exception: pass\n for j in range(comp.occurrences.count):\n o=comp.occurrences.item(j); on=(o.component.name or o.name).split(':')[0]\n g=group or (on if on.startswith('Adom.') else '')\n h=hide or _layer(on)\n if h and not hide:\n try: o.isLightBulbOn=False\n except Exception: pass\n _walk(o.component, g, h)\nLAYERS_OFF=set([])\ntry:\n _walk(oc.component, '', False)\nexcept Exception as _e:\n res['layersError']=str(_e)[:120]\nres['bodies']=names; res['layersHidden']=hidden\nresult=res\n"
},
{
"modelPath": "C:/x/chip.step",
"orient": false,
"layersOff": [
"Adom.Board",
"Adom.SolderBalls"
],
"script": "import adsk.core, adsk.fusion, math\nres={}\nd=adsk.fusion.Design.cast(app.activeProduct); root=d.rootComponent\nim=app.importManager\nim.importToTarget(im.createSTEPImportOptions('C:/x/chip.step'), root)\noc=root.occurrences.item(root.occurrences.count-1); bb=oc.boundingBox\ndx=bb.maxPoint.x-bb.minPoint.x; dy=bb.maxPoint.y-bb.minPoint.y; dz=bb.maxPoint.z-bb.minPoint.z\naxis=None\nif axis:\n mat=oc.transform2.copy(); rot=adsk.core.Matrix3D.create()\n rot.setToRotation(math.pi/2, adsk.core.Vector3D.create(*axis), adsk.core.Point3D.create(0,0,0))\n mat.transformBy(rot); oc.transform2=mat\n d.snapshots.add() if d.snapshots.hasPendingSnapshot else None\nres['dims_mm']=[round(dx*10,2),round(dy*10,2),round(dz*10,2)]\nnames=[]; hidden=[]\ndef _layer(n):\n n=(n or '').split(':')[0]\n return n.startswith('Adom.') and n in LAYERS_OFF\ndef _walk(comp, group, hide):\n for i in range(comp.bRepBodies.count):\n b=comp.bRepBodies.item(i); names.append((group or '')+'/'+b.name)\n if hide or _layer(b.name):\n try:\n b.isLightBulbOn=False; hidden.append((group or '')+'/'+b.name)\n except Exception: pass\n for j in range(comp.occurrences.count):\n o=comp.occurrences.item(j); on=(o.component.name or o.name).split(':')[0]\n g=group or (on if on.startswith('Adom.') else '')\n h=hide or _layer(on)\n if h and not hide:\n try: o.isLightBulbOn=False\n except Exception: pass\n _walk(o.component, g, h)\nLAYERS_OFF=set(['Adom.Board', 'Adom.SolderBalls'])\ntry:\n _walk(oc.component, '', False)\nexcept Exception as _e:\n res['layersError']=str(_e)[:120]\nres['bodies']=names; res['layersHidden']=hidden\nresult=res\n"
}
]