Skip to content
Jeff Eberl edited this page Jan 10, 2021 · 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.

Overview image

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:

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.

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.

Masks

Masks can impose a limit on a layer's boundaries. They can be added only to a new layer, and only from the new layer dialog.

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

Tracks

Tracks are a bit abstract, so we draw a green line indicating where the track is. The basic idea is that you can control where the center of the shape is, and how it moves around each loop. The rest of the shape drawing is then based on the location of the track during that loop.

track 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 found at the bottom of each layer's settings.

Connection to Next Layer

To try to hide connections to the next layer, you could add some "Point" shapes. But if you're really trying to just follow the perimeter, it may be easier to just select "Along perimeter" and let the code wrap around the outside of the table for you.

Draw portion of path

Sometimes it is just easier to not draw the entire path. This will let you set up everything about the path, but then just not create the whole path

Backtrack at end

When you do want the whole path, but you want to backtrack a little at the end (probably to make connection to the next layer easier), you should use this function.

Rotate Starting Point

This will simultaneously change where on the shape you start, along with where you end, so you will create the same shape in general, but it will start and end at a different part of the shape. This is especially helpful on the next shape to try to connect the previous shape in a pleasing way.

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

Clone this wiki locally