A - Spirix Surface

Installation

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

http://sites.google.com/site/spirixcode/code

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\

Launch SketchUp and you should find a new option called Spirix under the Plugins 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 function. The Create Pattern function can be used to create copies of named groups using the Spirix transformations.

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

To test your installation, start a new model and create a line from the origin to some point along the x-axis:

Select the Create Surface option and click OK using the defaults to generate a circular surface:

Spirix used the line you created and revolved it one revolution about the z-axis creating 24 triangular segments that are now in their own group.

Overview

To better understand how to manipulate the parameters to generate the desired outcome, let's take a look at the various inputs in more detail:

Name - The group that is created will have this optional name.

Revolutions - If this input is not zero, then the selected entities will be revolved about the z-axis the number of times specified - A negative value may be used to reverse the direction of revolution - If this input is zero, then the selected entities will be extruded along an axis parallel to the z-axis.

Rotations - If this input is not zero, then the selected entities will be rotated about the centroid of the selection the number of times specified - If Revolutions is not zero, then the rotation will be performed about an axis parallel to the y-axis - If Revolutions is zero, the rotation will be performed about an axis parallel to the z-axis - A negative value may be used to reverse the direction of rotation.

Plane - When rotating about the centroid (plus any offsets), the rotation is nominally performed parallel to the X/Y plane if Revolutions = 0 or the Y/Z plane if Revolutions != 0. This is the default behavior when selecting "Axes" for this parameter. If it is desired to perform the rotation in the plane of the geometry, select "Face" instead. NOTE: The facial plane is defined by two vectors from the centroid to the start and end points of the first edge defined. If either of these are zero or there is only one edge, this operation will fail.

Interpolation - As other transforms are applied, the rotations will be applied according to the Interpolation selected - Currently supported are: linear, sine, and arc1.

X Centroid Offset - Only used if Rotations is not zero - If X Centroid Offset is not zero, then the Rotations will be applied about the offset specified instead of the centroid - The offset is assumed to be parallel to the x-axis (if "Face" is selected above, the offsets will first be projected onto the facial plane before use).

Y/Z Centroid Offset - Only used if Rotations is not zero - If Y/Z Centroid Offset is not zero, then the Rotations will be applied about the offset specified instead of the centroid - If Revolutions is not zero, the offset is assumed to be parallel to the z-axis - If Revolutions is zero, then the offset is assumed to be parallel to the y-axis (if "Face" is selected above, the offsets will first be projected onto the facial plane before use).

Segments - This specifies the total number of segments created using the selected entities.

Scale - If this input is not 1.0, then the selected entities will be scaled relative to the centroid during transformation - If Morphing is involved, the scaling will apply to the current morphed points relative to the centroid of the initial entity selection - The scaling transform will utilize the Interpolation specified in the next input - A scale factor of zero is allowed and will degenerate to a point.

Interpolation - As other transforms are applied, the scaling will be applied according to the Interpolation selected - Currently supported are: linear, sine, arc1, arc2, arc3, arc4, log10, parabolic, and cubic.

Height - If Revolutions is not zero, then this input will determine the total movement parallel to the z-axis - If Revolutions is zero, then this input determines the length of extrusion parallel to the z-axis - A negative value may be used to reverse the direction of extrusion - If the Height is not zero, then the Interpolation specified in the next input will be applied.

Interpolation - As other transforms are applied, the z-axis movement will be determined according to the Interpolation selected - Currently supported are: linear, sine, arc1, arc2, arc3, arc4, log10, parabolic, and cubic.

Delta Radius - Delta Radius specifies the total radial (direction of the positive X-axis) movement involved - In combination with the Revolutions, this produces a spiral that increases by Delta Radius - A negative value decreases by Delta Radius - The radial movement is determined by the Interpolation specified in the next input.

Interpolation - As other transforms are applied, the radial movement will be determined according to the Interpolation selected - Currently supported are: linear, sine, arc1, arc2, arc3, arc4, log10, parabolic, and cubic.

Morphing - If Start Group and End Group are both specified and they are not the same set of points, then the Morphing interpolation selected will be applied to the morphing of the Start Group into the End Group - Currently supported are: linear, sine, arc1, arc2, arc3, arc4, log10, parabolic, and cubic.

Start Group - The name of a group created with the Spirix Create Group program - If only the Start Group is specified, the group will be used as the input entities instead of open model geometry - If the following End Group is specified as well, then the Start Group will be the starting shape for a Morphing transformation.

End Group - The name of a group created with the Spirix Create Group program - If specified, the group will be used with the Start Group and provide the final shape for a Morphing transformation.

Smoothing - This input allows for selection of the smoothing options available.

Offset - If this input is zero, then the usual surface will be created regardless of the next selection. If this input is not zero, then the next selection will determine which of the five related offset surfaces are created. A positive offset will create surfaces on the side of the positive-facing polygons while a negative offset will produce surfaces on the negative-facing side. Using too large of an offset inside a smaller radius will create predictable, but invalid surface geometry (i.e., it will fold or cross back on itself). If an edge degenerates to a single point, then the offset surface creation will fail silently.

Surface - Choosing Surface will create a new surface that is offset from the original by the specified offset amount. Choosing Side 1 or Side 2 will create either of the two side "skirts" while choosing End 1 or End 2 will create the end "skirts."

Transformation Order

It is important to understand the order in which the various transforms are applied. Armed with that information, you can more intuitively understand the results of various combinations of inputs.

  • Morphing - If two group names are given and they are not the same set of points, the Interpolation of group 1 to group 2 will occur first (this is a true 3D operation) - a group of intermediate points is produced.
  • Scaling - If the Scale factor is not 1.0, then the points are scaled about the 3D centroid of the list of points using the Interpolation selected.
  • Rotation - If the Rotations value is not zero, then the points are rotated about the 3D centroid plus the offset(s) using the Interpolation selected - The axis of rotation is parallel to the Z-axis if the value for Revolutions is zero, else it is parallel to the negative Y-axis if Revolutions is not zero, unless the "Face" option is selected.
  • Delta X - If Delta Radius is not zero, it will be applied to translate the points in the direction of the positive X-axis - Effectively, an interpolated value is added to the X-coordinate of each point.
  • Height - If Height is not zero, an interpolated value will be added to each Z-coordinate.
  • Revolution - Once all other transforms have been made in their original orientation (and assuming that the value for Revolutions is not zero), the points will be revolved about the Z-axis using the Interpolation specified [Note: The create_spirix_surface() function is called with the 4th and 5th parameters set to the origin and axis of rotation - These are hard-coded as "[0,0,0], [0,0,1]", but could be any valid Point3D and Vector3d combination and the create_spirix_surface() function will perform the Revolutions operation about this location - However, the other transforms will still be computed using the model axes.]
  • Offset - Once the primary surface nodes are defined, the offset (if not zero) is applied to create a second set of nodes; these are then used to generate the polygons for the desired surface.