loadpath 0.1.2__tar.gz → 0.1.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {loadpath-0.1.2 → loadpath-0.1.3}/PKG-INFO +84 -50
- {loadpath-0.1.2 → loadpath-0.1.3}/README.md +83 -49
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/SKILL.md +12 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath.egg-info/PKG-INFO +84 -50
- {loadpath-0.1.2 → loadpath-0.1.3}/pyproject.toml +1 -1
- {loadpath-0.1.2 → loadpath-0.1.3}/LICENSE +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/README.md +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/__init__.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/__main__.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/am.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/amgfast.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/assembly.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/benchmarks/__init__.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/benchmarks/beams.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/benchmarks/cases/ge-bracket.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/benchmarks/evaluate.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/benchmarks/mechanisms.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/benchmarks/problems.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/benchmarks/reference/bridge-3d.top3d.npz +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/benchmarks/reference/cantilever-3d.top3d.npz +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/benchmarks/reference/lbracket-2d.top88-ft2.npz +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/benchmarks/reference/mbb-2d.top88-ft1.npz +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/benchmarks/reference/mbb-2d.top88-ft2.npz +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/benchmarks/reference.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/benchmarks/run.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/brep.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/bucklingopt.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/buildsim.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/cadimport.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/calibration.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/cavities.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/checks/__init__.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/checks/dfm.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/checks/exchanger.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/checks/fea.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/checks/fit.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/checks/networks.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/checks/opening.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/checks/sdf_kit.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/conjugate.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/constrained.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/contact.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/coopt.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/cores.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/crease.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/critic.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/crosscheck.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/cutcell.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/data/lattice_buckling.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/data/lattice_tensors.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/data/published_experiments.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/decimate.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/delivery.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/directions.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/domain.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/drains.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/durability.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/editor.html +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/editor.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/escape.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/__init__.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/baselines/coarse.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/baselines/full.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/brief_kinds/__init__.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/brief_kinds/heatx.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/brief_kinds/lattice.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/brief_kinds/multimat.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/assets/bracket.step +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/assets/desk_arm.urdf +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/assets/elbow-gearbox.stl +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/assets/motor-body.stl +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/assets/sketch.png +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/base-adapter-fdm.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/bell-crank-lpbf.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/belt-tensioner-fdm.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/camera-boom-mjf.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/camera-mount-pla.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/coolant-isolator-petg.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/elbow-bearing-bracket-sls.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/elbow-gearbox-forearm-mjf.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/elbow-link-fatigue-fdm.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/elbow-stop-pad-tpu.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/forearm-fdm.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/forearm-servo-link-fdm.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/grip-pad-finger-mm.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/gripper-bracket-creep-fdm.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/gripper-finger-fdm.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/gripper-jaw-fatigue-mjf.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/gripper-palm-fdm.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/hot-stepper-mount-asa-fdm.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/hpu-oil-cooler-lpbf.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/isolated-camera-mount-mm.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/kart-charge-cooler-lpbf.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/lighten-step-bracket.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/nema17-mount-stl.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/pillow-block-sls.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/polyjet-fingertip-mm.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/rod-hook-pla.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/sensor-arm-resin.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/shelf-bracket-pla.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/shoulder-riser-mjf.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/sketch-clevis.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/spring-bracket-pacf.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/tool-flange-ti64.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/tray-arm-lattice-fdm.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/turret-fdm.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/upper-arm-sls.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/urdf-forearm.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/wrist-link-mjf.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs/wrist-yoke-mjf.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/briefs.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/cases/arm-link-cast.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/cases/arm-link-driven.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/cases/arm-link-sandwich.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/cases/arm-link.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/cases/bell-crank.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/cases/grip-turret.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/cases/grip-upper-arm.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/cases/grip-wrist-link-mjf.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/cases/grip-wrist-yoke.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/cases/lpbf-intercooler-core.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/cases/mbb-beam.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/cases/motor-body.stl +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/cases/motor-mount.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/cases/printed-hook.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/cases/wall-bracket-fasteners.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/cases/wall-bracket.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/corpus.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/pareto.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/evals/run.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/examples/arm-link.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/examples/bumpered-bracket-compression.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/examples/bumpered-bracket-lattice.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/examples/bumpered-bracket.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/examples/gripper-finger-mm.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/examples/heat-exchanger-counterflow.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/examples/heat-exchanger-crossflow-tuned.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/examples/heat-exchanger-crossflow.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/examples/pedal-lattice.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/examples/pressure-plenum.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/examples/shelf-bracket.json +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/exchanger.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/fasteners.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/fem.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/femops.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/fieldjit.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/fieldops.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/fields.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/fieldtorch.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/flow.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/flowtopo.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/gpu.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/heatx.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/heatx_thermal.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/homogenized.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/ibrep.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/impact.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/infill.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/interface_library.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/interlock.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/isolator.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/knn.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/lattice.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/lattice3mf.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/lattice_buckling.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/lattice_grade.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/lattice_orient.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/lattice_print.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/lattice_tensors.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/latticestep.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/manufacture.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/material_library.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/materials.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/mcp_server.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/mechanism.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/mechanism_nl.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/meshops.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/mg.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/mma.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/modal.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/multimat.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/narrowband.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/nlkernel.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/nonlinear.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/orient.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/porous.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/pressure.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/preview.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/printcheck.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/printsetup.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/processcheck.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/quick.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/recall.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/reconstruct.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/render.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/resolved.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/schema.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/sdf_kit.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/selfx.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/shapes.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/sharp.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/simp.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/sizing.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/slicer.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/spec.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/step.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/struts.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/study.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/tasks.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/thermal.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/threemf.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/tune.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/validation.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/verify.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/viewer.html +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/viewer.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/viscoelastic.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/voxelprint.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath/voxels.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath.egg-info/SOURCES.txt +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath.egg-info/dependency_links.txt +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath.egg-info/entry_points.txt +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath.egg-info/requires.txt +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/loadpath.egg-info/top_level.txt +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/setup.cfg +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_agent_path.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_amgfast.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_assembly.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_benchmarks.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_brief_kinds_heatx.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_brief_kinds_lattice.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_brief_kinds_multimat.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_buckling_check.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_bucklingopt.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_buildsim.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_cadimport.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_calibration.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_conjugate.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_contact.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_coopt.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_cores.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_crease.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_cutcell.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_dfm.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_directions.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_durability.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_editor.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_escape.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_evals.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_femops.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_field_materials.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_fieldjit.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_fields.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_fieldtorch.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_fit.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_flow.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_flowtopo.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_heatx_fixes.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_heatx_rating.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_hex8_im.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_impact.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_interface.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_interfaces.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_interlock.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_lattice3mf.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_lattice_print.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_lattice_tensors.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_latticestep.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_loadpath.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_manufacture.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_materials.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_meshops.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_metal.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_mg.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_multimat.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_multimat_fixes.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_narrowband.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_nonlinear.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_porous.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_pressure.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_preview.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_print.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_printsetup.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_process.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_published_experiments.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_recall.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_sharp.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_sizing.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_slicer.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_struts.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_tetsizing.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_thermal.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_threemf_multi.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_tune.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_tutorials.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_voxelprint.py +0 -0
- {loadpath-0.1.2 → loadpath-0.1.3}/tests/test_voxels.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: loadpath
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.3
|
|
4
4
|
Summary: Generative design for printed parts: topology optimization from keep-outs, preserved geometry and loads, verified in real units.
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
Project-URL: Homepage, https://github.com/connorwhite-online/loadpath
|
|
@@ -70,12 +70,12 @@ safety factor, deflection, thinnest member, printability, pass or fail.
|
|
|
70
70
|
|
|
71
71
|
<table>
|
|
72
72
|
<tr>
|
|
73
|
-
<td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
74
|
-
<td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
73
|
+
<td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/cases/grip-wrist-link-mjf-part.png" height="420"></td>
|
|
74
|
+
<td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/stress/grip-wrist-link-mjf.png" height="420"></td>
|
|
75
75
|
</tr>
|
|
76
76
|
<tr>
|
|
77
|
-
<td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
78
|
-
<td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
77
|
+
<td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/cases/grip-wrist-yoke-part.png" width="380"></td>
|
|
78
|
+
<td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/stress/grip-wrist-yoke.png" width="380"></td>
|
|
79
79
|
</tr>
|
|
80
80
|
<tr>
|
|
81
81
|
<td align="center" colspan="2"><sub>Two robot-arm parts as loadpath delivered them (left) and their stress from a fresh
|
|
@@ -100,12 +100,46 @@ Then ask in plain words:
|
|
|
100
100
|
> printed on an FDM printer.
|
|
101
101
|
|
|
102
102
|
The agent writes the study, checks it, runs it in the background and reads
|
|
103
|
-
the report back. Its guide is [loadpath/SKILL.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
103
|
+
the report back. Its guide is [loadpath/SKILL.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/loadpath/SKILL.md) (the
|
|
104
104
|
`loadpath_guide` tool returns it); the tools and the loop are in
|
|
105
|
-
[docs/agents.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
105
|
+
[docs/agents.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/agents.md). The server runs locally and nothing
|
|
106
106
|
leaves the machine. Units are millimetres, newtons and megapascals. MIT
|
|
107
107
|
licensed.
|
|
108
108
|
|
|
109
|
+
## Where it fits
|
|
110
|
+
|
|
111
|
+
A designed part needs a shape, the loads it carries, and a way to make it.
|
|
112
|
+
The open tools each cover one of those:
|
|
113
|
+
|
|
114
|
+
- **Topology optimization codes** (top88, top3d, ToPy, FEniCS scripts) are
|
|
115
|
+
research solvers. They stop at a density field on a grid: no printable
|
|
116
|
+
part, and nothing checks the result.
|
|
117
|
+
- **Script CAD** (CadQuery, build123d, OpenSCAD) and AI CAD tools draw exact
|
|
118
|
+
geometry but don't know the loads.
|
|
119
|
+
- **Commercial generative design** (Fusion, nTop) does the whole job, but
|
|
120
|
+
it's built around a GUI, not an agent.
|
|
121
|
+
|
|
122
|
+
loadpath is the layer in between. Your CAD defines the interfaces; loadpath
|
|
123
|
+
takes those plus the loads, material and process, and returns a watertight
|
|
124
|
+
part checked by an analysis independent of the optimizer, with a JSON report
|
|
125
|
+
an agent can act on. Its STEP output goes back into CAD.
|
|
126
|
+
|
|
127
|
+
Where it is strongest:
|
|
128
|
+
|
|
129
|
+
- **The analysis behind the shape**: buckling, fatigue and creep,
|
|
130
|
+
large-deflection compliant mechanisms, loads of unknown direction, thermal
|
|
131
|
+
loads and print warp, all checked on the delivered mesh.
|
|
132
|
+
- **Implicit modelling**: field graphs, graded and conformal lattices (TPMS,
|
|
133
|
+
strut, Voronoi), blends, and exact STEP of lattice parts.
|
|
134
|
+
- **Process awareness**: FDM, SLS, MJF, resin and powder-bed metal rules,
|
|
135
|
+
plus casting and milling constraints.
|
|
136
|
+
- **Heat exchangers**: lattice-Boltzmann flow and conjugate heat transfer
|
|
137
|
+
for gyroid cores and cold plates.
|
|
138
|
+
|
|
139
|
+
Not yet: draft-angle and machining-time checks for cast and milled parts,
|
|
140
|
+
or a ranked spread of outcomes across materials and processes by cost.
|
|
141
|
+
There is no GUI on purpose; it's a library.
|
|
142
|
+
|
|
109
143
|
## What it does
|
|
110
144
|
|
|
111
145
|
- **Topology optimization** on a voxel grid (SIMP with a density filter,
|
|
@@ -122,23 +156,23 @@ licensed.
|
|
|
122
156
|
clean-outs), plus milling and casting constraints.
|
|
123
157
|
- **Field modelling**: a part as a graph of implicit fields, so skins,
|
|
124
158
|
lattices (TPMS and strut) and fillets can be graded by stress or by
|
|
125
|
-
distance ([docs/fields.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
159
|
+
distance ([docs/fields.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/fields.md)).
|
|
126
160
|
- **Other analyses**: large deflection and buckling, compliant mechanisms,
|
|
127
161
|
thermal loads, fatigue and creep estimates, lattice crush and impact,
|
|
128
162
|
vibration, lattice-Boltzmann flow and conjugate heat for heat exchangers
|
|
129
163
|
and cold plates, and layer-by-layer warp and residual stress
|
|
130
|
-
([docs/BUILDSIM.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
164
|
+
([docs/BUILDSIM.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/BUILDSIM.md)).
|
|
131
165
|
- **CAD in and out**: a STEP or STL part becomes a draft study with its
|
|
132
|
-
bores and bolt patterns found ([docs/IMPORT.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
166
|
+
bores and bolt patterns found ([docs/IMPORT.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/IMPORT.md)); results
|
|
133
167
|
export as STL, 3MF, and STEP with exact planes and cylinders at the
|
|
134
168
|
interfaces; a lattice part (strut cells, TPMS, graded, skinned or open)
|
|
135
|
-
goes to STEP lattice and all, as smooth patches on its true surface ([docs/fields.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
169
|
+
goes to STEP lattice and all, as smooth patches on its true surface ([docs/fields.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/fields.md#the-lattice-itself-in-the-step-lattice-exact)).
|
|
136
170
|
- **Mesh checks without a study** (`loadpath.checks`): wall thickness,
|
|
137
171
|
overhangs, trapped voids, fluid-network isolation, component fit.
|
|
138
172
|
|
|
139
173
|
## How much to trust it
|
|
140
174
|
|
|
141
|
-
Read [docs/VALIDATION.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
175
|
+
Read [docs/VALIDATION.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/VALIDATION.md) before relying on a number.
|
|
142
176
|
In short:
|
|
143
177
|
|
|
144
178
|
- **The solvers match analytic answers** in the test suite: beam
|
|
@@ -163,16 +197,16 @@ In short:
|
|
|
163
197
|
## Case studies
|
|
164
198
|
|
|
165
199
|
Each states the problem, the setup, the numbers against a named baseline,
|
|
166
|
-
and the limitations ([docs/case-studies/](https://github.com/connorwhite-online/loadpath/tree/v0.1.
|
|
200
|
+
and the limitations ([docs/case-studies/](https://github.com/connorwhite-online/loadpath/tree/v0.1.3/docs/case-studies/)).
|
|
167
201
|
|
|
168
202
|
| Case study | Result | Baseline |
|
|
169
203
|
| --- | --- | --- |
|
|
170
|
-
| [Eval suite](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
171
|
-
| [GRIP robot arm](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
172
|
-
| [Arm link cores](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
173
|
-
| [Liquid cold plate](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
174
|
-
| [TPU finger](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
175
|
-
| [Benchmarks](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
204
|
+
| [Eval suite](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/case-studies/evals.md) | 15 of 15 parts meet their requirements on a fresh analysis of the delivered mesh | Each part's own requirements |
|
|
205
|
+
| [GRIP robot arm](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/case-studies/grip.md) | A load sweep over the arm's URDF found 3 of 5 links below SF 1; the regrown set meets SF 2 and is 18% smaller | GRIP's committed parts, made by an earlier loadpath with hand-written loads |
|
|
206
|
+
| [Arm link cores](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/case-studies/arm-link-cores.md) | 42.2 g box section for FDM, 36.8 g hollow link for SLS, both at 0.5 mm and SF 3 | 54.9 g solid web; 54.2 g free-form topology optimization |
|
|
207
|
+
| [Liquid cold plate](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/case-studies/cold-plate.md) | A die-graded gyroid ties streamline channels; channels filled with a graded gyroid run 7% cooler | Streamline channels and pin fins, equal metal and pressure drop |
|
|
208
|
+
| [TPU finger](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/case-studies/tpu-finger.md) | up to 8 mm of tip curl for a 5 mm pull; a tendon finger grips 8x harder | A linear-model design (2.5 mm, then the solve fails); a plain bar of equal volume |
|
|
209
|
+
| [Benchmarks](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/case-studies/benchmarks.md) | 1-5% less stiff than top88/top3d at equal material, in 57-60 iterations instead of 130-410 | Ports of top88 and top3d |
|
|
176
210
|
|
|
177
211
|
## Command line and Python
|
|
178
212
|
|
|
@@ -191,7 +225,7 @@ numba), `gpu` (PyTorch for large grids on CUDA, Apple Silicon or CPU
|
|
|
191
225
|
threads).
|
|
192
226
|
|
|
193
227
|
Studies are validated against a published JSON Schema
|
|
194
|
-
([`schema/`](https://github.com/connorwhite-online/loadpath/tree/v0.1.
|
|
228
|
+
([`schema/`](https://github.com/connorwhite-online/loadpath/tree/v0.1.3/schema/)), and `loadpath check` returns every problem at once
|
|
195
229
|
with its JSON path, so an agent can fix a study in one round trip. Long
|
|
196
230
|
solves run as background jobs the agent polls. Each finished outcome has an
|
|
197
231
|
`attention` list of numbers to look at before trusting it, and renders a
|
|
@@ -211,51 +245,51 @@ print(best.report["mass"], best.report["safetyFactor"])
|
|
|
211
245
|
|
|
212
246
|
## Documentation
|
|
213
247
|
|
|
214
|
-
- [Quickstart](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
215
|
-
- [Tutorials](https://github.com/connorwhite-online/loadpath/tree/v0.1.
|
|
248
|
+
- [Quickstart](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/quickstart.md): install to a checked part.
|
|
249
|
+
- [Tutorials](https://github.com/connorwhite-online/loadpath/tree/v0.1.3/docs/tutorials/): eleven end-to-end workflows, each run by CI
|
|
216
250
|
(an FDM bracket to 3MF, an SLS lattice with drain holes, a metal heat
|
|
217
251
|
exchanger, an impact bumper, a STEP part round trip, LPBF distortion
|
|
218
252
|
compensation, and more).
|
|
219
|
-
- [Reference](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
253
|
+
- [Reference](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/loadpath/README.md): the method, every study field, the
|
|
220
254
|
report, the limits.
|
|
221
|
-
- [Validation](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
255
|
+
- [Validation](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/VALIDATION.md): what each model has been checked
|
|
222
256
|
against.
|
|
223
|
-
- [Case studies](https://github.com/connorwhite-online/loadpath/tree/v0.1.
|
|
224
|
-
- Topics: [fields](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
225
|
-
[build simulation](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
226
|
-
[CAD import](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
227
|
-
[multi-material](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
228
|
-
[mechanisms](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
257
|
+
- [Case studies](https://github.com/connorwhite-online/loadpath/tree/v0.1.3/docs/case-studies/) and [benchmarks](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/BENCHMARKS.md).
|
|
258
|
+
- Topics: [fields](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/fields.md), [materials](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/materials.md),
|
|
259
|
+
[build simulation](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/BUILDSIM.md), [calibration](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/CALIBRATION.md),
|
|
260
|
+
[CAD import](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/IMPORT.md), [slicer](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/slicer.md),
|
|
261
|
+
[multi-material](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/MULTIMATERIAL.md), [impact](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/IMPACT.md),
|
|
262
|
+
[mechanisms](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/MECHANISMS.md).
|
|
229
263
|
|
|
230
264
|
<!-- gallery:start -->
|
|
231
265
|
|
|
232
266
|
## Examples
|
|
233
267
|
|
|
234
|
-
The eval suite (15/15 passing): robot-arm links, brackets, a bell crank and a hook, each optimized and then checked by a fresh analysis of the delivered mesh. "Under envelope" compares with the design space filled solid, not with a conventionally designed part. These are simulated results; see [docs/VALIDATION.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
268
|
+
The eval suite (15/15 passing): robot-arm links, brackets, a bell crank and a hook, each optimized and then checked by a fresh analysis of the delivered mesh. "Under envelope" compares with the design space filled solid, not with a conventionally designed part. These are simulated results; see [docs/VALIDATION.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/VALIDATION.md). Blue arrows are loads, red is keep-out. Every view, stress map and number is in [docs/GALLERY.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/GALLERY.md).
|
|
235
269
|
|
|
236
270
|
<table>
|
|
237
271
|
<tr>
|
|
238
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
239
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
240
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
272
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/cases/arm-link.png" width="250"><br><b>arm-link</b><br><sub>55.3 g · 56% under envelope · SF 8.92 · pass</sub></td>
|
|
273
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/cases/arm-link-cast.png" width="250"><br><b>arm-link-cast</b><br><sub>67.8 g · 46% under envelope · SF 20.11 · pass</sub></td>
|
|
274
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/cases/arm-link-driven.png" width="250"><br><b>arm-link-driven</b><br><sub>48.4 g · 61% under envelope · SF 11.17 · pass</sub></td>
|
|
241
275
|
</tr>
|
|
242
276
|
<tr>
|
|
243
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
244
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
245
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
277
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/cases/bell-crank.png" width="250"><br><b>bell-crank</b><br><sub>23.4 g · 84% under envelope · SF 3.22 · pass</sub></td>
|
|
278
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/cases/grip-turret.png" width="250"><br><b>grip-turret</b><br><sub>140.4 g · 91% under envelope · SF 2.85 · pass</sub></td>
|
|
279
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/cases/grip-upper-arm.png" width="250"><br><b>grip-upper-arm</b><br><sub>207.7 g · 88% under envelope · SF 7.33 · pass</sub></td>
|
|
246
280
|
</tr>
|
|
247
281
|
<tr>
|
|
248
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
249
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
250
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
282
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/cases/grip-wrist-link-mjf.png" width="250"><br><b>grip-wrist-link-mjf</b><br><sub>40.2 g · 95% under envelope · SF 5.83 · pass</sub></td>
|
|
283
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/cases/grip-wrist-yoke.png" width="250"><br><b>grip-wrist-yoke</b><br><sub>17.3 g · 93% under envelope · SF 3.88 · pass</sub></td>
|
|
284
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/cases/mbb-beam.png" width="250"><br><b>mbb-beam</b><br><sub>13.8 g · 79% under envelope · SF 1.51 · pass</sub></td>
|
|
251
285
|
</tr>
|
|
252
286
|
<tr>
|
|
253
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
254
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
255
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
287
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/cases/motor-mount.png" width="250"><br><b>motor-mount</b><br><sub>27.6 g · 69% under envelope · SF 3.65 · pass</sub></td>
|
|
288
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/cases/printed-hook.png" width="250"><br><b>printed-hook</b><br><sub>24.2 g · 84% under envelope · SF 2.73 · pass</sub></td>
|
|
289
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/cases/wall-bracket.png" width="250"><br><b>wall-bracket</b><br><sub>26.9 g · 94% under envelope · SF 2.85 · pass</sub></td>
|
|
256
290
|
</tr>
|
|
257
291
|
<tr>
|
|
258
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
292
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/cases/wall-bracket-fasteners.png" width="250"><br><b>wall-bracket-fasteners</b><br><sub>26.5 g · 94% under envelope · SF 2.57 · pass</sub></td>
|
|
259
293
|
</tr>
|
|
260
294
|
</table>
|
|
261
295
|
|
|
@@ -263,23 +297,23 @@ Where the load goes: von Mises stress, blue (none) to red (the part's 98th perce
|
|
|
263
297
|
|
|
264
298
|
<table>
|
|
265
299
|
<tr>
|
|
266
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
267
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
268
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
300
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/stress/bell-crank.png" width="250"><br><sub>bell-crank</sub></td>
|
|
301
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/stress/grip-upper-arm.png" width="250"><br><sub>grip-upper-arm</sub></td>
|
|
302
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/stress/printed-hook.png" width="250"><br><sub>printed-hook</sub></td>
|
|
269
303
|
</tr>
|
|
270
304
|
</table>
|
|
271
305
|
|
|
272
306
|
Two-fluid heat exchangers: two isolated channel networks through one sheet gyroid, with headers that print without support.
|
|
273
307
|
|
|
274
|
-

|
|
275
309
|
|
|
276
310
|
Printed in metal, nothing inside can be supported: the channels end in peaked roofs instead of flat ceilings (red).
|
|
277
311
|
|
|
278
|
-

|
|
279
313
|
|
|
280
314
|
Made another way: the same arm link printed, cast (no undercuts along z), 3-axis milled from both sides with a 6 mm cutter, and with members capped at 6 mm. Each meets SF 3 and 0.5 mm.
|
|
281
315
|
|
|
282
|
-

|
|
283
317
|
|
|
284
318
|
<sub>Rendered 2026-11-03 from `6c97b57` by `python docs/gallery.py`.</sub>
|
|
285
319
|
|
|
@@ -9,12 +9,12 @@ safety factor, deflection, thinnest member, printability, pass or fail.
|
|
|
9
9
|
|
|
10
10
|
<table>
|
|
11
11
|
<tr>
|
|
12
|
-
<td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
13
|
-
<td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
12
|
+
<td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/cases/grip-wrist-link-mjf-part.png" height="420"></td>
|
|
13
|
+
<td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/stress/grip-wrist-link-mjf.png" height="420"></td>
|
|
14
14
|
</tr>
|
|
15
15
|
<tr>
|
|
16
|
-
<td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
17
|
-
<td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
16
|
+
<td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/cases/grip-wrist-yoke-part.png" width="380"></td>
|
|
17
|
+
<td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/stress/grip-wrist-yoke.png" width="380"></td>
|
|
18
18
|
</tr>
|
|
19
19
|
<tr>
|
|
20
20
|
<td align="center" colspan="2"><sub>Two robot-arm parts as loadpath delivered them (left) and their stress from a fresh
|
|
@@ -39,12 +39,46 @@ Then ask in plain words:
|
|
|
39
39
|
> printed on an FDM printer.
|
|
40
40
|
|
|
41
41
|
The agent writes the study, checks it, runs it in the background and reads
|
|
42
|
-
the report back. Its guide is [loadpath/SKILL.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
42
|
+
the report back. Its guide is [loadpath/SKILL.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/loadpath/SKILL.md) (the
|
|
43
43
|
`loadpath_guide` tool returns it); the tools and the loop are in
|
|
44
|
-
[docs/agents.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
44
|
+
[docs/agents.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/agents.md). The server runs locally and nothing
|
|
45
45
|
leaves the machine. Units are millimetres, newtons and megapascals. MIT
|
|
46
46
|
licensed.
|
|
47
47
|
|
|
48
|
+
## Where it fits
|
|
49
|
+
|
|
50
|
+
A designed part needs a shape, the loads it carries, and a way to make it.
|
|
51
|
+
The open tools each cover one of those:
|
|
52
|
+
|
|
53
|
+
- **Topology optimization codes** (top88, top3d, ToPy, FEniCS scripts) are
|
|
54
|
+
research solvers. They stop at a density field on a grid: no printable
|
|
55
|
+
part, and nothing checks the result.
|
|
56
|
+
- **Script CAD** (CadQuery, build123d, OpenSCAD) and AI CAD tools draw exact
|
|
57
|
+
geometry but don't know the loads.
|
|
58
|
+
- **Commercial generative design** (Fusion, nTop) does the whole job, but
|
|
59
|
+
it's built around a GUI, not an agent.
|
|
60
|
+
|
|
61
|
+
loadpath is the layer in between. Your CAD defines the interfaces; loadpath
|
|
62
|
+
takes those plus the loads, material and process, and returns a watertight
|
|
63
|
+
part checked by an analysis independent of the optimizer, with a JSON report
|
|
64
|
+
an agent can act on. Its STEP output goes back into CAD.
|
|
65
|
+
|
|
66
|
+
Where it is strongest:
|
|
67
|
+
|
|
68
|
+
- **The analysis behind the shape**: buckling, fatigue and creep,
|
|
69
|
+
large-deflection compliant mechanisms, loads of unknown direction, thermal
|
|
70
|
+
loads and print warp, all checked on the delivered mesh.
|
|
71
|
+
- **Implicit modelling**: field graphs, graded and conformal lattices (TPMS,
|
|
72
|
+
strut, Voronoi), blends, and exact STEP of lattice parts.
|
|
73
|
+
- **Process awareness**: FDM, SLS, MJF, resin and powder-bed metal rules,
|
|
74
|
+
plus casting and milling constraints.
|
|
75
|
+
- **Heat exchangers**: lattice-Boltzmann flow and conjugate heat transfer
|
|
76
|
+
for gyroid cores and cold plates.
|
|
77
|
+
|
|
78
|
+
Not yet: draft-angle and machining-time checks for cast and milled parts,
|
|
79
|
+
or a ranked spread of outcomes across materials and processes by cost.
|
|
80
|
+
There is no GUI on purpose; it's a library.
|
|
81
|
+
|
|
48
82
|
## What it does
|
|
49
83
|
|
|
50
84
|
- **Topology optimization** on a voxel grid (SIMP with a density filter,
|
|
@@ -61,23 +95,23 @@ licensed.
|
|
|
61
95
|
clean-outs), plus milling and casting constraints.
|
|
62
96
|
- **Field modelling**: a part as a graph of implicit fields, so skins,
|
|
63
97
|
lattices (TPMS and strut) and fillets can be graded by stress or by
|
|
64
|
-
distance ([docs/fields.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
98
|
+
distance ([docs/fields.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/fields.md)).
|
|
65
99
|
- **Other analyses**: large deflection and buckling, compliant mechanisms,
|
|
66
100
|
thermal loads, fatigue and creep estimates, lattice crush and impact,
|
|
67
101
|
vibration, lattice-Boltzmann flow and conjugate heat for heat exchangers
|
|
68
102
|
and cold plates, and layer-by-layer warp and residual stress
|
|
69
|
-
([docs/BUILDSIM.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
103
|
+
([docs/BUILDSIM.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/BUILDSIM.md)).
|
|
70
104
|
- **CAD in and out**: a STEP or STL part becomes a draft study with its
|
|
71
|
-
bores and bolt patterns found ([docs/IMPORT.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
105
|
+
bores and bolt patterns found ([docs/IMPORT.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/IMPORT.md)); results
|
|
72
106
|
export as STL, 3MF, and STEP with exact planes and cylinders at the
|
|
73
107
|
interfaces; a lattice part (strut cells, TPMS, graded, skinned or open)
|
|
74
|
-
goes to STEP lattice and all, as smooth patches on its true surface ([docs/fields.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
108
|
+
goes to STEP lattice and all, as smooth patches on its true surface ([docs/fields.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/fields.md#the-lattice-itself-in-the-step-lattice-exact)).
|
|
75
109
|
- **Mesh checks without a study** (`loadpath.checks`): wall thickness,
|
|
76
110
|
overhangs, trapped voids, fluid-network isolation, component fit.
|
|
77
111
|
|
|
78
112
|
## How much to trust it
|
|
79
113
|
|
|
80
|
-
Read [docs/VALIDATION.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
114
|
+
Read [docs/VALIDATION.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/VALIDATION.md) before relying on a number.
|
|
81
115
|
In short:
|
|
82
116
|
|
|
83
117
|
- **The solvers match analytic answers** in the test suite: beam
|
|
@@ -102,16 +136,16 @@ In short:
|
|
|
102
136
|
## Case studies
|
|
103
137
|
|
|
104
138
|
Each states the problem, the setup, the numbers against a named baseline,
|
|
105
|
-
and the limitations ([docs/case-studies/](https://github.com/connorwhite-online/loadpath/tree/v0.1.
|
|
139
|
+
and the limitations ([docs/case-studies/](https://github.com/connorwhite-online/loadpath/tree/v0.1.3/docs/case-studies/)).
|
|
106
140
|
|
|
107
141
|
| Case study | Result | Baseline |
|
|
108
142
|
| --- | --- | --- |
|
|
109
|
-
| [Eval suite](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
110
|
-
| [GRIP robot arm](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
111
|
-
| [Arm link cores](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
112
|
-
| [Liquid cold plate](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
113
|
-
| [TPU finger](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
114
|
-
| [Benchmarks](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
143
|
+
| [Eval suite](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/case-studies/evals.md) | 15 of 15 parts meet their requirements on a fresh analysis of the delivered mesh | Each part's own requirements |
|
|
144
|
+
| [GRIP robot arm](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/case-studies/grip.md) | A load sweep over the arm's URDF found 3 of 5 links below SF 1; the regrown set meets SF 2 and is 18% smaller | GRIP's committed parts, made by an earlier loadpath with hand-written loads |
|
|
145
|
+
| [Arm link cores](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/case-studies/arm-link-cores.md) | 42.2 g box section for FDM, 36.8 g hollow link for SLS, both at 0.5 mm and SF 3 | 54.9 g solid web; 54.2 g free-form topology optimization |
|
|
146
|
+
| [Liquid cold plate](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/case-studies/cold-plate.md) | A die-graded gyroid ties streamline channels; channels filled with a graded gyroid run 7% cooler | Streamline channels and pin fins, equal metal and pressure drop |
|
|
147
|
+
| [TPU finger](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/case-studies/tpu-finger.md) | up to 8 mm of tip curl for a 5 mm pull; a tendon finger grips 8x harder | A linear-model design (2.5 mm, then the solve fails); a plain bar of equal volume |
|
|
148
|
+
| [Benchmarks](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/case-studies/benchmarks.md) | 1-5% less stiff than top88/top3d at equal material, in 57-60 iterations instead of 130-410 | Ports of top88 and top3d |
|
|
115
149
|
|
|
116
150
|
## Command line and Python
|
|
117
151
|
|
|
@@ -130,7 +164,7 @@ numba), `gpu` (PyTorch for large grids on CUDA, Apple Silicon or CPU
|
|
|
130
164
|
threads).
|
|
131
165
|
|
|
132
166
|
Studies are validated against a published JSON Schema
|
|
133
|
-
([`schema/`](https://github.com/connorwhite-online/loadpath/tree/v0.1.
|
|
167
|
+
([`schema/`](https://github.com/connorwhite-online/loadpath/tree/v0.1.3/schema/)), and `loadpath check` returns every problem at once
|
|
134
168
|
with its JSON path, so an agent can fix a study in one round trip. Long
|
|
135
169
|
solves run as background jobs the agent polls. Each finished outcome has an
|
|
136
170
|
`attention` list of numbers to look at before trusting it, and renders a
|
|
@@ -150,51 +184,51 @@ print(best.report["mass"], best.report["safetyFactor"])
|
|
|
150
184
|
|
|
151
185
|
## Documentation
|
|
152
186
|
|
|
153
|
-
- [Quickstart](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
154
|
-
- [Tutorials](https://github.com/connorwhite-online/loadpath/tree/v0.1.
|
|
187
|
+
- [Quickstart](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/quickstart.md): install to a checked part.
|
|
188
|
+
- [Tutorials](https://github.com/connorwhite-online/loadpath/tree/v0.1.3/docs/tutorials/): eleven end-to-end workflows, each run by CI
|
|
155
189
|
(an FDM bracket to 3MF, an SLS lattice with drain holes, a metal heat
|
|
156
190
|
exchanger, an impact bumper, a STEP part round trip, LPBF distortion
|
|
157
191
|
compensation, and more).
|
|
158
|
-
- [Reference](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
192
|
+
- [Reference](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/loadpath/README.md): the method, every study field, the
|
|
159
193
|
report, the limits.
|
|
160
|
-
- [Validation](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
194
|
+
- [Validation](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/VALIDATION.md): what each model has been checked
|
|
161
195
|
against.
|
|
162
|
-
- [Case studies](https://github.com/connorwhite-online/loadpath/tree/v0.1.
|
|
163
|
-
- Topics: [fields](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
164
|
-
[build simulation](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
165
|
-
[CAD import](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
166
|
-
[multi-material](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
167
|
-
[mechanisms](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
196
|
+
- [Case studies](https://github.com/connorwhite-online/loadpath/tree/v0.1.3/docs/case-studies/) and [benchmarks](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/BENCHMARKS.md).
|
|
197
|
+
- Topics: [fields](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/fields.md), [materials](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/materials.md),
|
|
198
|
+
[build simulation](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/BUILDSIM.md), [calibration](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/CALIBRATION.md),
|
|
199
|
+
[CAD import](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/IMPORT.md), [slicer](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/slicer.md),
|
|
200
|
+
[multi-material](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/MULTIMATERIAL.md), [impact](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/IMPACT.md),
|
|
201
|
+
[mechanisms](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/MECHANISMS.md).
|
|
168
202
|
|
|
169
203
|
<!-- gallery:start -->
|
|
170
204
|
|
|
171
205
|
## Examples
|
|
172
206
|
|
|
173
|
-
The eval suite (15/15 passing): robot-arm links, brackets, a bell crank and a hook, each optimized and then checked by a fresh analysis of the delivered mesh. "Under envelope" compares with the design space filled solid, not with a conventionally designed part. These are simulated results; see [docs/VALIDATION.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
207
|
+
The eval suite (15/15 passing): robot-arm links, brackets, a bell crank and a hook, each optimized and then checked by a fresh analysis of the delivered mesh. "Under envelope" compares with the design space filled solid, not with a conventionally designed part. These are simulated results; see [docs/VALIDATION.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/VALIDATION.md). Blue arrows are loads, red is keep-out. Every view, stress map and number is in [docs/GALLERY.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/GALLERY.md).
|
|
174
208
|
|
|
175
209
|
<table>
|
|
176
210
|
<tr>
|
|
177
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
178
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
179
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
211
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/cases/arm-link.png" width="250"><br><b>arm-link</b><br><sub>55.3 g · 56% under envelope · SF 8.92 · pass</sub></td>
|
|
212
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/cases/arm-link-cast.png" width="250"><br><b>arm-link-cast</b><br><sub>67.8 g · 46% under envelope · SF 20.11 · pass</sub></td>
|
|
213
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/cases/arm-link-driven.png" width="250"><br><b>arm-link-driven</b><br><sub>48.4 g · 61% under envelope · SF 11.17 · pass</sub></td>
|
|
180
214
|
</tr>
|
|
181
215
|
<tr>
|
|
182
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
183
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
184
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
216
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/cases/bell-crank.png" width="250"><br><b>bell-crank</b><br><sub>23.4 g · 84% under envelope · SF 3.22 · pass</sub></td>
|
|
217
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/cases/grip-turret.png" width="250"><br><b>grip-turret</b><br><sub>140.4 g · 91% under envelope · SF 2.85 · pass</sub></td>
|
|
218
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/cases/grip-upper-arm.png" width="250"><br><b>grip-upper-arm</b><br><sub>207.7 g · 88% under envelope · SF 7.33 · pass</sub></td>
|
|
185
219
|
</tr>
|
|
186
220
|
<tr>
|
|
187
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
188
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
189
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
221
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/cases/grip-wrist-link-mjf.png" width="250"><br><b>grip-wrist-link-mjf</b><br><sub>40.2 g · 95% under envelope · SF 5.83 · pass</sub></td>
|
|
222
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/cases/grip-wrist-yoke.png" width="250"><br><b>grip-wrist-yoke</b><br><sub>17.3 g · 93% under envelope · SF 3.88 · pass</sub></td>
|
|
223
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/cases/mbb-beam.png" width="250"><br><b>mbb-beam</b><br><sub>13.8 g · 79% under envelope · SF 1.51 · pass</sub></td>
|
|
190
224
|
</tr>
|
|
191
225
|
<tr>
|
|
192
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
193
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
194
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
226
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/cases/motor-mount.png" width="250"><br><b>motor-mount</b><br><sub>27.6 g · 69% under envelope · SF 3.65 · pass</sub></td>
|
|
227
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/cases/printed-hook.png" width="250"><br><b>printed-hook</b><br><sub>24.2 g · 84% under envelope · SF 2.73 · pass</sub></td>
|
|
228
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/cases/wall-bracket.png" width="250"><br><b>wall-bracket</b><br><sub>26.9 g · 94% under envelope · SF 2.85 · pass</sub></td>
|
|
195
229
|
</tr>
|
|
196
230
|
<tr>
|
|
197
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
231
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/cases/wall-bracket-fasteners.png" width="250"><br><b>wall-bracket-fasteners</b><br><sub>26.5 g · 94% under envelope · SF 2.57 · pass</sub></td>
|
|
198
232
|
</tr>
|
|
199
233
|
</table>
|
|
200
234
|
|
|
@@ -202,23 +236,23 @@ Where the load goes: von Mises stress, blue (none) to red (the part's 98th perce
|
|
|
202
236
|
|
|
203
237
|
<table>
|
|
204
238
|
<tr>
|
|
205
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
206
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
207
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
239
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/stress/bell-crank.png" width="250"><br><sub>bell-crank</sub></td>
|
|
240
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/stress/grip-upper-arm.png" width="250"><br><sub>grip-upper-arm</sub></td>
|
|
241
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/stress/printed-hook.png" width="250"><br><sub>printed-hook</sub></td>
|
|
208
242
|
</tr>
|
|
209
243
|
</table>
|
|
210
244
|
|
|
211
245
|
Two-fluid heat exchangers: two isolated channel networks through one sheet gyroid, with headers that print without support.
|
|
212
246
|
|
|
213
|
-

|
|
214
248
|
|
|
215
249
|
Printed in metal, nothing inside can be supported: the channels end in peaked roofs instead of flat ceilings (red).
|
|
216
250
|
|
|
217
|
-

|
|
218
252
|
|
|
219
253
|
Made another way: the same arm link printed, cast (no undercuts along z), 3-axis milled from both sides with a 6 mm cutter, and with members capped at 6 mm. Each meets SF 3 and 0.5 mm.
|
|
220
254
|
|
|
221
|
-

|
|
222
256
|
|
|
223
257
|
<sub>Rendered 2026-11-03 from `6c97b57` by `python docs/gallery.py`.</sub>
|
|
224
258
|
|
|
@@ -16,6 +16,18 @@ it, use the CLI below. Start from the nearest example (`loadpath_examples` /
|
|
|
16
16
|
`loadpath examples`) rather than a blank page; `loadpath_schema` gives every
|
|
17
17
|
field. `check` reports every problem at once: fix them all, then check again.
|
|
18
18
|
|
|
19
|
+
## When to use it
|
|
20
|
+
|
|
21
|
+
Use loadpath when the shape should come from the loads: brackets, links,
|
|
22
|
+
mounts and housings around fixed interfaces, lattice-filled or graded parts,
|
|
23
|
+
compliant mechanisms, heat exchangers and cold plates. Draw parts whose shape
|
|
24
|
+
is set by function rather than load (enclosures, cosmetic covers, gears,
|
|
25
|
+
threads) in CAD instead. loadpath doesn't replace CAD: model the interfaces
|
|
26
|
+
there, let loadpath grow the material between them, and bring the result
|
|
27
|
+
back as STEP or STL. Its edge over drawing the part yourself is that every
|
|
28
|
+
result comes with an independent check (safety factor, deflection,
|
|
29
|
+
buckling, printability) you can report to the user.
|
|
30
|
+
|
|
19
31
|
## Workflow
|
|
20
32
|
|
|
21
33
|
1. **Model the interfaces exactly** (in build123d, CadQuery, or by hand):
|