Skip to content
BetakontextPublic

About

Cut and connect in Blender. Split and build various connections for 3D Prints.

Topics

Resources

Stars

29 stars

Watchers

0 watching

Forks

Latest commit

 

History

249 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

SnapSplit

Addon for Blender to automate cut and connection building workflows for complex 3D models, which are f.e. larger than your printing bed, to create printable parts. It has easy workflow options to create hollow forms and generates precise, glue-free snap-fit connectors. Its goal is to integrate into a 3D printing workflow using robust booleans, material sensible adaptive tolerance models, and various options for splits and connections.

For now I tested it with Blender 4.5.3 LTS, 4.5.9 LTS, 5.0.1, 5.1.0, 5.1.1, 5.2.0, 5.2.2 LTS which work fine. Please let me know if you test on other Blender versions to update version compatabilities.

SnapSplit Slideshow

Why SnapSplit?

SnapSplit combines two work steps into one: cleanly segmenting large models and automatically creating matching snap/plug pins or tenons, dovetail or custom connections. Placement along an adjustable line or grid and/or freehand per click onto the spot on the split surface. That saves hours of manual modeling and reduces trial‑and‑error printing thanks to preset tolerances and the new Live‑Preview. Ideal for artists (casting molds, modular sculptures), prop designers, product prototypers, and makers who need large models to be printable and transportable.

Thanks for your feedback. I tried to build in as much as possible. I'm always happy to hear your further needs for next versions and hints for better building experiences.

Installation:

  • Download the repository and zip the snapsplit folder
  • In Blender: Edit → Preferences → Add-ons → Install… → select the *.ZIP → enable.

Blender setup:

  • Unit system: Metric, Unit scale: 1.000, Length: Adaptive
  • The UI is accessible over the N-Panel in Blender.

Quality assurance and error prevention:

  • Scale Unit = 1.000, Metric: Adaptive
  • Before splitting: use f.e. 3D-Printing Toolbox (manifold, thin walls, intersections).
  • Select a watertight (manifold) mesh.
  • Ctrl + A -> Apply all transforms
  • This is also important after each change, f.e. rotations or scale.
  • After splitting: visually check that all parts contain polygons.

Cut / Split workflow:

Unfold the segmentation part (More...) to get ready for the split.

SnapSplit UI SnapSplit UI

-> Click "Show split preview" if you want to see the split preview plane permanently. Offset 0 is the middle of the selected part.

F.e. Segmentation

-> Choose desired number of parts and adjust the split axis offset. -> Push: "Adjust split axis"

-> For larger part numbers you can deselect "cap seams" and create the caps afterwards. -> Cap seams closes walls, if hollow or solidify is detected. If none it closes the whole cut area. You can also use it per part afterwards if "Cap seams" is deselected

-> Run "Planar Split"

F.e. Cap seams if hollow


Build Connections:

SnapSplit UI SnapSplit UI

Unfold the connections section foldout (More...) to choose, adjust and place in LINE/GRID mode with Live Preview selected:

F.e. place connections per "click"

(-> in this case Blender's "Suzanne" used as a Custom Connector :) -> use any mesh as reference.

... and/or place your connectors per click:

F.e. place connections per "click"

-> Select two or more adjacent parts (order does not matter).

-> Choose pins, tenons, dovetails or custom connectors distributed along a seam line or spread across a grid, with or without Snap-Pins/Snap-Tenons/Snap-Dovetails for glueless connection, or use your own custom mesh as a connector shape.

-> Define your tolerance profile (under Connections UI) for your material.

F.e. place connections per "click"

-> Click “Add connectors”: The pin/tenon is unioned into Part B, and a socket with tolerance is cut into Part A. or -> Choose "Place connectors (click)" to set individualized connectors with your mouse clicking at spots along the seems:

F.e. place connections per "click"

Dovetails with Snap spheres, Auto span and edge sensitive hard-side cut:

F.e. place connections per "click"

Custom Connector:

Instead of the built-in pin/tenon/dovetail shapes, you can pick any watertight mesh object from your scene as a connector shape (Custom Connector Object field). SnapSplit scales a copy of it to your specified Width / Length / Depth (mm) and inserts it exactly like the built-in connector types — either via "Add connectors" or via individual click placement.

F.e. place connections per "click"

  • The object's local Z axis defines the insertion direction (depth into the socket).
  • Works with both seam-line and grid distribution as well as per-click placement.
  • Ideal for logos, keyed/anti-rotation shapes, or custom-designed glueless mechanisms.

Tolerance profiles (defaults, adjustable per project):

  • PLA: 0.20 mm per side
  • PETG: 0.30 mm per side
  • ABS/ASA: 0.25 mm per side
  • TPU: 0.35 mm per side
  • SLA: 0.10 mm per side

Tolerances are provided as presets and can be overridden by the user via the tolerance override field.

Export parts as usual (STL/OBJ/3MF). Tip: for 3MF, double-check scale/units.



The panel in the 3D View (N-Panel → “SnapSplit”) features:

Property group with:

  • Segmentation: Number of parts. Unclick "cap seams" for larger part numbers
  • Connections: Cylindrical Pin, Rectangular Tenon, Dovetail, Snap-Pin, Snap-Tenon, Snap-Dovetail, Custom Connector
  • Tolerance: Material profiles (PLA, PETG, ABS, ASA, TPU, SLA)
  • Alignment: Face to face alignment option in object mode

Operators:

  • Planar Split along a global axis into the specified number of parts
  • Split preview and adjustment
  • Decap and cap seams toggle, pre and post split
  • Percentage-based edge margin for connector placement
  • Seam line connectors, Grid connectors with rows and columns input and individual per click connectors placement on the cut face.
  • Pin, Tenon, Dovetail and Snap-variant adjustments
  • Custom Connector placement using a user-selected mesh object, scaled to Width/Length/Depth
  • Adjustable insertion depth. Default: 50%
  • Alignment with face selection in object mode

Languages:

The UI is fully localized and automatically follows Blender's interface language setting. Supported languages:

English (US), German (Deutsch), French (Français), Spanish (Español), Italian (Italiano), Portuguese (Português), Dutch (Nederlands), Polish (Polski), Japanese (日本語), Chinese (中文), Russian (Русский), Ukrainian (Українська), Turkish (Türkçe), Slovenian (Slovenščina), Korean (한국어), Swahili (Kiswahili), Arabic (العربية), Persian (فارسی), Hindi (हिन्दी), Bengali (বাংলা)

  • If your Blender UI language is not among the fully translated set, SnapSplit falls back to English.
  • If your language is missing feel free to fork and add your language into languages.py and open a pull request.
  • A "Reload UI Language" button in the Add-on Preferences lets you refresh translations after changing Blender's language without restarting Blender.

Add-on Preferences:

Accessible via Edit → Preferences → Add-ons → SnapSplit:

  • Default Profile: Choose which material tolerance profile (PLA, PETG, ABS, ASA, TPU, SLA) is pre-selected whenever the SnapSplit panel is opened on a new file or object.
  • Create export collection: When enabled, SnapSplit automatically organizes split/connected parts into a dedicated collection to keep your outliner clean before export.
  • Reload UI Language: Manually re-applies translations, e.g. after switching Blender's interface language.


Folder structure (file structure for snapsplit.zip):

snapsplit
├── blender_manifest.toml
├── __init__.py
├── localization.py
├── LICENCE.txt
├── ops_align.py
├── ops_connectors.py
├── ops_split.py
├── prefs.py
├── profiles.py
├── README.md
├── ui.py
└── utils.py


Thanks to your hints and comments, I cleaned up the collections, added more connectors and languages and fixed some bugs. Don't hesitate to contact me or participate via fork and pull request.

Changelog:

V_0.1.9

  • Added toggle to swap Pin-Socket orientation, and option to swap in Click placement via s key
  • Auto switch to X-ray while Cut-preview, Connector Live Preview and Place Connector per Click
  • Auto-apply rotation and scale before cut
  • Auto connector orientation for connectors after face-align of non split objects

V_0.1.8

  • Face-pick storage for the alignment tool is now a PropertyGroup that is registered and unregistered with the add-on
  • localization cleanup

V_0.1.7

  • Migrated translation system from key-based tr() to literal strings with _trf()
  • All translations now centralized in localization.py
  • Implemented _register_translations() for proper Blender integration
  • Enhanced stability for custom connector boolean operations
  • Optimized bpy.ops usage: replaced selection operators with RNA/BMesh API
  • Depsgraph handler now registers only when live preview is active
  • Better error handling and mesh cleanup for orphaned objects
  • Improved UI layout for connector parameter groups
  • Full adherence to Blender Extensions review requirements
  • Removed advertisement/donation links from UI

V_0.1.6

  • Added live preview option while creating connectors in Line/Grid mode for all connector types and a more adjustment options for connector creations -> Margin, Taper, Chamfer, Edge sensitive Span, Rotations and Offset along Length/Width on the cutting plane
  • Stability fixes for cutting and cap hollow forms created via standard boolean modifier.

V_0.1.5

  • Full UI localization through switch to Blender's interface language setting with 20 languages: EN, DE, FR, ES, IT, PT, NL, PL, JA, ZH, RU, UK, TR, SL, KO, SW, AR, FA, HI, BN with automatic detection based on Blender's UI language.

V_0.1.4

  • Added Dovetail and Snap-Dovetail connector types.
  • Added Custom Connector: use any mesh object from your scene as a connector shape, scaled to Width/Length/Depth, with click placement support.

V_0.1.3

  • Initial public connector set: Cylindrical Pin, Rectangular Tenon, Snap-Pin, Snap-Tenon.

  • Planar split with adjustable axis/offset, cap seams toggle.

  • Seam-line and grid connector distribution, per-click placement.

  • Material tolerance profiles (PLA, PETG, ABS, ASA, TPU, SLA).

  • Face-to-face alignment operator.

  • Collections cleanup automation



Roadmap of ideas:

  • Add-on Preferences panel: Default Profile selection and automatic export collection creation.
  • Extend Add-on Preferences further: more granular Default Profile handling (e.g. per-project/per-object) and more configurable export collection behavior (e.g. naming schemes, per-part subfolders).
  • More languages beyond the current 20.

Thanks for your feedbacks. I'm always happy to hear your further needs for next versions and hints for better building experiences. I'd be happy if you fork and explore the code. You can join in accelerating further dev ops, as I am doing this in my free time and would be happy about productive extensions to make it a great free option to use Blender as program of choice for 3D printing.



And last but not least, as I am doing this in my free time you can support me.

If you like the Addon and continue using it

-> buy me a drink on Gumroad: https://betakontext.gumroad.com/l/snapsplit -> and/or support me on Superhive: https://superhivemarket.com/products/snapsplit -> and/or buy me a coffee on Buymeacoffee: https://buymeacoffee.com/betakontext

CONTACT: dev@betakontext.de | https://dev.betakontext.de |



The project is made with AI assistance and under the terms of the GNU General Public License.

About

Cut and connect in Blender. Split and build various connections for 3D Prints.

Topics

Resources

Stars

29 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages