Tuesday, June 20, 2017

Line and Polyline modules in OpenSCAD

Polygon in OpenSCAD

The polygon function of OpenSCAD is very cool but for some applications it just doesn’t cut it. For instance when polygon is used to draw a Starpolygon, a self intersecting polygon, the space between the polygon lines is filled, an undesired effect that cannot be negated. In case of the Starpolygon we just want to see the lines.

Line and Polyline

Luckily we can create our own polygon module in OpenSCAD that meets our needs. However before we can create a polygon we need to be able to create a single line. Also a single line can be created in OpenSCAD, actually in several ways. In the YouTube video below I'll show one such approach.

A Vase created with line, polyline and rotate_extrude in OpenSCAD.

Furthermore I’ll show how to create a line module and a polygon module that fit our needs but it doesn’t stop there. With the line and polyline a complete 2D-library in OpenSCAD can be created. Also, in combination with linear_extrude and rotate_extrude 3D objects can be created that are impossible to create with CSG alone.



In a next blogpost I’ll show you how to create a Bezier Spline with line and polyline. This Bezier Spline can then be used to create a smooth curve needed in a 3d printable vase for example.

I want to mention Justin Lin here. He has a great website www.openhome.cc where he, not only shares his OpenSCAD work, but also explains it in great detail. I think it’s a very useful resource for OpenSCAD.

The file of this video can be downloaded with the following link: https://drive.google.com/open?id=0Bwg0RBbuN0fMVkJISXdDQV9sekE

OpenSCAD is open source (GPLv2 license) and is well maintained by Marius Kintel et al. Besides the stable releases for Windows, OSX and Linux, development snapshots are available. I recommend using these development snapshots since they have all the latest features. 

Friday, June 2, 2017

Cubic Bezier Spline tool in Solvespace

Cubic Bezier Spline tool 

The Cubic Bezier Spline tool in Solvespace can be used to create shapes that are hard or impossible to accomplish with other tools such as straight lines. A Cubic Bezier Spline is a line segment that can be controlled with four points. By changing the position of these points the curve can be manipulated or smoothened.

By clicking with the left mouse button in the graphics window the new control points can be added to the Cubic Bezier Spline tool to a maximum of 12. This is essentially a Composite Bezier Curve or polybezier. The problem with these curves is that it is hard to keep the curve smooth.

Polybezier with eight control points fully constrained approximating a circle


a classic example of shapes that benefit from Cubic Bezier Splines are Vases. Vases also appear to be popular with 3d printers. In the video below I'll demonstrate how to create a Vase in Solvespace using the Cubic Bezier Spline tool.

At the end of the Vase video I’ll demonstrate two often overlooked functions in Solvespace, the Length Ratio constraint and the Length Difference constraint I’ll also show how to apply the Length Ratio constraint to two circles.


The Solvespace Vase file from this tutorial can be downloaded here.

For this tutorial I used Solvespace 2.3 on OSX.

Solvespace is open source (GPLv3 license) and is available for Window, OSX and Linux. It is developed by Jonathan Westhues and maintained by Whitequark and others. It can be downloaded here: http://solvespace.com/download.pl

Tuesday, May 30, 2017

Spiral Phyllotaxis patterns in OpenSCAD

Spiral Phyllotaxis

In just uploaded a YouTube video about Spiral Phyllotaxis patterns in OpenSCAD. This time it’s a script that I made to demonstrate Spiral Phyllotaxis. Phyllotaxis is a term used for patterns that emerge during the growth of plants. Spiral Phyllotaxis is observed in the heads of sunflowers, in pine-cones and pineapples, and in a variety of other plants.

The script that I wrote uses a mathematical description of Spiral Phyllotaxis called Vogel’s formula. Vogel’s formula actually exists of two equations, one for an angle theta, and one for a radius, describing the a pattern of seeds in a sunflower head. I’ll put a link in the description if you want to know more about Vogel’s formula. These simple equations can generate beautiful patterns that have some interesting mathematical properties.

The number of spirals derived from Vogel’s formula has a close relationship with the Fibonacci sequence. Exactly 55 spirals go counterclockwise, 34 smaller spirals go clockwise and 21 even smaller spirals go counterclockwise and so on. These numbers of spirals are all integers in the Fibonacci sequence.

The Golden Angle or Fibonacci Angle of 137.5 degrees is key in these Spiral Patterns. This angle results in the best distribution of the seeds. A slightly smaller or larger angle leads to a less optimized distribution.

Not only can the Spiral Pattern be examined in OpenSCAD. A big bonus of the program is that the user can create an stl file that can be printed. The physical model can then be studies further.

Tuesday, May 16, 2017

A Solvespace tutorial, the Fidget Spinner

Another Solvespace tutorial. 

In this tutorial I'm going to create a Fidget Spinner. For those who don’t know, a Fidget Spinner is a stress-relieving toy. A basic Fidget Spinner consists of a bearing in the center of a design made from any of a variety of materials. I got this idea from Paul Randall’s YouTube channel. Paul has a great channel with an increasing number of excellent OpenSCAD and FreeCAD tutorials. Last week Paul uploaded two video tutorials where he creates a Fidget Spinner, one in OpenSCAD and one in FreeCAD. I thought it was a good idea to add a Solvespace tutorial to this and leave it for the user to judge which of these open source 3D CAD programs is best for these kind of models.

The Fidget Spinner that we create in this tutorial can easily be 3D printed. However it may require some adjustments of the dimensions before it can be succesfully assembled into a working Fidget. When this is finished insert a bearing and three nuts and the Fidget is ready for use.

Sunday, May 7, 2017

Video on 2D Supershapes created in OpenSCAD

2D Supershapes

I just uploaded a video on 2D Supershapes created in OpenSCAD, the open source 3D CAD program. 2D Supershapes are based on an equation, the Superformula, proposed by John Gielis around 2000. Gielis suggested that the formula can be used to describe many complex shapes and curves that are found in nature. The possibilities with the Superformula seem endless. OpenSCAD not only let you recreate these Supershapes but also enables the you to 3D print the shapes.

Wednesday, April 12, 2017

TIE fighter in OpenSCAD

Introduction

OpenSCAD is an excellent 3D CAD tool to create space craft because of their symmetrical, non-organic shape. This video of a space ship is a good example. However I couldn't find much Star Wars models made in OpenSCAD. So I decided to do it myself and start with a simple TIE fighter.

TIE fighter made in OpenSCAD.

 

Design

When I create a model like this I start with simple primitives and get the position right. In this case a sphere that represents the command pod, two cones that act as pylons and two hexagons as solar arrays. Once I have a basic TIE fighter I start shaping the different parts. Since all these parts are modules this doesn't interfere with the positioning.

Most basic shape of a TIE-fighter consisting of a sphere, two cones and two hexagons. Hexagons still need a 30 degrees rotation around the x-axis.

I use a couple of global constants that mainly determine the positioning of the different parts of the TIE fighter. The're seperate modules for the command pod, solar array and the wing pylon. Also a seperate module exists for the solar panels that are part of the solar array.

Most of the code is pretty standard OpenSCAD maybe with the exception of the solar array. The solar panel is created with a polygon which is a trapezoid. The trapezoid needs to fit between the inner en outer hexagon therefore the points of the trapezoid are depending on these hexagons of the solar array. The angle of the trapezoid is 120 degrees enabling me to calculate the all points of the trapezoid solar panel with basic trigonometry. The variable delta in the solar_panel module enables us to create and edge on the solar_array.

//Modules
module solar_array (outer_radius, inner_radius) {
    difference() {
        union() {
            cylinder(r=outer_radius,h=2,$fn=6);
            cylinder(r=inner_radius,h=4,$fn=6);
        }
        for (i=[1:6]) {
            rotate([0,0,i*360/6]) translate([0,inner_radius,0]) translate([0,0,1]) solar_panel(outer_radius,inner_radius);
            rotate([0,0,i*360/6]) translate([0,inner_radius,0]) translate([0,0,-0.3]) solar_panel(outer_radius,inner_radius);
        }
    }
}

module solar_panel(outer_radius, inner_radius) {
    //delta determines the size of the edge of the solar array.
    delta = 3;
    //x and y determines outer side of the solar panel trapezoid
    x = inner_radius/2 + sin(30) * (outer_radius-inner_radius-delta);
    y = cos(30) * (outer_radius-inner_radius-delta);
    echo(x,y);
    list = [[-inner_radius/2,0],[inner_radius/2,0],[x,y],[-x,y]];
    linear_extrude(1)
    polygon(list);
}

The TIE fighter model is largely parametric meaning that the most of the design of the model can easily can be changed by changing the parameters (constants). This model of the TIE fighter can is still rather basic but it can be expanded by modifiying the different modules.

3D printing

Until now I didn't feel the need for 3D printing the model (my extruder is in repair anyway) but with a few modifications printing shouldn't be a problem. I would print the command pod first and attach the solar array with wing pylon later.

The OpenSCAD file of the TIE fighter can be found here.

OpenSCAD is open source (GPLv2 license) and is well maintained by Marius Kintel et al. Besides the stable releases for Windows, OSX and Linux, development snapshots are available. I recommend using these development snapshots since they have all the latest features.



Wednesday, March 29, 2017

Creating interactive 3D models in your browser with Solvespace

Interactive 3D model

It may be convenient to view a interactive model made in Solvespace using a webbrowser. For instance if you want to share the model with someone who hasn't Solvespace installed. Luckily Solvespace has an option just for this under File -> Export Triangle Mesh. Now in the dialog window select Three.js-compatible mesh with viewer (html). Save the file. An html file is now available that can be viewed in the browser (I only had succes with Firefox, Chrome wouldn't show me the model). The html file created by Solvespace consist for a large part on Javascript and relying on the Three.js Javascript library. All the points, edges and faces of the 3D model are included in this file.

Screenshot of the html file created by Solvespace and opened in the Firefox browser.

When the html file is opened the 3D model can be rotated (left mouse button), moved (right mouse button) and zoomed (scroll wheel). The options are activated by a mouse click in the frame. Clicking on the scroll wheel deactivates these options.

One step further

This can be taken one step further. The model can be integrated in a website. The simplest way is to use the <iframe> tag in html. Below is a simple example where cube.html is the file that has been generated by Solvespace.

<!DOCTYPE html>
<html>
    <head>
    <title>
    This is a cube
    </title>
    </head>
    <body>
        <iframe src="cube.html", height="600", width="800"></iframe>
    </body>
</html>

That's it, the interactive model will show up in the webpage which is a pretty cool Solvespace feature. BTW: I didn't bother demonstrating it in Blogger because I think it's to much of a hassle editing the template.

For this tutorial I used Solvespace 2.3 on OSX.

Solvespace is open source (GPLv3 license) and is available for Window, OSX and Linux. It is developed by Jonathan Westhues and maintained by Whitequark and others. It can be downloaded here: http://solvespace.com/download.pl.