STEP assembly checks · Burr 0.40.5
Check a STEP assembly for interference without SolidWorks
You have an assembly.step file and need to know whether its parts overlap. You can check the export with Burr on macOS or Linux, without opening the original CAD application or uploading the model.
Export the assembly in its assembled position
Export all components together as STEP or STP. Separate files do not describe their relative placement unless you assemble them first. Keep component occurrences and source labels where your exporter supports them. A single fused solid cannot provide the same pair-by-pair assembly check.
Check, then inspect the named pair
Run burr check --json assembly.step and keep the report. Open the model folder with burr . for a visual review in the Checks tab. A reported overlap may be an accidental clash, a modelled thread, or an intentional press fit; the result needs engineering review. Face contact alone is allowed.
What this check establishes
Burr reports positive interior interference, contact, and unresolved geometry separately. It does not measure exact overlap volume, certify manufacturing clearance, or prove that a mechanism stays clear throughout motion. A static assembly check describes the exported pose.
Install the release used here
Run this on macOS (Apple Silicon or Intel) or Linux x64. The installer downloads a prebuilt release and verifies its checksum. Linux ARM64 is not available in this release; x64 requires AVX and FMA. Checks run locally and need no Burr account.
curl -fsSL https://burr.sh/install.sh | BURR_VERSION=0.40.5 sh
export PATH="$HOME/.local/bin:$PATH"
burr --versionRead the installer before running it.
Reproduce two real open-hardware checks
These unmodified STEP files come from the Voron-0 Manta M4P DIN mount (GPL-3.0) and the openAMR cover assembly (CERN-OHL-P-2.0). The URLs pin their source revisions. We ran the released Burr 0.40.5 Linux x64 binary on October 21, 2026.
mkdir -p models
curl -fL 'https://raw.githubusercontent.com/VoronDesign/Voron-0/a53fc87562fd630c846af38d7de850c894dc3d85/CAD/Electronics%20Mounts/Manta_M4P_Din_Mount_2pc.step' -o models/manta-mount.step
burr check --json models/manta-mount.step > manta-mount.json
# Exit 0
curl -fL 'https://raw.githubusercontent.com/openAMRobot/openamr-platform-hw/9703a5f13ffc009db8ff3fa979470179afe3d26b/mechanical/cad/production_files/MMP.01.00.00.000%20Cover%20assembly.STEP' -o models/openamr-cover.step
burr check --json models/openamr-cover.step > openamr-cover.json
# Exit 1: interference AND unresolved pairs; inspect the reportThe second command intentionally returns a failure. Run it separately if your shell stops on nonzero exits.
// Selected fields from the real Burr 0.40.5 reports:
// Voron Manta mount (exit 0)
"outcome": "pass",
"summary": "No assembly interference detected across 1 pairs",
"component_count": 2,
"pair_set_complete": true
// openAMR cover (exit 1)
"outcome": "fail",
"summary": "16 interfering component pairs detected; 25 component pairs unresolved",
"component_count": 53,
"pair_set_complete": falseThe mount has two components and one complete checked pair. The cover has 53 components, with 16 reported interfering pairs and 25 pairs Burr could not check completely. Some possible overlaps fall below coordinate/placement or tessellation resolution. That is not a clean assembly result. Reported overlap also does not establish a design defect: intentional fastener engagement needs review.
Full unedited reports: Manta mount JSON and openAMR cover JSON. Some source part labels in the cover appear with encoding artifacts; the report preserves them.
Model attribution and licenses: VoronDesign/Voron-0, openAMRobot/openamr-platform-hw. These checks do not imply endorsement by either project.
Repeat the check in GitHub Actions
Save this as .github/workflows/step-check.yml in a repository containing models/**/*.step. This workflow uses the same checker version. The action fails on interference and on unresolved checks by default; it uploads the report even after a failure.
name: STEP interference
on: [pull_request]
permissions:
contents: read
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: fraylabs/burr-action@v1
id: burr
with:
version: '0.40.5'
files: 'models/**/*.step'
comment: 'false'
- uses: actions/upload-artifact@v4
if: always() && steps.burr.outputs.report-path != ''
with:
name: burr-report
path: ${{ steps.burr.outputs.report-path }}For this exact example, download the two models above into models/ and commit them. The workflow will fail on the cover, for the reasons shown. Action options and accepted-fit policy explain how to review intended fits without hiding incomplete checks.