1 / 11
OpenSCAD library for HSW wall and attachments — zdjęcie 1
1 / 11

OpenSCAD library for HSW wall and attachments

Zamów wydruk tego modelu

Obliczymy ostateczną cenę na podstawie wybranego pliku. Sprawdzisz ją i zaakceptujesz przed płatnością.

Zapisane na tym urządzeniu.

Informacje o modelu

Źródło
Printables
Licencja
Creative Commons — Attribution — Noncommercial — Share Alike

Preface

There are good HSW OpenSCAD customizers out there as well as libraries to generate attachments, some I collected in this collection. What I found lacking was the ability to generate attachments on a grid and the ability to subtract HSW walls from another shape. 

So I implemented the things I felt were missing, as a library to be able to re-use the functionality, and I figured I'd share it here as well as it will be a dependency for some of my models. This is the first OpenSCAD library I shared, and I'm still learning plenty. So if you used this in a project, I'd love to take a gander, consider adding it as a remix. If you have any constructive feedback, leave it in the comments.

About

OpenSCAD library for basic HSW modelling:

  • HSW wall

    • single hex

    • grid defined by X/Y size or hex count

    • infilled variant

    • negative variant

  • attachment (fastener) hex

    • single fastener

    • grid defined by X/Y size or hex count

  • HSW linear extrusion

    • helper to split HSW pattern on X and or Y axis through path subtraction

    • use the path to print HSW compatible spacers

Installation

This is an OpenSCAD library, OpenSCAD is required to make use of it. Read more about OpenSCAD libraries.

  • Install the BOSL2 library (dependency).

  • Add this file to the OpenSCAD library path:

    • Linux:    $HOME/.local/share/OpenSCAD/libraries/

    • Mac OS X:  $HOME/Documents/OpenSCAD/libraries/

    • Windows:   My Documents\OpenSCAD\libraries\

Examples

Single HSW hex
include <hsw.scad>
hex();

hex() options:

  • fill: true / false

HSW hex grid by hex count
include <hsw.scad>
hex_grid(count_x=3, count_y=5)

hex_grid() options:

  • size_x: size [mm] of grid X axis 

  • size_y: size [mm] of grid Y axis

  • count_x: size (number of hex) of grid X axis 

  • count_y: size (number of hex) of grid Y axis

  • fill: fill in hex. Values: true / false 

  • negative: use to subtract from shape to achieve HSW grid. Values: true / false 

HSW hex grid by size
include <hsw.scad>
hex_grid(size_x=80, size_y=50);
Subtract HSW grid from shape
include <hsw.scad>
difference() {
    cuboid([80,100,8], chamfer=1);
    hex_grid(count_x=3, count_y=7, negative=true);
}
HSW grid with infill
include <hsw.scad>
hex_grid(count_x=4, count_y=4, fill=true);
Linear extrude HSW path
include <hsw.scad>

difference() { cuboid([110,60,8], chamfer=1); hex_grid(count_x=5, count_y=3, negative=true); hex_difference_path_x(n = 4); }

hex_difference_path_x()  and hex_difference_path_y() options:

  • n: number of hexs in the path length. Default: 1.

  • height: height of the linear extrusion path. Default: 8.

  • width: the width of the linear extrusion path. Default: 0.2.

Single attachment
include <hsw.scad>
attachment();

attachment() options:

  • hex_diameter: diameter of the attachment. Default: 15.2. Range:  [15.0:0.1:16.0]

  • length: length of the attachment (on Z axis). Default: 8. Range: [7:0.1:200]

  • chamfer: chamfer on top and bottom of the attachment. Default: 1. Range: [7.5:0.01:8.0]

Single attachment with custom length, varying chamfer
include <hsw.scad>
 attachment(length=20, chamfer1=-2);

 Control each attachment end chamfer with parameters chamfer1and chamfer2.

Attachment with split and screw hole to expand attachment in insert
include <hsw.scad>
 attachment_screw_split();
  • split_slop thickness of the subtracted material creating the split. Default 0.4.

  • split_screw_hole control socket screw head subtraction. Default true.

Grid of attachments by count
include <hsw.scad>
attachment_grid(count_x=3, count_y=3);

attachment_grid() options:

  • hex_diameter: diameter of the attachment. Default: 15.2. Range:  [15.0:0.1:16.0]

  • length: length of the attachment (on Z axis). Default: 8. Range: [7:0.1:200]

  • chamfer: chamfer on top and bottom of the attachment. Default: 1. Range: [7.5:0.01:8.0]

  • size_x: size [mm] of grid X axis 

  • size_y: size [mm] of grid Y axis

  • count_x: size (number of attachment) of grid X axis 

  • count_y: size (number of attachment) of grid Y axis 

Use attachment_screw_split_grid() to render grid of attachment_screw_split().

Add attachments to model
include <BOSL2/std.scad>
include <hsw.scad>

size_x=30; size_y=64;

down((size_x/2)+4) attachment_grid(size_x=(size_x - 10), size_y=(size_y - 10), length=10);

difference() { ycyl(d=size_x, l=size_y, $fn=64); back(4) ycyl(d=size_x-8, l=size_y-8, $fn=64); }

Changelog

  • 0.1.0 - 2025-09-27: initial version

  • 0.1.1 - 2026-03-14: increase hex_fill subtraction, fixing multiple modules

  • 0.2.0 - 2026-03-15: adds X axis linear_extrude path helper

  • 0.2.1 - 2026-04-21: adds Y axis linear_extrude path helper

  • 0.3.0 - 2026-04-25: additional attachment chamfer control and split screw variant

  • 0.3.1 - 2026-04-25: add attachment_screw_split_grid() to render grid of attachment_screw_split()

Tagi