master
John Lauer Publish 1.9.357 d2f993d 2mo ago
[
 {
  "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"
 }
]