Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions models/core/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,15 +47,15 @@ Open any file in `parts/` with OpenSCAD and use the **Customizer** panel to adju

- **`connector.scad`**: Customize dimensions, directions, pull-through axes, feet, and orientation
- **`support.scad`**: Customize length and hole configurations
- **`lockpin.scad`**: Customize grip type (standard or no-grip)
- **`lockpin.scad`**: Customize grip type (standard, extended or no-grip)

### Exporting Variants

The `presets/` folder contains modules for batch-exporting all logical variants:

- **`connectors.scad`**: Organized collections (standard, feet, pull-through, etc.)
- **`supports.scad`**: Various support lengths with different hole configurations
- **`lockpins.scad`**: Standard grip and no-grip variants
- **`lockpins.scad`**: Standard grip, extended and no-grip variants

## 🔧 Core Components

Expand All @@ -75,6 +75,7 @@ Junction pieces that join supports in multiple directions.
### 3. **Lock Pins**
4mm square pins that secure connectors to supports via tension fit.
- Standard grip: Two grip arms for easy insertion/removal
- Extended grip: Two asymmetric grip arms with a dominant outer arm.
- No-grip variant: Smooth design for minimal profile
- Bidirectional tension hole for secure fit

Expand Down
14 changes: 8 additions & 6 deletions models/core/lib/lockpin.scad
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ grip_base_length = grip_thickness_inner + grip_thickness_outer + grip_distance +
* Parameters:
* grip_type (string, default="standard"): Type of grip for the lock pin.
* - "standard": Two grip arms on both sides.
* - "extended": Standard grip with an extended outer arm for improved stability.
* - "no_grip": No grip arms.
*
* Produces:
Expand Down Expand Up @@ -82,28 +83,29 @@ module lockpin(grip_type = "standard") {
*
* Creates the grip part of the lock pin.
* If grip_type is "no_grip", no grip arms are created.
* If grip_type is "standard", two grip arms are created on both sides.
* If grip_type is "standard", a symmetric two-stage grip is created.
* If grip_type is "extended", standard grip with an extended outer arm for improved stability.
* If grip_type is "z_grip", a Z-shaped grip variant is created (not implemented yet).
*/
module grip(grip_type = "standard") {
if (grip_type != "no_grip") {
grip_base_dimensions = [lockpin_width_outer, lockpin_height, grip_base_length];
grip_outer_dimensions = [grip_width, lockpin_height, grip_thickness_outer];
grip_outer_dimensions = [grip_type == "extended"?grip_width * 1.5:grip_width, lockpin_height, grip_thickness_outer];
grip_inner_dimensions = [grip_width, lockpin_height, grip_thickness_inner];

base_translation = lockpin_prismoid_length + lockpin_endpart_length - lockpin_chamfer - TOLERANCE/2;

union() {
// Base part of the grip
translate([0, 0, -base_translation - grip_base_length / 2])
cuboid(grip_base_dimensions, chamfer=lockpin_chamfer, except=TOP);
cuboid(grip_base_dimensions, chamfer=lockpin_chamfer, except=TOP);

if(grip_type == "standard") {
if(grip_type == "standard" || grip_type == "extended") {
translate([0, 0, -base_translation - grip_base_length + grip_thickness_outer / 2])
cuboid(grip_outer_dimensions, chamfer=lockpin_chamfer, except=TOP);
cuboid(grip_outer_dimensions, chamfer=lockpin_chamfer, except=TOP);
// Inner part of the grip
translate([0, 0, -base_translation - grip_base_length + grip_thickness_outer + grip_thickness_inner / 2 + grip_distance])
cuboid(grip_inner_dimensions, chamfer=lockpin_chamfer, except=TOP);
cuboid(grip_inner_dimensions, chamfer=lockpin_chamfer, except=TOP);
} else if (grip_type == "z_grip") {
// TODO: Z-Grip variant has only 1 arm on each side but each arm is thicker
echo("Z-Grip variant not implemented yet.");
Expand Down
10 changes: 5 additions & 5 deletions models/core/makerworld/connector.scad
Original file line number Diff line number Diff line change
Expand Up @@ -308,22 +308,22 @@ module lockpin(grip_type = "standard") {
module grip(grip_type = "standard") {
if (grip_type != "no_grip") {
grip_base_dimensions = [lockpin_width_outer, lockpin_height, grip_base_length];
grip_outer_dimensions = [grip_width, lockpin_height, grip_thickness_outer];
grip_outer_dimensions = [grip_type == "extended"?grip_width * 1.5:grip_width, lockpin_height, grip_thickness_outer];
grip_inner_dimensions = [grip_width, lockpin_height, grip_thickness_inner];

base_translation = lockpin_prismoid_length + lockpin_endpart_length - lockpin_chamfer - TOLERANCE/2;

union() {

translate([0, 0, -base_translation - grip_base_length / 2])
cuboid(grip_base_dimensions, chamfer=lockpin_chamfer, except=TOP);
cuboid(grip_base_dimensions, chamfer=lockpin_chamfer, except=TOP);

if(grip_type == "standard") {
if(grip_type == "standard" || grip_type == "extended") {
translate([0, 0, -base_translation - grip_base_length + grip_thickness_outer / 2])
cuboid(grip_outer_dimensions, chamfer=lockpin_chamfer, except=TOP);
cuboid(grip_outer_dimensions, chamfer=lockpin_chamfer, except=TOP);

translate([0, 0, -base_translation - grip_base_length + grip_thickness_outer + grip_thickness_inner / 2 + grip_distance])
cuboid(grip_inner_dimensions, chamfer=lockpin_chamfer, except=TOP);
cuboid(grip_inner_dimensions, chamfer=lockpin_chamfer, except=TOP);
} else if (grip_type == "z_grip") {

echo("Z-Grip variant not implemented yet.");
Expand Down
10 changes: 5 additions & 5 deletions models/core/makerworld/lockpin.scad
Original file line number Diff line number Diff line change
Expand Up @@ -308,22 +308,22 @@ module lockpin(grip_type = "standard") {
module grip(grip_type = "standard") {
if (grip_type != "no_grip") {
grip_base_dimensions = [lockpin_width_outer, lockpin_height, grip_base_length];
grip_outer_dimensions = [grip_width, lockpin_height, grip_thickness_outer];
grip_outer_dimensions = [grip_type == "extended"?grip_width * 1.5:grip_width, lockpin_height, grip_thickness_outer];
grip_inner_dimensions = [grip_width, lockpin_height, grip_thickness_inner];

base_translation = lockpin_prismoid_length + lockpin_endpart_length - lockpin_chamfer - TOLERANCE/2;

union() {

translate([0, 0, -base_translation - grip_base_length / 2])
cuboid(grip_base_dimensions, chamfer=lockpin_chamfer, except=TOP);
cuboid(grip_base_dimensions, chamfer=lockpin_chamfer, except=TOP);

if(grip_type == "standard") {
if(grip_type == "standard" || grip_type == "extended") {
translate([0, 0, -base_translation - grip_base_length + grip_thickness_outer / 2])
cuboid(grip_outer_dimensions, chamfer=lockpin_chamfer, except=TOP);
cuboid(grip_outer_dimensions, chamfer=lockpin_chamfer, except=TOP);

translate([0, 0, -base_translation - grip_base_length + grip_thickness_outer + grip_thickness_inner / 2 + grip_distance])
cuboid(grip_inner_dimensions, chamfer=lockpin_chamfer, except=TOP);
cuboid(grip_inner_dimensions, chamfer=lockpin_chamfer, except=TOP);
} else if (grip_type == "z_grip") {

echo("Z-Grip variant not implemented yet.");
Expand Down
10 changes: 5 additions & 5 deletions models/core/makerworld/support.scad
Original file line number Diff line number Diff line change
Expand Up @@ -310,22 +310,22 @@ module lockpin(grip_type = "standard") {
module grip(grip_type = "standard") {
if (grip_type != "no_grip") {
grip_base_dimensions = [lockpin_width_outer, lockpin_height, grip_base_length];
grip_outer_dimensions = [grip_width, lockpin_height, grip_thickness_outer];
grip_outer_dimensions = [grip_type == "extended"?grip_width * 1.5:grip_width, lockpin_height, grip_thickness_outer];
grip_inner_dimensions = [grip_width, lockpin_height, grip_thickness_inner];

base_translation = lockpin_prismoid_length + lockpin_endpart_length - lockpin_chamfer - TOLERANCE/2;

union() {

translate([0, 0, -base_translation - grip_base_length / 2])
cuboid(grip_base_dimensions, chamfer=lockpin_chamfer, except=TOP);
cuboid(grip_base_dimensions, chamfer=lockpin_chamfer, except=TOP);

if(grip_type == "standard") {
if(grip_type == "standard" || grip_type == "extended") {
translate([0, 0, -base_translation - grip_base_length + grip_thickness_outer / 2])
cuboid(grip_outer_dimensions, chamfer=lockpin_chamfer, except=TOP);
cuboid(grip_outer_dimensions, chamfer=lockpin_chamfer, except=TOP);

translate([0, 0, -base_translation - grip_base_length + grip_thickness_outer + grip_thickness_inner / 2 + grip_distance])
cuboid(grip_inner_dimensions, chamfer=lockpin_chamfer, except=TOP);
cuboid(grip_inner_dimensions, chamfer=lockpin_chamfer, except=TOP);
} else if (grip_type == "z_grip") {

echo("Z-Grip variant not implemented yet.");
Expand Down