Create Templates
This project already supports many cutting templates but if you’d like to add your own, here’s how.
Before a cutting template can be used, the card size must exist in assets/layouts.json. This is the source of truth for all card and paper sizes — create_pdf.py reads it to place registration marks and lay out the card grid, so a template without a matching entry won’t work.
Update layouts.json
A layout entry looks like this:
{
"card_sizes": {
"domino": {
"width": "1.75in",
"height": "3.5in",
}
},
"paper_sizes": {
"letter": {
"width": "11in",
"height": "8.5in"
}
},
"layouts": {
...
}
}You may edit the JSON manually or let generate_dxf.py edit it for you by using the --save flag.
For example, to create a new card size, use the --card_width, --card_length, --card_name, and --save options. Use --card_radius to set the corner radius (defaults to 3mm).
python generate_dxf.py --card_width 1.75in --card_length 3.5in --card_name domino --paper_size letter --saveTo create a new paper size, use the --paper_width, --paper_length, --paper_name, and --save options.
python generate_dxf.py --card_size standard --paper_width 11in --paper_length 8.5in --paper_name letter --saveBoth metric (mm) and imperial (in) units are accepted. This generates the DXF and saves the new card size, paper size, and layout entry to layouts.json automatically.
Generate DXF files
Once the size is in layouts.json, generate DXFs for all new paper and card combinations:
python generate_dxf.py --newOr regenerate everything:
python generate_dxf.py --allDXF files are written to cutting_templates/dxf/.
Create template
There are two ways of creating cutting templates, either manually or autogenerating them. Autogenerating them requires calibrating GUI automation, which a bit more involved than manually creating templates.
Manual template
To convert a DXF to a .studio3 file by hand, follow these steps in Silhouette Studio.
Step 1: Set DXF import preference
Open Edit > Preferences (Ctrl+K). Click the Import tab. Find the DXF Open dropdown and set it to As-is. Click OK.
This ensures DXF dimensions are preserved exactly as drawn when the file is imported.
Step 2: Open the DXF file
Press Ctrl+O. Navigate to and open your DXF file from cutting_templates/dxf/.
Step 3: Page setup
Click the Page Setup icon in the left sidebar.
- Set the cutting mat dropdown:
- Paper ≤ 12×12 in → 12" × 12"
- Paper > 12×12 in → 12" × 24"
- Set the media size dropdown to match the cutting mat.
- Set the orientation (portrait or landscape) to match your layout.
- Enter the exact media width and height in inches for your paper size.
Step 4: Center to page
Press Ctrl+A to select all, then Ctrl+G to group. Click the Transform icon in the left sidebar, then click Center to Page.
Step 5: Set registration marks
Click the Print & Cut icon in the left sidebar. Enable the registration marks checkbox. Set length, thickness, and inset to the minimum (set all to 0 to use Silhouette Studio’s minimum allowed values).
Step 6: Ungroup
Press Ctrl+A to select all, then Ctrl+Shift+G to ungroup.
Step 7: Release compound path
Press Ctrl+A to select all, then Ctrl+Shift+E to release the compound path. This makes each card path individually selectable in the saved file.
Step 8: Save as .studio3
Press Ctrl+Shift+S. Save the file to cutting_templates/ with a .studio3 extension.
Autogenerated templates
dxf_to_studio3.py automates the steps above using GUI automation. It requires a one-time calibration to record the screen positions of UI elements.
Calibrate
A pre-built calibration file is included at assets/gui_coordinates.json, tested on Silhouette Studio 5.0.402ss on Windows with a display scale of 100% and a display resolution of at least 1920×1080. If your setup matches, you can skip to the Convert new templates step below.
If it doesn’t work, perform the calibration step:
python dxf_to_studio3.py calibrateSilhouette Studio will open and you’ll be guided through hovering over each UI element and pressing Enter to record its position. Calibration is saved to assets/gui_coordinates.json.
Convert new templates
python dxf_to_studio3.py batch --unit mm --new--unit must match the unit setting in Silhouette Studio’s preferences (mm or in). --new skips any .studio3 files that already exist. Use --dry_run to preview what would be converted without launching Studio.
.studio3 files are written to cutting_templates/.
Pull Request
Make a pull request to share your cutting template with the rest of the world!