A parametric QR code generator for Autodesk Fusion 360. Encode any text or URL into QR geometry and place it as a sketch, a raised solid, an engraving cut into a face, or an embossed join onto an existing body, ready for 3D printing, CNC, laser, or molding.
- Encodes a string/URL into a QR symbol using
segno(correct Reed-Solomon error correction and data masking per the standard). - Draws the dark modules on a sketch (merged into horizontal runs for speed).
- Builds geometry as a sketch, a raised body, an engraved pocket, or an emboss, on the plane or face you choose, in the component you're working in.
Download the latest QR-Code Generator.zip from the
Releases page and unzip it: you'll get a
QR-Code Generator folder (containing QR-Code Generator.py,
QR-Code Generator.manifest, LICENSE, this README.md, and the lib/ and
resources/ subfolders), already named exactly as Fusion requires. Then install it
with either method below.
If you don't know (or don't want to know) where Fusion keeps its add-ins, let Fusion copy the folder in for you:
- In Fusion: Utilities tab → ADD-INS panel → Scripts and Add-Ins
(or press
Shift+S). - Click the + dropdown at the top-left of the dialog → Script or add-in from device.
- Browse to and select the
QR-Code Generatorfolder (the one that contains the.manifestfile) and confirm. Fusion copies it into the correct add-ins directory automatically. - It now shows up in the Add-Ins tab of the list, select QR Code Generator and click Run (tick Run on Startup if you want it to load every time).
-
Copy the entire
QR-Code Generator/folder (includinglib/andresources/) into your Fusion add-ins directory:- macOS:
~/Library/Application Support/Autodesk/Autodesk Fusion 360/API/AddIns/ - Windows:
%APPDATA%\Autodesk\Autodesk Fusion 360\API\AddIns\
The folder, the
.py, and the.manifestmust all share the base nameQR-Code Generator. - macOS:
-
In Fusion: Utilities tab → ADD-INS → Scripts and Add-Ins (
Shift+S) → Add-Ins tab → select QR Code Generator → Run.
Either way, a QR CODE panel (with its QR-code icon) appears at the end of
the SOLID tab's toolbar, next to 3D PRINT. No pip install is required;
segno is bundled in lib/segno/.
| Input | Meaning | Default |
|---|---|---|
| Content (text / URL) | The data to encode. | https://www.autodesk.com |
| Error correction | L ~7%, M ~15%, Q ~25%, H ~30% recoverable. Higher = denser. |
M |
| Quiet-zone border | Empty margin around the symbol, in modules (standard recommends ≥ 4). | 4 |
| Size by | Overall width (total size of the whole code), Fit to selected face, or Module size (advanced). |
Overall width |
| Overall width | Total width of the whole code including the quiet-zone border (mm). | 30 mm |
| Fit margin (%) | When fitting to a face, shrink by this much so the code clears the edge. | 10 |
| Module size | (advanced) Edge length of one little square (mm). | 1.0 mm |
| Size info | Live read-out of QR version, module count, overall width, and module size. | n/a |
| Operation | One of the four below. | Raised |
| Raised result | When raised: Keep as new body or Merge into target body. |
Keep as new body |
| Depth | Engrave/inlay depth or raised height (mm). | 1.0 mm |
| Flip direction | Reverse the in/out direction if it goes the wrong way. | off |
| Target plane | A construction plane, or a planar face (a face is required for Inlay/Engrave/Fit). | XY |
| Center on selected face | Place the code at the center of the selected face. | on |
| Offset X / Offset Y | Nudge the code from that center (mm). | 0 |
Press Generate.
Module size is the edge of one little square, a detail almost nobody needs, so it is not the default. What you usually want is Overall width: the total size of the whole code.
- Overall width (default): type the total size you want; module size follows.
- Fit to selected face: the code is sized to the face you selected (its smaller in-plane dimension, minus the Fit margin %). Pick the face, and the code matches it.
- Module size (advanced): for the rare case you need an exact per-square size.
The Size info box shows all of it live as you type, so you never have to guess.
About "follow the host when it resizes": Fit to selected face sizes the code to the face at generation time. Re-run the command after you resize the host and it re-fits. Truly live association (the code auto-resizing whenever the body changes, with no re-run) would require a custom parametric feature; it is not implemented yet. Tell me if you want that and I'll scope it.
- Sketch only: draws the code as a fully-constrained sketch (every line grounded) on the chosen plane/face. You do the rest.
- Inlay: cut pockets + fill bodies (flush): cuts the code into the target body and
leaves matching filler bodies sitting flush in the pockets. Ideal for two-colour prints
/ inlays: print the host in one colour and the
QR Codebody in another. - Engrave: cut into surface (empty): cuts the code into the target body, leaving empty pockets.
- Raised: stand proud of surface: extrudes the code above the surface. Choose
Raised result:
Merge into target body(embossed into the part) orKeep as new body(a separateQR Codebody).
Inlay, Engrave, and Raised→Merge all act on the body of the planar face you select in Target plane. If the in/out direction is wrong for your face, tick Flip direction.
Geometry is created in the component that owns your selected face/plane, or, if nothing is selected, in the active component you're editing. It no longer dumps into the root.
These are two ways of expressing the same thing, linked by the number of modules:
overall width = (symbol modules + 2 × border) × module size
- Module size = the edge length of one little square of the code.
- Overall width = the total width of the whole code (all modules + the quiet-zone border).
Pick whichever is convenient under Size by (see Sizing). The dialog shows a live readout of both so you always see how they relate.
- All UI dimensions are entered in millimetres and converted to Fusion's internal centimetres automatically.
- The chosen error-correction level is honoured exactly (segno's auto-boost is disabled), and only standard (not Micro) QR codes are produced, for predictable, scannable output.
- Face-centering uses the face's bounding-box center (exact for symmetric faces such as circles/rectangles; approximate for irregular faces, use the offsets to fine-tune).
- The add-in re-runs cleanly within one session.
- Very dense codes (long content + high EC) still create many entities and take longer.
- Centering on a tilted/angled face relies on the sketch↔model transform; it is exact on the XY plane and on faces parallel to it. Use the offsets if a tilted face needs nudging.
The geometry is built directly from the QR grid, not by extruding detected sketch
profiles. For every solid operation, each dark module (merged into horizontal runs) is
created as a box with Fusion's TemporaryBRepManager, the boxes are unioned, and the
result is added/cut/joined. Because nothing relies on Fusion's profile detection, the
two classic failure modes are structurally impossible: the light "moats" inside finder
patterns are never filled, and no real module is ever dropped. (Sketch only still
produces a clean sketch: one rectangle per dark run.)
This is a cleanroom implementation built only from the public QR code standard
(ISO/IEC 18004) and the Fusion 360 API. It does not reimplement the QR encoding
math itself: that job is delegated to the vendored, pure-Python
segno library (BSD-3-Clause, © Lars Heuer), which
runs unmodified inside Fusion's embedded Python because it has no compiled extensions.
- This add-in's own code (
QR-Code Generator.py,QR-Code Generator.manifest, this README) is licensed under the GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later). The full text is inLICENSE. segno(inlib/segno/) is licensed under the BSD-3-Clause license, © 2016–2024 Lars Heuer. Its license text is retained atlib/segno/LICENSE.txtand is compatible with the AGPL.
"QR Code" is a registered trademark of DENSO WAVE INCORPORATED.
