| // Spray Can Tool | |
| 
 | |
|   var width=100, dotSize=1, rate=6; | |
| 
 | |
|   macro 'Spray Can Tool - C123D20D22D24D41D43D62D82Da2C037L93b3D84Dc4L75d5L757f Ld5dfLa7d7LabdbLa9d9LacdcLa7ac' { | |
|        setLineWidth(dotSize); | |
|        radius=width/2; radius2=radius*radius; | |
|        start = getTime(); | |
|        autoUpdate(false); | |
|        n = 25*exp(0.9*(10-rate)); | |
|        if (n<=5) n = 0; | |
|        while (true) { | |
|           getCursorLoc(x, y, z, flags); | |
|           if (flags&16==0) exit(); | |
|           x2 = (random()-0.5)*width; | |
|           y2 = (random()-0.5)*width; | |
|           if (x2*x2+y2*y2<radius2) { | |
|               x += x2; | |
|               y += y2; | |
|               drawLine(x, y, x, y); | |
|               if (getTime()>start+50) { | |
|                   updateDisplay(); | |
|                   start = getTime(); | |
|                } | |
|           } | |
|           for (i=0; i<n; i++); | |
|       } | |
|   } | |
| 
 | |
|   macro 'Spray Can Tool Options' { | |
|      Dialog.create("Spray Can Options"); | |
|      Dialog.addNumber("Spray Width (pixels):", width); | |
|      Dialog.addNumber("Dot Size (pixels):", dotSize); | |
|      Dialog.addNumber("Flow Rate (1-10):", rate); | |
|      Dialog.show(); | |
|      width = Dialog.getNumber(); | |
|      dotSize = Dialog.getNumber(); | |
|      rate = Dialog.getNumber(); | |
|      if (rate<1) rate = 1; | |
|      if (rate>10) rate = 10; | |
|  }
 |