Extruded Element Instruction

A Detailed walk-through to develop your model into a modular interlocking design


  1. Download & Install OpenSCAD (free; open-source)

  2. Obtain the Extruded Element Library to open with OpenSCAD

  1. Open the eellc_lib.scad Extruded Element Library with OpenSCAD

    • Or paste its contents into the OpenSCAD Editor

  1. Press F6 to Render the Tessellation (array/tiling) of Interlocking Shapes

      • The current active “EXECUTED CODE” is the module called “Tessellate” as shown above.

  1. Adjust the Extruded Element Parameters

    • Press F6 After each Change to Observe the Effect. (READ GREY COMMENTS IN TEXT FILE FOR DESCRIPTION)
    • Parameters are located below license and patent information at the top of the code
    • Parameter Names (red underline; above) describe the parameter
    • Parameter Values (green dotted line; above) describe the possible values if necessary
    • Parameters without possible values (such as s_h, hook size) can be tinkered with

  1. Extrude the Element Tessellation

    • Scroll to  “EXECUTED CODE” Marked by // ( ) ( ) ( ) ( ) . . .
    • [Red Box] Add two back-slashes ‘//’ to the tessellate(); line
      • (“Comment out” the tessellate line)
    • [Green Box] Delete the two back-slashes ‘//’ from the linear_extrude… …tessellate(); line
      • (“Uncomment” the linear_extrude line)


  1. Save the OpenSCAD file you are working in (suggested “eellc_lib.scad”)

  1. Save an Object (.STL file) in the Same Directory as eellc_lib.scad

    • Import the object file from any of your favorite sources for 3D Printable objects (.stl files).

  1. In OpenSCAD text editor, Change the Filename to match your object

    • The fileName parameter can be found under ****Imported STL Object options****

  2. Observe the Orientation and Array Size of Extruded Elements

    • In the Above image, the array is the X-Y Plane (Green & Red axes), and the extrusion direction is parallel to the Z-Axis (Blue axis)
    • The array above spans about 300 X 300 Units (here considered them mm, for the sake of 3D printing)

  1. Import the Object

    • Comment out (type leading “//” on) the linear_extrude… …tessellate(); line
    • Uncomment (delete leading “//” on) the following line: translate… …import(fileName);

  1. Scale & Align the Object to the Extruded Element Array

    • In the parameters sections (above “Executed Code”) modify the ****Imported STL Object options**** parameters.
    • The Element Array may need to be increased in size to envelope your object (parameters n_elem & m_elem; along x & y axes, respectively)
    • Uncommenting the linear_extrude… …tessellate(); line will enable object and element array visualization simultaneously.
      • WARNING: process time after pressing F6 will be much longer than with the object or element array alone.
    • CONGRATULATIONS!!! You are now ready to start production processes.


  1. Adjust Hook Kerf for Hook Fitment

    • In ****Clearance/Fitment Options**** section of parameters locate k_h and adjust for hook fitment
      • k_h = 1, specifies exact match of hooks; no clearance.
      • k_h < 1, specifies a percent of hook tip width to shrink for clearance (0.98 = 98% of hook tip width)

  1. Adjust Element Kerf for Element Fitment (Solid Elements only; e_fill set to 1 or -1)

    • In ****Clearance/Fitment Options**** section of parameters locate k_e and adjust for element boundary fitment
    • k_e = 1, specifies exact match of element boundaries; no clearance.
    • k_e < 1, specifies the element boundary clearance (a relative percent of hook tip width)
      • e.g. k_e=0.98; element boundary clearance  = 100-98%, 2% of hook tip width)
      • When k_h & k_e are set to the same value, the gap will be uniform.


  1. Generate Sample Hooks

    • In “EXECUTED CODE” Section, comment-out all VISUALIZATION lines [red box; above]
      • comment out any of:
        • tessellation();
        • linear_extrude… …tessellation();
        • translate… …import(fileName);
    • Uncomment  sample_hooks(); line [green box; above]

  2. Export file of Sample Hook Pair

    • In OpenSCAD: Go to File->Export and slect your preferred format
      • (.STL is common for 3D Printing)

  3. Repeat Production Preparation & Testing until Satisfied

    • Produce your sample hooks with your favorite rapid prototyping method
      • Additive Manufacturing (set Kerf values < 1)
      • Conventional Manufacturing (set Kerf values >/= 1; disregarding tool-comp)

  1. Generate Sample Elements

    • Comment out sample_hooks(); line
    • Uncomment sample_elements(); line
    • POSITION NOTE: Adjust the separation of sample elements with printer_spacing parameter in above parameter section.
    • SINGLE ELEMENT NOTE: If only one element is desired for fabrication:
      • Set n_elem & m_elem = 1
      • Utilize the “EXECUTED CODE” ->”VISUALIZATION”  line – linear_extrude… …tessellate();

  2. Export, Test & Repeat


  1. Complete Above Steps Satisfactorily

    • Ensure the Imported Object is aligned with the element array
    • Ensure the hooks fit as desired
    • Ensure the elements fit as desired (if using e_fill = -1 or 1)
    • Ensure the element array completely encapsulates your object
      • by adjusting parameters:
        • height
        • n_elem
        • m_elem

  1. Set-up Batch File to Individually Generate all Elements Intersecting the Imported object

  1. Edit the Batch File to Meet your File Name, Directory, & Array Size

    • Change the directory path [Orange Box] to match the directory where you have stored the *.stl object file and the *.scad extruded element library
    • Change the values described by the white boxes above
      • # of Elements -1:
        • frisbee example had n_elem = 15 & m_elem = 15
        • 15 x 15 – 1 = 224
      • Prefered Prefix:
        • for frisbee example I would use: “frisbee-“
      • Name of Saved *scad file:
        • whatever you named your *.scad file in your working directory


  1. Share your creations at the below social networking sites
  2. Subreddit: r/ExtrudedElement is set-up just for this purpose and to include troubleshooting and tips or updates from the community

NOTE: Please do not share your creations on Thingiverse.com that use extruded elements.  Per Thingiverse.com ToS: section 3.2 License of User Content, by sharing on their website, one is granting a royalty-free license to Thingiverse.com and associated Companies (see https://www.makerbot.com/legal/terms/, section 3.2).

Close Menu