Beam designs for infinite Z 3D printers

Overview

A 3D printed beam that is as stiff as steel

A while ago Naomi Wu 机械妖姬 very kindly sent us one of Creality's infinite-Z belt printers. Lots of people have printed long I beams on this type of machine, but we thought that we'd write a Python FreeCAD program to generate parametric beams more suitable for 3D printing, taking advantage of the fact that complexity is more or less free with this technology and that infinite-Z belt printers can print many overhanging shapes without support material. The result is a beam that is about as stiff as a steel beam of the same weight.

The image above shows an example of the Python output. All you need to specify is the length, width, and height, the thickness of the struts, and the diameter and number of the screw holes in the mounting blocks at the ends. The program then automatically generates the entire beam.

The central section consists of a row of open boxes, each of which is decomposed into tetrahedra. This effectively means that the entire shape is built from tetrahedra - the strongest shape - and also that most of the material is on the outer faces which gives a high second-moment of cross-sectional area for bending resistance in all directions.  The diagonals are angled so that a belt printer with a 45o Z movement can print the entire structure without support material.

The blocks at the ends are for bolting the beams to each other or to other items. The rings of 12 small holes shown allow any orientation in increments of 30o. The large holes are to allow wiring, tubes and other services to be run down the middle of the beams and connect up at the ends, or to allow things such as drive shafts to be accommodated.

It turns out that FreeCAD can't model the rings of small holes. If you want to skip a technical explanation of why this is so then just know that there's a work-round and ignore the italic section that follows.

The image below shows the shape of all the small holes that needs to be subtracted from the end blocks.

As you can see, there are a lot of common tangencies where cylinders cross. When FreeCAD throws the calculation of these to Open Cascade, which is the geometric modeller that FreeCAD uses to represent shapes, it goes away and gets lost in its own thoughts (CPU: 100%...) and you never hear from it again. I (Adrian) don't think this is really a bug in Open Cascade; any boundary-representation (B-rep) geometric modeller would probably have the same problem. Because (as the name implies) B-rep modellers represent shapes by recording the topology and geometry of their surfaces, they have to put a lot of effort into doing things like working out the curves of intersection between surfaces, and keeping all the shape topology consistent while this is done. In some cases this is quite literally impossible. For example there is no closed-form solution to working out the curve of intersection between two NURBS surfaces; that always has to be approximated. Even for cylinder-cylinder intersections, things can get complicated (look at the topological stitch-lines running along the cylinders in the picture; these all have to be matched up).

Set-theoretic (or CSG) geometric modellers have none of these problems because they don't represent the surfaces of objects; they represent their solidity. In their simplest form they can only answer one question: given a point (x, y, z), is it inside the solid part of the object or outside? - a so-called membership test. (In practice set-theoretic modellers can all do much more than this.) And they do membership-tests with rock-solid certainty. Unfortunately they are rarely used in CAD systems, except as a means of input. The reasons for this are historical rather than technical. For example the invention of the hardware depth-buffer, which allows computer graphics systems to make pictures of large numbers of triangles blindingly fast, favoured the early development of systems that represent surfaces (which are easy to triangulate). If instead a hardware ray-tracer had been implemented, then set-theoretic modellers (which are natural choices for ray tracing) might have come to dominate. (I wrote a set-theoretic modeller called SvLis in C++ about three decades ago; if you want to go mad see if you can get it going with a modern C++ compiler. If you succeed, DM me...)

The work-round in FreeCAD that allows the cylinders to be dealt with is as simple as it is nasty. The cylinder radii are perturbed a tiny bit at random:

cyl = Part.makeCylinder(d/2 + random.uniform(-0.01, 0.01), z + 0.2)

This means that what were common tangencies no longer are, quite . The perturbation is well below the resolution of 3D printing.

The following image shows the beams being printed in PLA.

When it was done, we subjected one to a bending test using weights and a dial gauge to measure deflection.

Note the pieces of wood on the left; if only we had some way to 3D-print structural parts...

The beam was held and deflected sideways so it couldn't slip in the vice. Here are the results:

The equation is that of the least-squares fit straight line. The effective length of the beam (ignoring the clamped end) was 175 mm. Its stiffness was 1.02 x 10-4 mN-1 from the graph. This meant that its flexural rigidity (EI) was 17.5 Nm2 (where E is Young's modulus in Pa and I is the second moment of area in m4). Thus we can work out that an equivalent steel beam would be 5 mm square. (That is to say, a steel beam with the same EI value.)

The printed beam weighed 47.7 grams. Coincidentally a 5 mm square steel beam of the same length (including the clamped end) would weigh about the same (47 grams), so we have made a printed beam that is about as stiff as the same weight of steel.

The printed beam was physically bigger than its steel equivalent, of course. This is to be expected as PLA has a much lower elastic modulus than steel. But printing allows any size easily to be created, it allows services to be run up the insides, and it allows a fancy pattern of attachments and screw holes to be created at the ends, all automatically.

It would also allow a beam of beams to be printed. Because it needs no support, this beam design could be used as the struts of a much bigger beam in the same pattern. This would make a fractal beam...

Our Python program that makes the beams in FreeCAD is in the Software directory of this repository in the file square-beam.py. The file Z-beam.scad is an OpenSCAD set-theoretic (CSG) version by David Eccles that he did a few hours after we released this. We all love open-source!

It has not escaped our attention that beams of this sort would be ideal components for building a RepRap infinite-Z belt printer.

Owner
RepRap Ltd
RepRap Ltd specialises in research and development in self-replicating open-source 3D printing.
RepRap Ltd
This tool emulates an EMV-CAP device, to illustrate the article "Banque en ligne : à la decouverte d'EMV-CAP" published in MISC

About This tool emulates an EMV-CAP device, to illustrate the article "Banque en ligne : à la decouverte d'EMV-CAP" published in MISC, issue #56 and f

Philippe Teuwen 28 Nov 21, 2022
Rasberry Pie GPIO memory game. Press the corresponding key to the lit LED.

RPie-keyboard-game Rasberry Pie GPIO memory game. Press the corresponding key to the lit LED. Randem LED (general output) is lit up on rasberrypi rand

Shawn Dowling 1 Oct 24, 2021
Electrolux Pure i9 robot vacuum integration for Home Assistant.

Home Assistant Pure i9 This repository integrates your Electrolux Pure i9 robot vacuum with the smart home platform Home Assistant. The integration co

Niklas Ekman 15 Dec 22, 2022
Unofficial Playdate reverse-engineering notes/tools - covers file formats, server API and USB commands

Unofficial Playdate reverse-engineering notes/tools - covers file formats, server API and USB commands ⚠️ This documentation is unofficial and is not

James 106 Dec 31, 2022
Universal Xiaomi MIoT integration for Home Assistant

Xiaomi MIoT Raw 简体中文 | English MIoT 协议是小米智能家居从 2018 年起推行的智能设备通信协议规范,此后凡是可接入米家的设备均通过此协议进行通信。此插件按照 MIoT 协议规范与设备通信,实现对设备的状态读取及控制。

1.9k Jan 02, 2023
智能无人机路径规划仿真系统是一个具有操作控制精细、平台整合性强、全方向模型建立与应用自动化特点的软件

Drone智能无人机路径规划仿真系统是一个具有操作控制精细、平台整合性强、全方向模型建立与应用自动化特点的软件。它以A、B两国在C区开展无人机战争为背景,该系统的核心功能是通过仿真平台规划无人机航线,并进行验证输出,数据可导入真实无人机,使其按照规定路线精准抵达战场任一位置,支持多人多设备编队联合行动。

wwy 349 Jan 03, 2023
LT-OCF: Learnable-Time ODE-based Collaborative Filtering, CIKM'21

LT-OCF: Learnable-Time ODE-based Collaborative Filtering Our proposed LT-OCF Our proposed dual co-evolving ODE Setup Python environment for LT-OCF Ins

Jeongwhan Choi 15 Dec 28, 2022
Simple python3 implementation of microKanren with lots of type annotations for clarity

MicroKanren-py This is (yet another) python implementation of microKanren. It's a reasonably 1:1 translation of the code provided in the paper, but ev

Erik Derohanian 3 Dec 10, 2022
Connect a TeslaMate instance to Home Assistant, using MQTT

TeslaBuddy Connect a TeslaMate instance to Home Assistant, using MQTT. It allows basic control of your Tesla vehicle via Home Assistant (currently, ju

4 May 23, 2022
Yet another automation project because a smart light is more than just on or off.

Automate home Yet another home automation project because a smart light is more than just on or off. Overview When talking about home automation there

Maja Massarini 62 Oct 10, 2022
Used python functional programming to make this Ai assistant

Python-based-AI-Assistant I have used python functional programming to make this Ai assistant. Inspiration of project : we have seen in our daily life

Durgesh Kumar 2 Dec 26, 2021
FERM: A Framework for Efficient Robotic Manipulation

Framework for Efficient Robotic Manipulation FERM is a framework that enables robots to learn tasks within an hour of real time training.

Ruihan (Philip) Zhao 111 Dec 31, 2022
Python application, displaying currently played track from Spotify on OLED display connected via I2C

RaspberryPi Spotify OLED Display This application will display currently played track on SSD1306 OLED display connected to RaspberryPi. Displayed stuf

Wojciech Olech 2 Dec 30, 2021
Sticklog2heatmap - Draw a heatmap of RC sticks from OpenTX logs or USB HID device

sticklog2heatmap Draw a heatmap of RC sticks from OpenTX logs or USB HID device

2 Feb 02, 2022
How to configure IOMMU device for nested Proxmox hypervisor (PVE) VM - PCIe Passthrough

Configuring PCIe Passthrough for Nested Virtualization on Proxmox Summary: If you are running bare-metal L0 (level 0) Proxmox (PVE) hypervisor with ne

Travis Johnson 6 Aug 30, 2022
Activate Numpad inside the touchpad with top right corner switch or F8 key

This is a python service which enables switching between numpad and touchpad for the Asus UX433. It may work for other models.

Mohamed Badaoui 230 Jan 08, 2023
A set of postprocessing scripts and macro to accelerate the gyroid infill print speed with Klipper

A set of postprocessing scripts and macro to accelerate the gyroid infill print speed with Klipper

Jérôme W. 75 Jan 07, 2023
Automate gate/garage door opening via 433.92MHz emitter with Raspberry Pi, Home Assistant and Homekit.

Automate opening your garage door / gate Summary This project sums up how I automated opening my garage door using a Raspberry PI, a 433Mhz emitter, H

Julien Fouilhé 29 Nov 30, 2022
DongshanPI Seven for STM32MP157DAC.

STM32MP1 Buildroot External Tree

DongshanPI 14 May 06, 2022
Home Assistant custom integration to fetch data from Powerpal

Powerpal custom component for Home Assistant Component to integrate with powerpal. This repository and integration is not affiliated with Powerpal. Th

Lawrence 32 Jan 07, 2023