Introduction

The Chaos Trilogy: Better Life Through ACME

Available in Kindle format and paperback from Amazon.

Spirix Plugin for SketchUp (works with SketchUp 2015, 2016, and 2017)

The Spirix Ruby plugin allows you to revolve or extrude any 3D sequence of edges (both open and closed loop) about or along the z-axis while rotating, scaling, and/or morphing the selected edges using various interpolative functions. The code utilizes linear, sine, arc1, arc2, arc3, arc4, log10, parabolic, and cubic transforms independently applied to the scaling, axial, radial, and morphing operations. Offset surfaces may also be created along with side and end "skirts" that can be used to "stitch" the two parallel surfaces together. For each of these operations, the side and end edges can optionally be created for further use with additional geometry.

Spirix ... What Is It Good For?

Fun With Spirix: https://www.youtube.com/watch?v=0d9MLLfYIKU

Fun With Spirix (continued): https://www.youtube.com/watch?v=R4pU4SbXLog

Installation

To install the Spirix plugin, browse to the Spirix code page:

Download the Spirix.rbz file. Open the System Preferences pane using "Window >> Preferences" and highlight the "Extensions" option. Click on the "Install Extension..." button, browse to the downloaded RBZ file, and then double-click on the filename (or highlight it and click the "Open" button). You should now be able to find Spirix on the "Extensions" menu.

Alternate Installation (older method)

To install the Spirix plugin, browse to the Spirix code page:

Download the Spirix.rb file* to your Google SketchUp plugin directory. On a Windows machine, this is typically somewhere like:

C:\Program Files\Google\Google SketchUp 8\Plugins\

or

C:\Users\username\AppData\Roaming\SketchUp\SketchUp 2016\SketchUp\Plugins

Launch SketchUp and you should find a new option called Spirix under the Plugins (or Extensions) menu that displays three sub-menus labeled Create Surface, Create Group, and Create Pattern. Create Group is used to create optional named groups that can subsequently be used as input to the Create Surface and Create Pattern modules. The Create Pattern function can also be used to create sequentially numbered copies of groups using the Spirix transformations. NOTE: Where applicable, all operations use the Right-Hand Rule.

* RBZ file also available as spirix.rbz (a standard zipfile)

12/27/2015 Update - Version 2.0 - Measurement Units Compatibility

Prior to this release, the plugin only worked correctly when modeling in decimal inches. As of version 2.0, Spirix will now work with any choice of units (i.e., inches, meters, millimeters, etc.).

11/18/2014 Update - Version 1.4 - Relocatable Frame of Reference

My initial goal was to provide a way that allowed you to specify an arbitrary location and orientation to use as the frame of reference for creating new surfaces. Up until now, you were restricted to using the model's absolute origin and axes and were forced to locate the generating curves accordingly. Version 1.4 adds the ability to create a named group of lines to act as a relocatable frame of reference. By creating three ordered lines (the first from the origin to plus X, the second from the origin to plus Y, and the third from the origin to plus Z) and putting them into a special Spirix group called SPIRIX_AXES, all transformations will subsequently be performed using the specified location and orientation as defined by this group.

If you change the name of the group (or delete it), it will no longer be used and all transforms will revert back to the absolute (model) frame of reference. If you rename the group back to SPIRIX_AXES (or re-create it), it will start being used again.

Shown below are two surfaces created by revolving a square about the z-axis with a 1/4 twist. The first was created using the model frame of reference and the second was created after moving the SPIRIX_AXES to an arbitrary location and orientation. While both were created with clockwise revolutions, the sense of the surfaces is reversed due to the relative change in position of the square (i.e., the first "moved" toward the "back" of the square while the second "moved" toward the "front" of the square).

NOTE: This functionality hasn't been added to the Patterns module yet, but will be included in the next release. If you prefer not to use this feature, just don't create the SPIRIX_AXES group and continue to use Spirix as usual.

Version 1.4 is available on the code page.

11/16/2014 Update - Version 1.3 - Rotation Plane Using Axes Or Face (Tau Function)

When rotating geometry, the rotations have previously used the X/Y plane (i.e., Revolutions = 0) or the X/Z plane (i.e., Revolutions != 0), depending on the operation. I've added a new selection to allow choosing the current default rotation ("Axes") or choosing to rotate in the plane of the geometry itself ("Face"). When using in-face rotation, any specified X or Y/Z centroid offsets will first be projected onto the face parallel to the Z-axis (Revolutions = 0) or the Y-axis (Revolutions != 0) before being used as the center of rotation.

Note that each update of Spirix can potentially be misaligned with the menu options used with a previously saved model. This version inserts a new selection "Plane" following the "Rotations" parameter which "bumps" all the previously defined values down the list by one and they no longer appear where they did originally. This is a side effect of using the stored dictionary values linked to Spirix.

Version 1.3 has been updated to 1.4 and is available on the code page.

11/8/2014 Update - Version 1.2 - Interpolated Rotations and Offset Surfaces

From time to time, I find that I need a surface that is offset a specific distance from the original surface (i.e., I want to add some arbitrary thickness to a surface to enclose a solid volume). Version 1.2 now includes this feature along with the ability to "stitch" the the two surfaces together along the edges. In order to make this as flexible as possible, the surfaces are created independently from one another and can be manipulated as such. The illustration below shows a surface that was created by morphing one curve into another using sinusoidal interpolation. The next five images depict the five related offset surfaces that can be created. Note: It is not necessary to actually create the original surface; any of the six bounding meshes can be independently specified.

This version also introduces changes to the centroid-offset parameters for rotations; in addition, the rotation values themselves may now be interpolated using Sine and Arc1 in addition to the default Linear transformation (the usual list of additional transforms will be added in a future release - updates to the documentation will eventually follow as well).

A 3D-printed ceramic chalice created using three of the "petals" shown above plus a full radius along the lip:

Version 1.2 has been updated to 1.4 and is available on the code page.

12/13/2013 Update (Friday the 13th) - Official Release of Version 1.0

I recently wanted to model a DNA-style double-helix. While I could use the Spirix Surface generator to make the "rails", I didn't have an easy way to make the "rungs". As a result, I've now added a new Patterns module that allows you to use a named group to make one or more copies using the Spirix transformations. Copies of a group can be scaled, rotated about an arbitrary center, moved radially, moved vertically, and revolved angularly about the z-axis ... all in one operation. Additionally, I added an "X Centroid Offset" field to the Surface module that allows more flexibility when using the rotation transform.

DNA-styled earring in sterling silver that was cast in a mold made from

a 3D-printed wax master (this earring's mate has a reverse twist).

[Earring Pair Cost: $65 in Sterling Silver; $450 in 14K Gold; $1,300 in Platinum]

Version 1.0 has been updated to 1.4 and is available on the code page.

8/31/2013 Update

It's been a few years since I first wrote this and I've gotten quite a bit of use out of the plugin as originally written. However, several things irritated me every time I would use it and I finally couldn't take it any more.

More specifically:

  • Each time Spirix is used to create a surface, it sets the parameters to the initial defaults. When trying different parameters or otherwise repetitively using the same inputs, it quickly becomes tiresome to keep putting in the same values each iteration. This has now been modified to use the previous parameters so you only need to change the ones that are different each time. As a bonus, these settings stay with the model so they are there when you use it at a later time.
  • When creating a surface not using Spirix groups, any un-grouped entities are used as the input geometry. If successful, they must then be manually deleted so they don't interfere with the next surface generation. This has now been modified to auto-delete the geometry used after successful surface generation.
  • When creating Spirix groups, the original geometry must be deleted manually so it doesn't interfere with future operations. This has now been modified to auto-delete the entities upon successful group creation.
  • When creating surfaces, the co-ordinate system used was always the original location, scale, and orientation where the group was originally created. This has been modified to allow the groups to be copied, moved, scaled, and rotated and then used by Spirix at their new location and orientation.

Version 0.93 has been updated to 1.4 and is available on the code page.

2/10/2010

Recently, I discovered that Sketchup is now free and I downloaded a copy. Subsequently, I discovered that you could write your own code in Ruby and C++ and easily integrate it with Sketchup. In the process of trying to create a wide variety of shapes, I've come up with a Ruby plugin that allows you to create an assorted array of mesh surfaces that are not readily available natively. While I am new to both Ruby and Sketchup, the plugin does what it was intended to do and is self-contained in a single text file called Spirix.rb (the only dependency is Sketchup.rb).

Basically, the plugin allows you to revolve or extrude any 3D sequence of edges (both open and closed loop) about or along the z-axis while rotating, scaling, and/or morphing the selected edges using various interpolative functions. The code utilizes linear, sine, arc1, arc2, arc3, arc4, log10, parabolic, and cubic transforms independently applied to the scaling, axial, radial, and morphing operations.

Version 0.9 of Spirix.rb has several constraints that are not especially limiting once you understand how it wants to be used. However, my original vision of this code allowed for the use of the temporary axes and user-selected entities to spontaneously create a surface where desired, but that didn't happen. The constraints are that you must (RFC2119) orient geometry relative to the absolute origin and the z-axis for the input parameters to be used properly. Also, the geometry must be passed to the program in the order it was created and any non-grouped entities must be deleted or they will be used as part of the selection. For a more detailed explanation, see the Instructions pages (the code is in the Code folder, of course).

Feel free to alter the program in any way that you wish. However, please include the first two lines of copyright information in any derivative work(s).

Have fun!

PS: Some models created with Spirix can be found at https://3dwarehouse.sketchup.com/user.html?id=1824658900641239202016828

PPS: Works with Sketchup 8 as well.

Version 0.9 has been updated to 1.4 and is available on the code page.