Skip to content
Jeff Eberl edited this page Oct 13, 2023 · 21 revisions

Sandify

What is it?

Sandify is working on a solution to turn your cold, empty hearted, emotionless sand tables into cold, empty hearted emotionless sand table robots with enchanting patterns.

Click here for an example of using sandify in video format:

loom_overview

Sandify is a labor of love, but if you'd like to support me financially, I do have a Donation system set up. Or just PayPal

Instructions

Part of the fun of Sandify is playing it like you would a xylophone.

Try it out first. The goal is to make it easy to make your first pattern by just clicking and scrolling, finding something you like.

Here are some features that you might miss the first time through:

New Shape

Each Layer in your pattern starts with a shape. You can change the type of the shape from the Type drop down menu.

change shape gif

Clicking the + button under the layer list will let you create a second layer, after selecting the new shape.

new layer gif

Add Effects

The basic shapes are just the start though. Effects will be applied to the base shape, and turn them into patterns useful for sand drawings.

Try the Loop and Mask Effects first, and experiment by combining many effects for something unique.

loop gif

Mask Effects can impose a limit on a layer's boundaries. They can be added to any layer.

masks gif

Import

You can import thr files or gcode files to use in sandify. Sandify can't lift the pen, so only XY moves are considered from gcode files, not Z lifts.

Use the menu and select File->Import...

import gif

Layers

Sandify can create complex patterns by running one shape after another. You can add a wipe at the beginning, or carefully combine shapes to make interesting art.

layers gif

Pay close attention to the "Point" shape, which is really useful when combining shapes to make the connecting lines go exactly where you want.

Shapes also allow reversing, which will help you avoid clobbering the shapes after they are done.

Functions

In the Spin and Grow options, you can opt to use a function instead of a constant. This can make some really neat patterns. Most basic math functions are available. Currently, the only variable I provide is i, which is the number of the loop (and it is a decimal, so i might be 1.5 halfway through the second loop).

functions gif

Fine Tuning

These features are great at connecting multiple layers into one pattern without clobbering your work. They are a bit rougher around the edges, but they have been very useful for making great multi layer patterns.

These features can be added to any layer as an effect.

Machine

The machine tab lets you set options specific to your machine. These settings are kept from session to session (mostly) to save you from having to type them over and over again.

These values affect the limits of the pattern. So they don't have to be the limits on your machine. For example, if you want to just limit a drawing to 1/4 of your machine, you might set the min/max limits to that quadrant of the machine. Or if you want to draw a growing star, limited to inside a circle, you can do that with the Polar limits.

Here is a rundown of the options:

  • Rectangular Machine: A machine with a min and max width and height.
  • Polar Machine: A machine with a max radius.
  • Min/Max X: The minimum and maximum values for the X axis, which is assumed to be the left-right axis.
  • Min/Max Y: The minimum and maximum values for the Y axis, which is assumed to be the up-down axis.
  • Max Radius: This is the size of the table from the center to the edge of the circle. On a Sisyphus table, this is really just a guide, because the pattern will get the output normalized. Patterns designed for a 250mm table will just be scaled larger on a 1m table. Setting this to your table will help the preview be more accurate.
  • Start/End point: This helps polar tables start or end patterns at the center or the perimeter by adding points on the center or perimeter.
  • Force Origin: Force the first or last point to be at one of the corners. This is useful when combining gcode outside of sandify, to return the machine to a known location.

Try to minimize perimeter moves. This will abandon the original order of the lines, and instead, finish the pattern by reducing the amount of time spent around the edges of the table. This can also change the look of the pattern, because it may not draw the line segments in the same order (and sand can compound like that) but it does move in the exact same line segments, and can save on file size and machine time.

Export

The export button opens the export dialog. The export options will be kept from session to session (mostly) to save you from having to putting in the same options over and over.

Export variables

We have a few keywords that might be helpful in the export pre and post script sections. If we find these in curly braces, we will replace them with the calculated value:

ex: G1 X{startx} Y{starty} will be replaced with G1 X100 Y200 if the first point is 100,200.

  • startx, starty: The first point in the pattern
  • endx, endy: The last point in the pattern
  • minx, miny: The smallest x and the smallest y (these probably won't be from the same point).
  • maxx, maxy: The largest x and the largest y (these probably won't be from the same point).

Pen example

If you have a pen attached to your machine, you might want to use a script like this to set up the pen.

Program start code:

G0 Z10 F300                     ; lift the pen
G0 X{startx} Y{starty} F1200    ; Go above the starting location
G0 Z-0.4 F300                   ; Drop the pen to negative 0.4mm
G1 F1200                        ; set the speed to 20mm/s

Program end code:

G0 Z10 F300                 ; lift the pen
G0 X{minx} Y{maxy} F1200    ; Move the pen out of the way

Output Types

GCode

GCode will output gcode meant for marlin/grbl type machines. The output is going to be mostly G1 X... Y.... Even if you selected the polar machine in the machine tab, these values are going to be x and y. This doesn't have to be a sand table output. You can also attach a pen to a 3D printer and draw sandify patterns on the bed.

Theta Rho

Theta Rho is the format for Sisyphus tables. It is a long list of theta rho, which is just the angle from the center (absolute, accumulating with each rotation), and the normalized distance from the center (0,1). This format can be used with the rectangular limits on the machine tab.

The maximum rho value will help to "pull" patterns in from the outside if the machine makes a rho of 1.0 outside the viewable area.

SVG

SVG will save the path in an SVG format. You can import that into inkscape, or just use it as an image. The svg format is used for drawing robots like axidraw. Let me know if you use it. I'd love to see it in action.

Sand Machine

Anything that uses gcode (or thr files) can be used with sandify. But the machine this was designed for is the ZenXY on V1Engineering.com.

ZenXY was inspired by the awesome Sisyphus Kinetic Art Table by Sisyphus Industries, which is also supported.

Github

Sandify is hosted on github.io

Please post any problems, feature requests or comments in the github issues: Sandify Issue Tracker

Sandify is a community project. If you're interested, join us.

License

Sandify is licensed under the MIT license. Patterns that you create and gcode generated with sandify are not covered under the sandify license (they are your work, and are your copyright).

Sandify License