After we can create different primitive shapes, we start to combine them together. We cannot simply put all the primitive shapes within one single shape rule, like:

startshape MyShape rule MyShape { CIRCLE {} TRIANGLE {} SQUARE {} }

Every shape command comes with parameters. We work with the translation parameters **x** and **y** to move the shape around in the canvas.

startshape MyShape rule MyShape { CIRCLE {x -2} TRIANGLE {} SQUARE {x 2} }

startshape MyShape rule MyShape { CIRCLE {y 2} TRIANGLE {} SQUARE {y -2} }

startshape MyShape rule MyShape { CIRCLE {x 2 y 2 size 0.8} TRIANGLE {size 2} SQUARE {x -2 y -2 size 0.5} }