Effortlessly generate QR codes directly in OpenSCAD! No extra dependencies!
This code...
include <qr.scad> // omit this if you pasted the library's source code at the end of the file
color("black") qr("https://github.com/xypwn/scadqr", center=true);
...gives us this model
Click to expand
You can specify custom models for each module ("pixel"), position pattern and alignment pattern.
To do this, you can use the qr_custom()
function.
See the API docs for all the details.
The following shows an example using round components.
include <qr.scad> // omit this if you pasted the library's source code at the end of the file
color("black") qr_custom("https://github.com/xypwn/scadqr") {
// Module
translate([0.5, 0.5])
scale([0.8, 0.8])
circle(d=1, $fn=16);
// Position pattern
translate([3.5, 3.5]) union() {
difference() {
circle(d=7, $fn=32);
circle(d=5.2, $fn=32);
}
circle(d=3, $fn=24);
}
// Alignment pattern
translate([2.5, 2.5]) union() {
difference() {
circle(d=4.3, $fn=32);
circle(d=3, $fn=32);
}
circle(d=1, $fn=16);
}
}
Click to expand
You can generate special "messages" using the qr_wifi
, qr_phone_call
, qr_vcard
etc. functions. The resulting message can be passed into the qr
or qr_custom
module as seen in the example below.
For more details, see API.md.
include <qr.scad> // omit this if you pasted the library's source code at the end of the file
color("black") qr(qr_wifi("MyNetworkName", "supersecretpassword1337"), center=true);
Open qr.scad and click the "copy raw file" button... ...then paste the copied source code at the end of your project file.
Do NOT add the include <qr.scad>
line if you are using this method!
This method is the only one that works with Thingiverse's Customizer.
If you're working with multiple source code files, I recommend using one of the other methods.
download the library file directly into your project folder and add an include <qr.scad>
to the beginning of your file
Follow these instructions.
You will also have to add an include <qr.scad>
to the beginning of your file
qr.scad (Right-Click -> Save target as)
This library fully supports Thingiverse's Customizer, but you will need to directly append the library code to your SCAD file, as Customizer only supports a single file.
I also noticed Customizer has some weird quirks regarding which SCAD code it will accept and which not. Here are some things you will need to pay attention to:
- NEVER use non-ASCII characters, or it will just say "We're sorry, but something went wrong."
- avoid functional asserts (e.g.:
function f(x) = assert(x > 0) x;
) - some functions like
ord()
aren't available
All scripts ending with .py
require a recent version of Python.
You will also need to run them from inside the cloned repo's directory.
The source code is located in src/
and run through the generate.py
script in order to generate the all-in-one library files intented to be used.
The generator script mainly does two things:
- Prefix private functions/modules with
_qr_
to prevent naming collisions - Generate documentation for public functions/modules and output it to
API.md
Run generator (Linux/MacOS): ./generate.py
Run generator (Windows): py generate.py
To confirm that QR codes are generating correctly, you can run the automatic tests after having run generate.py
.
Install OpenSCAD and ZBar
- Debian-based (e.g. Ubuntu, PopOS etc.):
sudo apt-get update && sudo apt-get -y install openscad zbar-tools
- Arch-based (e.g. Manjaro):
sudo pacman -Sy openscad zbar --noconfirm
- Windows: Download and run the respective installers for OpenSCAD and ZBar
Run tests (Linux/MacOS): ./run_tests.py
Run tests (Windows): py run_tests.py
If it can't find your OpenSCAD or ZBar executable, you can use the -s
and -z
options respectively to specify a custom path.
Copyright (c) 2024 Darwin Schuppan and contributors. All rights reserved.
This work is licensed under the terms of the MIT license.
For a copy, see https://opensource.org/licenses/MIT.