<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wikidot="http://www.wikidot.com/rss-namespace">

	<channel>
		<title>Contraptor talk (new threads)</title>
		<link>http://www.contraptor.org/forum/c-97638/contraptor-talk</link>
		<description>Threads in the forum category &quot;Contraptor talk&quot; - questions, problems, ideas, suggestions, discussions</description>
				<copyright></copyright>
		<lastBuildDate>Mon, 06 Feb 2012 03:38:46 +0000</lastBuildDate>
		
					<item>
				<guid>http://www.contraptor.org/forum/t-399704</guid>
				<title>Deadlock found...</title>
				<link>http://www.contraptor.org/forum/t-399704/deadlock-found</link>
				<description>Deadlock found in firmware</description>
				<pubDate>Mon, 10 Oct 2011 22:15:12 +0000</pubDate>
				<wikidot:authorName>japieb</wikidot:authorName>				<wikidot:authorUserId>1215344</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>I've been adapting the firmware to make it usefull for a CNC foam cutter I am going to build.</p> <p>In doing so I found a deadlock situation that also exists in the original firmware:</p> <p>the fragment below can (and did!) result in a deadlock when the G0 command finishes while the G90 command is being handled<br /> G91<br /> G00 X1.0<br /> G90</p> <p>Situation</p> <p>The G00 step is running<br /> The G90 command is received<br /> This line locks the move_queue (process_string.pde)<br /> // Lock move queue while adding new move<br /> 172 move_queue_lock_main = true;<br /> The G0 step finishes<br /> 470 // If finished, start next move<br /> 471 if ( move_finished ) {<br /> 472<br /> 473 // Make sure queue not being modified by<br /> 474 // main routine and then advance<br /> 475 if (!move_queue_lock_main) advance_move_queue();<br /> 476<br /> 477 // If the queue is locked by the main routine, we can't hang about<br /> 478 // and wait for it as this would freeze up the whole system,<br /> 479 // so we just wait until the next time the interrupt routine<br /> 480 // is called and try again<br /> 481 }<br /> The G90 command waits until the move is done (process_string.pde)<br /> 303 while (moving) {} // Do not try and do this while moving</p> <p>Now the move_queue is locked, and moving is still true =&gt; deadlock</p> <p>I fixed this situation by adding a 'move_queue_main_lock=false;' line before all 'while (moving) {}' lines</p> <p>Jaap.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://www.contraptor.org/forum/t-388209</guid>
				<title>GRemote - mini host for Arduino GCode Interpreter</title>
				<link>http://www.contraptor.org/forum/t-388209/gremote-mini-host-for-arduino-gcode-interpreter</link>
				<description></description>
				<pubDate>Tue, 06 Sep 2011 03:13:52 +0000</pubDate>
				<wikidot:authorName>Albanetc</wikidot:authorName>				<wikidot:authorUserId>381022</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <div class="image-container floatleft"><a href="http://www.flickr.com/photos/40642599@N07/6117941587/"><img src="http://farm7.static.flickr.com/6200/6117941587_00a8b3daa3_z.jpg" alt="flickr:6117941587" class="image" /></a></div> <p>I've been using a hacked together Python script for communication with Arduino GCode Interpreter, including sending gcode files. This has generally worked well, but it's not very convenient to jog a robot from command line. I also thought it would be great to have a simple and intuitive UI with these basic functions, and use keyboard for jogging.</p> <p>There seems to be plenty of host sotfware out there, including things specifically written for *duino based GCode interpreters, like <a href="https://github.com/damellis/gctrl" target="_blank">gctrl</a> , as well as 3D-printing oriented hosts like Reprap Host and ReplicatorG. There are also numerous scripts in Python and other languages. They all probably work well, but I wanted a UI and a bit more functionality usually found in command line hosts; on the other hand, a lot of functionality and controls in 3D-printing hosts would probably be an overkill for someone who just wants the basics.</p> <p>After spending several evenings dabbling in <a href="http://processing.org/">Processing</a> and <a href="http://www.sojamo.de/libraries/controlP5/">controlP5</a> (a great UI library for Processing) here is something with a working name of GRemote. It can do three things - issue GCode commands from text input, move the robot with jog buttons and send GCode files. It's intended to work with Arduino Gcode Interpreter, but it should also work with any firmware which understands ASCII GCode and whose responses are &quot;start&quot; for the initialization, and &quot;ok&quot; is the last response for every command sent. The baud rate is fixed at 38400 though that should probably be exposed in the UI via another dropdown (next to the serial port).</p> <p>Hopefully the following is self evident from the UI and common sense:</p> <p>Jogging only works in Relative mode and 1 jog distance is 1 unit - mm or inch, depending on the mode. Only X,Y,Z jog buttons work at the moment as I'm not yet clear what to assign to INS, DEL, END (more axes?) and to a lesser degree, HOME.</p> <p>The Absolute and Inch modes are toggles - unless remote is sending a file, these can be clicked and remote will issue appropriate command to the firmware. The commands being sent to firmware (when sending a file or from text input) are also inspected and in some cases (like the Absolute/Inch mode change) acted upon.</p> <p>The &quot;console&quot; display shows last 10 lines of what's going on, and on Linux, these are also written out to terminal from which GRemote is launched. On Windows, I'm not sure how to bring up a separate console, other than running source in Processing PDE. I'm guessing it's simple and should be easy to do with some research - if not, logging to file can be added.</p> <p>File send can be paused (making jog and mode controls available), resumed and cancelled. Few words about pausing:</p> <p>Jogging has to be done either with limit switches operational, or without hitting physical constraints of the axis. Hitting the physical axis constraints make steppers skip steps which moves coordinate system origin. Not a big deal if you're just jogging, but if you've paused a file and intend to resume it, it's a problem.</p> <p>Upon resuming the file, the Absolute and Inch mode settings should be the same as before pausing - otherwise things will go wrong. Maybe remote should remember the mode state before pausing and force-restore it upon resuming.</p> <p>If the file being sent uses Absolute mode, after pausing and resuming the file, the very next command should go to the right position even if robot was jogged elsewhere. If the file being sent uses Relative mode, the robot should be manually returned to pre-pause position before resuming.</p> <p>The zip file with Windows, Mac, Linux versions and the source is attached to this thread: <a href="http://www.contraptor.org/local--files/forum:thread/GRemote.zip">http://www.contraptor.org/local--files/forum:thread/GRemote.zip</a><br /> Unzip the appropriate application.* folder to your local machine and run GRemote.exe or GRemote bash script.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://www.contraptor.org/forum/t-386961</guid>
				<title>debugged firmware ?</title>
				<link>http://www.contraptor.org/forum/t-386961/debugged-firmware</link>
				<description>I&#039;m looking for a debugged firmware</description>
				<pubDate>Thu, 01 Sep 2011 02:26:11 +0000</pubDate>
				<wikidot:authorName>cybair</wikidot:authorName>				<wikidot:authorUserId>1183846</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Hi all,</p> <p>Anybody has a debugged version of Chris Meighan's &quot;reprap new firmware&quot;? I was not lucky with the version I downloaded from Sourceforge/Contraptor. With Arduino 0017, I got this error: 'CHAR WORD [128]' REDECLARED AS DIFFERENT KIND OF SYMBOL. With Arduino 0018 I got this error: EXTRUDER_MOTOR_DIR_PIN WAS NOT DECLARED IN THIS SCOPE.</p> <p>Any help appreciated,</p> <p>ProfScrew</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://www.contraptor.org/forum/t-384267</guid>
				<title>problems with contraptor firmware</title>
				<link>http://www.contraptor.org/forum/t-384267/problems-with-contraptor-firmware</link>
				<description>Problems using contraptor, on previously working machine</description>
				<pubDate>Mon, 22 Aug 2011 01:55:12 +0000</pubDate>
				<wikidot:authorName>ofcsilencer</wikidot:authorName>				<wikidot:authorUserId>1152583</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>I am having some issues with the contraptor firmware. I have a setup I use with grbl, but I recently acquired another machine and would like to mix it up and try contraptor. For testing I swapped out my grbl loaded arduino for a stock, and rewired to match the pins on my known working machine. I did try a generic stepper control sketch, and the axis' moved properly with a stock arduino.</p> <p>loading contraptor, I stepped down from arduino 22 to 21, so it would compile and upload properly. After it uploaded, used serial to connect at ~38400 and sent it &quot;x10&quot; or &quot;y15&quot; etc just random stuff that under grbl would make it move. the machine responds &quot;ok&quot; but nothing ever moves.</p> <p>being that my test sketch works properly, I believe I have a problem with a library or something not being where it should be. I am using a straight copy of the firmware from sourceforge. I have triple checked the pinouts.</p> <p>I am not at all sure what is causing this. any input would be appreciated.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://www.contraptor.org/forum/t-375149</guid>
				<title>Makerslide+Contrapteur</title>
				<link>http://www.contraptor.org/forum/t-375149/makerslide-contrapteur</link>
				<description></description>
				<pubDate>Fri, 22 Jul 2011 10:36:12 +0000</pubDate>
				<wikidot:authorName>arthurwolf</wikidot:authorName>				<wikidot:authorUserId>471107</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Hi !</p> <p>A while ago I&nbsp;contacted Barton Bring from the <a href="http://www.kickstarter.com/projects/93832939/makerslide-open-source-linear-bearing-system">Makerslide</a> project about <a href="http://www.contraptor.org/forum/t-293577/metric-contrapteur:mini-cnc-project">Contrapteur</a> ( 20mm Contraptor clone ), and this morning I&nbsp;received a few of the wheels in advance in the mail. Thanks !</p> <a href="http://www.flickr.com/photos/arthurwolf/5963205613/"><img src="http://farm7.static.flickr.com/6148/5963205613_d2326cdc34.jpg" alt="flickr:5963205613" class="image" /></a> <a href="http://www.flickr.com/photos/arthurwolf/5963205295/"><img src="http://farm7.static.flickr.com/6026/5963205295_03703b4930.jpg" alt="flickr:5963205295" class="image" /></a> <p>The wheels look very nice. The bearings fit so well that I was not able to remove them for the picture.</p> <p>So the plan for today is to find ways to get Makerslide and Contrapteur to work together.</p> <p>I don't have the Makerslide rail ( yet ). This would work out of the box with Contrapteur ( also 20mm based ), and I'll try it as soon as the Kickstarter reward gets here.</p> <p>Second option would be to make a rail specific to Contrapteur, like this :&nbsp;</p> <a href="http://www.flickr.com/photos/arthurwolf/5785580086/"><img src="http://farm6.static.flickr.com/5107/5785580086_9220f85f77.jpg" alt="flickr:5785580086" class="image" /></a> <p>That should work well, and I'll try it soon ( diagonal lasercutting ! ), but I needed something simpler for today. I went for the &quot;angle as rail&quot; option Contraptor uses for the sliding element.</p> <p>There are two options here : the wheels in a diagonal plane and the angle in the &quot;normal&quot; plane, or the angle in a diagonal plane and the wheels in the &quot;normal&quot; plane. Chose the first one here, but I'd like to try the other one too.</p> <p>First part is a mount for the wheels, lasercut in 4mm acrylic :</p> <a href="http://www.flickr.com/photos/arthurwolf/5963257047/"><img src="http://farm7.static.flickr.com/6020/5963257047_f5d066106f.jpg" alt="flickr:5963257047" class="image" /></a> <a href="http://www.flickr.com/photos/arthurwolf/5963763570/"><img src="http://farm7.static.flickr.com/6128/5963763570_ffb370876f.jpg" alt="flickr:5963763570" class="image" /></a> <a href="http://www.flickr.com/photos/arthurwolf/5963763340/"><img src="http://farm7.static.flickr.com/6009/5963763340_c69433c5d3.jpg" alt="flickr:5963763340" class="image" /></a> <a href="http://www.flickr.com/photos/arthurwolf/5963763094/"><img src="http://farm7.static.flickr.com/6146/5963763094_a9fae41709.jpg" alt="flickr:5963763094" class="image" /></a> <a href="http://www.flickr.com/photos/arthurwolf/5963205853/"><img src="http://farm7.static.flickr.com/6128/5963205853_cf464a2cbe.jpg" alt="flickr:5963205853" class="image" /></a> <a href="http://www.flickr.com/photos/arthurwolf/5963761530/"><img src="http://farm7.static.flickr.com/6001/5963761530_e163af6201.jpg" alt="flickr:5963761530" class="image" /></a> <p>The bending was made with a hot air SMD station. Here is how it looks when sliding on a rail ( contrapteur angle ) :&nbsp;</p> <a href="http://www.flickr.com/photos/arthurwolf/5963207597/"><img src="http://farm7.static.flickr.com/6130/5963207597_8b6514d77b.jpg" alt="flickr:5963207597" class="image" /></a> <a href="http://www.flickr.com/photos/arthurwolf/5963764316/"><img src="http://farm7.static.flickr.com/6137/5963764316_393c4dd49e.jpg" alt="flickr:5963764316" class="image" /></a> <a href="http://www.flickr.com/photos/arthurwolf/5963764024/"><img src="http://farm7.static.flickr.com/6139/5963764024_d0976668dd.jpg" alt="flickr:5963764024" class="image" /></a> <a href="http://www.flickr.com/photos/arthurwolf/5963763826/"><img src="http://farm7.static.flickr.com/6004/5963763826_c72f51093c.jpg" alt="flickr:5963763826" class="image" /></a> <p>It slides very well. Here is a video.</p> <p><iframe width="853" height="510" src="http://www.youtube.com/embed/nTQd-TIkAeE?hd=1" frameborder="0" allowfullscreen=""></iframe></p> <p>It is very smooth, even better than the Contraptor linear rail, and much much easier to assemble.</p> <p>The fact that the part is lasercut allows to make it the exact dimension to fit the angle, so there was not even any adjustment required ( also my brain refuses to understand how the Makerslide eccentric spacers work &#8230; ) it worked the first time after assembly.</p> <p>So now we have two sliding elements on two separate rails, but the goal here was to have a single carriage.</p> <p>Because the bending is made by hand, it is not possible to know exactly it's exact position in the part ( with my current bending skills, it would be different at each bending ), so the distance between the two parts can vary, so it's not possible to make a part with holes that would fit them exactly for sure.</p> <p>Here is the solution I came up with :</p> <a href="http://www.flickr.com/photos/arthurwolf/5963257079/"><img src="http://farm7.static.flickr.com/6123/5963257079_77362542df.jpg" alt="flickr:5963257079" class="image" /></a> <a href="http://www.flickr.com/photos/arthurwolf/5963765296/"><img src="http://farm7.static.flickr.com/6143/5963765296_3df156d253.jpg" alt="flickr:5963765296" class="image" /></a> <a href="http://www.flickr.com/photos/arthurwolf/5963764798/"><img src="http://farm7.static.flickr.com/6017/5963764798_6bfafdc275.jpg" alt="flickr:5963764798" class="image" /></a> <p>The &quot;long holes&quot; allow to connect the two parts together even without knowing how further apart they are.</p> <p>Once assembled it looks like this :</p> <a href="http://www.flickr.com/photos/arthurwolf/5963765044/"><img src="http://farm7.static.flickr.com/6121/5963765044_abb6d86f28.jpg" alt="flickr:5963765044" class="image" /></a> <p>And a video of it sliding :</p> <p><iframe width="853" height="510" src="http://www.youtube.com/embed/8yKPNcNNRGc?hd=1" frameborder="0" allowfullscreen=""></iframe></p> <p>This works surprisingly well ! The carriage is very sturdy, the sliding very smooth and silent.</p> <p>Makerslide is awesome, plus it's opensource, plus it's awesome !</p> <p>Plus it's cheap.</p> <p>Plus it's 20mm based.</p> <p>I can't wait to play more with it ( next thing will probably test having the angle at a diagonal and the wheels in the normal plane ).</p> <p><strong>EDIT</strong> :&nbsp;Spent all the rest of the day trying to lasercut rails for it :&nbsp;diagonal lasercutting is veeeery difficult ! Finally got one rail right, see pics below :&nbsp;</p> <a href="http://www.flickr.com/photos/arthurwolf/5964873579/"><img src="http://farm7.static.flickr.com/6026/5964873579_79dde34aaa.jpg" alt="flickr:5964873579" class="image" /></a> <a href="http://www.flickr.com/photos/arthurwolf/5964873153/"><img src="http://farm7.static.flickr.com/6005/5964873153_7d30ca47d9.jpg" alt="flickr:5964873153" class="image" /></a> <a href="http://www.flickr.com/photos/arthurwolf/5964872747/"><img src="http://farm7.static.flickr.com/6142/5964872747_03e3644bf4.jpg" alt="flickr:5964872747" class="image" /></a> <a href="http://www.flickr.com/photos/arthurwolf/5964872747/"><img src="http://farm7.static.flickr.com/6142/5964872747_03e3644bf4.jpg" alt="flickr:5964872747" class="image" /></a> <a href="http://www.flickr.com/photos/arthurwolf/5965428764/"><img src="http://farm7.static.flickr.com/6147/5965428764_f69305bf7b.jpg" alt="flickr:5965428764" class="image" /></a> <a href="http://www.flickr.com/photos/arthurwolf/5964871359/"><img src="http://farm7.static.flickr.com/6028/5964871359_d0e9b4e5a7.jpg" alt="flickr:5964871359" class="image" /></a> <a href="http://www.flickr.com/photos/arthurwolf/5964870985/"><img src="http://farm7.static.flickr.com/6001/5964870985_6f5c3f732c.jpg" alt="flickr:5964870985" class="image" /></a> <a href="http://www.flickr.com/photos/arthurwolf/5965427602/"><img src="http://farm7.static.flickr.com/6016/5965427602_69cb2f1c5b.jpg" alt="flickr:5965427602" class="image" /></a> <p>It works quite well, the wheels slide well and it seems sturdy.</p> <p>But it's a lot of work to make : the lasercutter must be ajusted at the 1/10mm, the diagonal support was a lot of work, and even thenit takes several tries to get a rail right. Getting better at it thought.</p> <p>Tomorrow I'll try to make another one, and use the two to support a carriage.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://www.contraptor.org/forum/t-368946</guid>
				<title>What need I buy if I need a xy plotter only</title>
				<link>http://www.contraptor.org/forum/t-368946/what-need-i-buy-if-i-need-a-xy-plotter-only</link>
				<description></description>
				<pubDate>Mon, 27 Jun 2011 08:36:46 +0000</pubDate>
				<wikidot:authorName>createfile</wikidot:authorName>				<wikidot:authorUserId>998223</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>What need I buy if I need a xy plotter only ( how much is that shipping to Hongkong )\\(I need that plotter support rise the pen up and put the pen down, also support use knife instead of pen to cut paper)</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://www.contraptor.org/forum/t-366361</guid>
				<title>Sliding element for T-slot</title>
				<link>http://www.contraptor.org/forum/t-366361/sliding-element-for-t-slot</link>
				<description></description>
				<pubDate>Mon, 13 Jun 2011 06:29:24 +0000</pubDate>
				<wikidot:authorName>Albanetc</wikidot:authorName>				<wikidot:authorUserId>381022</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <a href="http://www.flickr.com/photos/40642599@N07/4396723613/"><img src="http://farm5.static.flickr.com/4069/4396723613_1ccd2662bf.jpg" alt="flickr:4396723613" class="image" /></a> <a href="http://www.flickr.com/photos/40642599@N07/5827197085/"><img src="http://farm4.static.flickr.com/3260/5827197085_da82caf2d1.jpg" alt="flickr:5827197085" class="image" /></a> <p>A while back I made a prototype of the sliding element for T-slot. Since then there were a few tweaks to it, however it was never really tried in action.</p> <p>I received an email recently asking whether it was possible to use Contraptor to build contraptions of larger size (e.g. 2x4 ft). This would definitely call for T-slot - which I happen to have several standard lengths of (12&quot;, 18&quot;, 24&quot;). I also have several fabricated T-slider prototypes. To test a number of assumptions about how these sliders would behave, I intend to build a robot with light X and heavier Y driven by belts, and heavy Z driven by four leadscrews. The robot would be ~2ft in X, ~1.5ft in Y and ~1ft in Z - but it could be scaled up. The actual work volume would be smaller than these dimensions. The screenshot on the right is work-in-progress on that robot.</p> <p>So far I've assembled the basic T-slider belt drive. The test below uses Arduino GCode Interpreter and grblShield (1/8 microstepping). The speed is 600 IPM.</p> <p><iframe width="560" height="349" src="http://www.youtube.com/embed/l-rlX9l9bLU" frameborder="0" allowfullscreen=""></iframe></p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://www.contraptor.org/forum/t-365199</guid>
				<title>Noise reduction</title>
				<link>http://www.contraptor.org/forum/t-365199/noise-reduction</link>
				<description>Reducing vibration and noise</description>
				<pubDate>Mon, 06 Jun 2011 05:14:11 +0000</pubDate>
				<wikidot:authorName>Albanetc</wikidot:authorName>				<wikidot:authorUserId>381022</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p><strong>Background</strong><br /> <a href="http://www.contraptor.org/forum/t-274259/silenced-motor-mount">http://www.contraptor.org/forum/t-274259/silenced-motor-mount</a><br /> <a href="http://www.contraptor.org/forum/t-193855/noise-control">http://www.contraptor.org/forum/t-193855/noise-control</a></p> <p>Noise has been somewhat of a problem with mini CNC. The machine is fairly quiet at most of the feedrates. However there are a couple of feedrates that result in loud and nasty vibration. In my testing these are 2.1 IPM and to a lesser degree, 4.2 IPM. Any diagonal move that happens to have one of the axes moving at these speeds becomes a problem.</p> <p><strong>Short version</strong></p> <p><iframe width="560" height="349" src="http://www.youtube.com/embed/mgyIsCEZ1a0" frameborder="0" allowfullscreen=""></iframe></p> <p>To reduce the noise, I basically followed Arthur's previous work at the link above and added some degree of vibration isolation between the following:</p> <p><strong>Leadscrew and bearing</strong><br /> Instead of steel nut, a plastic nut is in contact with the bearing. Not visible in the picture, there is some teflon tape wrapped around the leadscrew where the (ball) bearing is. This prevents leadscrew from rattling around. I added the thrust bearing for reasons other than noise control, but it also has a plastic nut. The combination of plastic nuts with steel nuts should eliminate the need for spring washers (which were skewing the nuts).</p> <a href="http://www.flickr.com/photos/40642599@N07/5801740695/"><img src="http://farm3.static.flickr.com/2336/5801740695_075d499a9d.jpg" alt="flickr:5801740695" class="image" /></a> <a href="http://www.flickr.com/photos/40642599@N07/5801738537/"><img src="http://farm4.static.flickr.com/3432/5801738537_a77b6987e6.jpg" alt="flickr:5801738537" class="image" /></a> <p><strong>Motor and motor mount</strong><br /> The motor is connected to the mount with nylon screws and nuts. There are several neoprene washers in between, as well as a pair of grommets in the mount holes (visible on the right pic). I found that metal screws didn't really work well there. The motor flexes on this mounting, but not in the twisting direction so it seems OK.</p> <a href="http://www.flickr.com/photos/40642599@N07/5801732997/"><img src="http://farm6.static.flickr.com/5067/5801732997_2e05c128d7.jpg" alt="flickr:5801732997" class="image" /></a> <a href="http://www.flickr.com/photos/40642599@N07/5801735665/"><img src="http://farm6.static.flickr.com/5265/5801735665_71af428af8.jpg" alt="flickr:5801735665" class="image" /></a> <p>The plastic/neoprene parts are fairly cheap in 100 qty at Mcmaster:</p> <p>neoprene washers: #90133A017<br /> rubber grommets: #9600K66<br /> nylon 1/4 nuts: #94900A029<br /> nylon 10-24&#160;3/4 screws: #97263A245<br /> nylon 10-24 nuts: #94900A011</p> <a href="http://www.flickr.com/photos/40642599@N07/5801742227/"><img src="http://farm3.static.flickr.com/2448/5801742227_ca7f67fe1d.jpg" alt="flickr:5801742227" class="image" /></a> <p><strong>Microstepping</strong><br /> I kind of knew this already, but besides vibration isolation, the other important thing that reduces vibration is microstepping. With half stepping, the noise was still too much even with the 2 modifications above. I went an extra step and made a 1/4-20 Delrin nut for X-axis because there was an audible rattle between leadscrew and leadnut; thinking that it would quiet things down. However, with half stepping, that didn't significantly help - but the noise reduction was more pronounced with microstepping. I used TinyG but I'm planning to switch over to grblShield - both are 1/8 step.</p> <p>I measured the following max values using Sound Meter Lite Android app. Anything under 60&#160;dB sounds good enough to me. Again, these are supposed to be worst case scenarios - with the disclaimer they were tested on a single axis.</p> <div style="float:left;"> <table class="wiki-content-table"> <tr> <th>configuration</th> <th>halfstepping</th> <th>microstepping</th> </tr> <tr> <td>as is - tested on Y axis</td> <td>83&#160;dB</td> <td>78&#160;dB</td> </tr> <tr> <td>plastic screws&amp;nuts, washers&amp;grommets on motor mount</td> <td>80&#160;dB</td> <td>&#8212;</td> </tr> <tr> <td>+ plastic nuts and teflon tape at shaft mounts</td> <td>78&#160;dB</td> <td>59&#160;dB</td> </tr> <tr> <td>+ delrin nut</td> <td>76&#160;dB</td> <td>54&#160;dB</td> </tr> </table> </div> <div style="clear:both; height: 0px; font-size: 1px"></div> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://www.contraptor.org/forum/t-364140</guid>
				<title>V-track and V-groove bearing</title>
				<link>http://www.contraptor.org/forum/t-364140/v-track-and-v-groove-bearing</link>
				<description></description>
				<pubDate>Tue, 31 May 2011 05:38:16 +0000</pubDate>
				<wikidot:authorName>Albanetc</wikidot:authorName>				<wikidot:authorUserId>381022</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <a href="http://www.flickr.com/photos/40642599@N07/5779731748/"><img src="http://farm3.static.flickr.com/2322/5779731748_497df76c32.jpg" alt="flickr:5779731748" class="image" /></a> <p>This is a sketch from few months back showing how V-track might be a part of Contraptor. At that time, I looked at the prices of V-tracks and V-groove bearings and found them fairly expensive. Nevertheless I had ordered some material to build and test the prototype, and this weekend I finally got around to it.</p> <p>Below are V-tracks that can attach to Contraptor angle or 1&quot; T-slot. Fabricating wasn't too difficult but took some time. 3/16&quot; holes were drilled in V-track at 2&quot; intervals. 4&quot; intervals could probably also work, but 2&quot; fit nicely with 1ft and 2ft track lengths. One difficult thing was tapping small screw holes in the aluminum bar. I usually drill 1/8&quot; hole and 6-32 screw self-taps into the hole with little effort. This works great in 1/8&quot; thick aluminum. Here, the holes were about 3/8&quot; deep and screws would stop dead after a certain point. I tried 6-32 tap in the power drill to save time and it broke on pull out after stopping too late. Basically the holes had to be tapped manually, advancing about quarter of a turn and then stepping back a couple of turns. Anyhow, this was only needed to be done once as they're not intended to be disassembled.</p> <p>The V-bearing element still needs to be made. I only have 2&#160;V-groove bearings from VXB.com and I'm trying to find them for a reasonable price (not $15 a piece). They are angular contact bearings so they can support combined loads and have very little axial play. The V-track + V-groove bearings with T-slot should be able to handle loads of a larger CNC machine - 1ft x 2ft and perhaps 2ft x 4ft.</p> <a href="http://www.flickr.com/photos/40642599@N07/5779176015/"><img src="http://farm3.static.flickr.com/2281/5779176015_be5fc1fea8.jpg" alt="flickr:5779176015" class="image" /></a><a href="http://www.flickr.com/photos/40642599@N07/5779178893/"><img src="http://farm3.static.flickr.com/2475/5779178893_3855a6913b.jpg" alt="flickr:5779178893" class="image" /></a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://www.contraptor.org/forum/t-348246</guid>
				<title>Sparkfuns stepper controller</title>
				<link>http://www.contraptor.org/forum/t-348246/sparkfuns-stepper-controller</link>
				<description></description>
				<pubDate>Thu, 14 Apr 2011 23:06:15 +0000</pubDate>
				<wikidot:authorName>arthurwolf</wikidot:authorName>				<wikidot:authorUserId>471107</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p><a href="http://www.sparkfun.com/products/10507">http://www.sparkfun.com/products/10507</a></p> <p>I want one !</p> <p>Actually started a design in eagle for just that &#8230; I think I'm going to give up on circuit design, these guys do a much better job.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://www.contraptor.org/forum/t-316487</guid>
				<title>grblShield For Sale</title>
				<link>http://www.contraptor.org/forum/t-316487/grblshield-for-sale</link>
				<description>A off the shelve way to drive Contraptor.</description>
				<pubDate>Thu, 03 Mar 2011 13:21:52 +0000</pubDate>
				<wikidot:authorName>ril3y</wikidot:authorName>				<wikidot:authorUserId>390237</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Alright! So our new grblShield is here! Check it out guys. We will be shipping in 1 - 3 weekish now. grbl v6 works out of box with our shield too.<br /> You can pre-order <a href="https://www.synthetos.com/webstore/index.php/assembled-electronics/grblshield-grbl-arduino-diy-cnc-shield.html">here.</a><br /> The grblShield wiki is <a href="https://www.synthetos.com/wiki/index.php?title=Projects:grblShield">here</a>. Now there is a cheap "buyable" solution to driving Contraptor.</p> <p>ril3y</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://www.contraptor.org/forum/t-306479</guid>
				<title>Pythagoras</title>
				<link>http://www.contraptor.org/forum/t-306479/pythagoras</link>
				<description></description>
				<pubDate>Tue, 08 Feb 2011 20:49:25 +0000</pubDate>
				<wikidot:authorName>arthurwolf</wikidot:authorName>				<wikidot:authorUserId>471107</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Hi.</p> <p>When designing the contrapteur mini-cnc, I had to find out how to place the diagonal bar ( so that the holes of the diagonal bar it right in front of holes in the two other angles.<br /> Now that I have the actual angle to play with, it's quite easy, but in Sketchup, trial and error was quite a burden.</p> <p>Here is an array I used, that gives the round hypotenuses for different angle lengths, it was quite usefull to decide which length to give to which angle :&nbsp;</p> <table class="wiki-content-table"> <tr> <td></td> <th>1</th> <th>2</th> <th>3</th> <th>4</th> <th>5</th> <th>6</th> <th>7</th> <th>8</th> <th>9</th> <th>10</th> <th>11</th> <th>12</th> <th>13</th> <th>14</th> <th>15</th> <th>16</th> <th>17</th> <th>18</th> <th>19</th> <th>20</th> <th>21</th> <th>22</th> <th>23</th> <th>24</th> <th>25</th> <th>26</th> <th>27</th> <th>28</th> <th>29</th> <th>30</th> </tr> <tr> <th>1</th> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <th>2</th> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <th>3</th> <td></td> <td></td> <td></td> <td>5</td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <th>4</th> <td></td> <td></td> <td>5</td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <th>5</th> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td>13</td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <th>6</th> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td>10</td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <th>7</th> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td>25</td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <th>8</th> <td></td> <td></td> <td></td> <td></td> <td></td> <td>10</td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td>17</td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <th>9</th> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td>15</td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <th>10</th> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td>26</td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <th>11</th> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <th>12</th> <td></td> <td></td> <td></td> <td></td> <td>13</td> <td></td> <td></td> <td></td> <td>15</td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td>20</td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <th>13</th> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <th>14</th> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <th>15</th> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td>17</td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td>25</td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <th>16</th> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td>20</td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td>34</td> </tr> <tr> <th>17</th> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <th>18</th> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td>30</td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <th>19</th> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <th>20</th> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td>25</td> <td></td> <td></td> <td></td> <td></td> <td></td> <td>29</td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <th>21</th> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td>29</td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td>35</td> <td></td> <td></td> </tr> <tr> <th>22</th> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <th>23</th> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <th>24</th> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td>25</td> <td></td> <td></td> <td>26</td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td>30</td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <th>25</th> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <th>26</th> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <th>27</th> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <th>28</th> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td>35</td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <th>29</th> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <th>30</th> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td>34</td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> </table> <p>And the Perl script to generate it :</p> <div class="code"> <div class="hl-main"> <pre> <span class="hl-reserved">print</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-string">|| ||~ </span><span class="hl-quotes">"</span><span class="hl-code">, </span><span class="hl-reserved">join</span><span class="hl-brackets">(</span><span class="hl-quotes">'</span><span class="hl-string">||~ </span><span class="hl-quotes">'</span><span class="hl-code">,</span><span class="hl-reserved">map</span><span class="hl-code"> </span><span class="hl-var">$_</span><span class="hl-code"> , </span><span class="hl-number">1</span><span class="hl-code">.</span><span class="hl-number">.30</span><span class="hl-code"> </span><span class="hl-brackets">)</span><span class="hl-code"> , </span><span class="hl-quotes">"</span><span class="hl-string">||</span><span class="hl-special">\n</span><span class="hl-quotes">"</span><span class="hl-code">; </span><span class="hl-reserved">for</span><span class="hl-code"> </span><span class="hl-reserved">my</span><span class="hl-code"> </span><span class="hl-var">$x</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-code"> </span><span class="hl-number">1</span><span class="hl-code"> .. </span><span class="hl-number">30</span><span class="hl-code"> </span><span class="hl-brackets">){</span><span class="hl-code"> </span><span class="hl-reserved">print</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-string">||~ </span><span class="hl-var">$x</span><span class="hl-string"> ||</span><span class="hl-quotes">"</span><span class="hl-code">, </span><span class="hl-reserved">join</span><span class="hl-brackets">(</span><span class="hl-quotes">'</span><span class="hl-string">||</span><span class="hl-quotes">'</span><span class="hl-code">, </span><span class="hl-reserved">map</span><span class="hl-code"> </span><span class="hl-reserved">int</span><span class="hl-brackets">(</span><span class="hl-reserved">sqrt</span><span class="hl-brackets">((</span><span class="hl-var">$_</span><span class="hl-code">*</span><span class="hl-var">$_</span><span class="hl-brackets">)</span><span class="hl-code">+</span><span class="hl-brackets">(</span><span class="hl-var">$x</span><span class="hl-code">*</span><span class="hl-var">$x</span><span class="hl-brackets">)))</span><span class="hl-code">==</span><span class="hl-reserved">sqrt</span><span class="hl-brackets">((</span><span class="hl-var">$_</span><span class="hl-code">*</span><span class="hl-var">$_</span><span class="hl-brackets">)</span><span class="hl-code">+</span><span class="hl-brackets">(</span><span class="hl-var">$x</span><span class="hl-code">*</span><span class="hl-var">$x</span><span class="hl-brackets">))</span><span class="hl-code"> ? </span><span class="hl-reserved">int</span><span class="hl-brackets">(</span><span class="hl-reserved">sqrt</span><span class="hl-brackets">((</span><span class="hl-var">$_</span><span class="hl-code">*</span><span class="hl-var">$_</span><span class="hl-brackets">)</span><span class="hl-code">+</span><span class="hl-brackets">(</span><span class="hl-var">$x</span><span class="hl-code">*</span><span class="hl-var">$x</span><span class="hl-brackets">)))</span><span class="hl-code"> : </span><span class="hl-quotes">'</span><span class="hl-string"> </span><span class="hl-quotes">'</span><span class="hl-code"> , </span><span class="hl-number">1</span><span class="hl-code">.</span><span class="hl-number">.30</span><span class="hl-code"> </span><span class="hl-brackets">)</span><span class="hl-code"> , </span><span class="hl-quotes">"</span><span class="hl-string">||</span><span class="hl-special">\n</span><span class="hl-quotes">"</span><span class="hl-code">; </span><span class="hl-brackets">}</span> </pre></div> </div> <p>Just in case this can help someone else …</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://www.contraptor.org/forum/t-305375</guid>
				<title>Scripted assembly sequences</title>
				<link>http://www.contraptor.org/forum/t-305375/scripted-assembly-sequences</link>
				<description></description>
				<pubDate>Sat, 05 Feb 2011 07:46:23 +0000</pubDate>
				<wikidot:authorName>Albanetc</wikidot:authorName>				<wikidot:authorUserId>381022</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>As described in <a href="http://www.contraptor.org/forum/t-292956/mini-cnc-with-modified-z-axis#post-969904">this thread</a>, I had to make a few changes to the mini-CNC design for various reasons (easier adjustment etc). The assembly screenshots from the mini-CNC page (<a href="http://www.contraptor.org/mini-cnc#assembly">http://www.contraptor.org/mini-cnc#assembly</a>) were all taken manually - quite a long process. Taking them again (and then, again) seems like something that should happen automatically. Previously, there was an idea of encoding assembly sequences in OpenSCAD: <a href="http://www.contraptor.org/forum/t-192150/suggestion:metric-version-please#post-733974">http://www.contraptor.org/forum/t-192150/suggestion:metric-version-please#post-733974</a></p> <p>Sketchup has built-in Ruby interpreter, and I spent last couple of weeks figuring out how Sketchup could interpret an assembly sequence based on a Ruby script. Borrowing some methods from OpenSCAD, I think the script below looks readable. There are 2 classes - Component (which maps to Sketchup component instance) and Assembly (which maps to Sketchup group). The component names are also the file names in the Contraptor library (in Sketchup/Components) folder.</p> <p>The following sequence:</p> <a href="http://www.flickr.com/photos/40642599@N07/5417991468/"><img src="http://farm6.static.flickr.com/5299/5417991468_29633e28ee_m.jpg" alt="flickr:5417991468" class="image" /></a> <a href="http://www.flickr.com/photos/40642599@N07/5417384515/"><img src="http://farm6.static.flickr.com/5259/5417384515_8b3e0c5871_m.jpg" alt="flickr:5417384515" class="image" /></a> <a href="http://www.flickr.com/photos/40642599@N07/5417991520/"><img src="http://farm6.static.flickr.com/5091/5417991520_f50962a074_m.jpg" alt="flickr:5417991520" class="image" /></a> <a href="http://www.flickr.com/photos/40642599@N07/5417384555/"><img src="http://farm6.static.flickr.com/5255/5417384555_12ca758a8c_m.jpg" alt="flickr:5417384555" class="image" /></a> <p>Was produced from the following script (this is the base assembly of the mini-CNC):</p> <div class="code"> <div class="hl-main"> <pre> <span class="hl-reserved">def</span><span class="hl-code"> </span><span class="hl-identifier">base</span><span class="hl-code"> </span><span class="hl-identifier">base_front</span><span class="hl-code"> = </span><span class="hl-identifier">Assembly</span><span class="hl-code">.</span><span class="hl-identifier">new</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">Base front</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-identifier">base_front</span><span class="hl-code"> &lt;&lt; </span><span class="hl-identifier">Component</span><span class="hl-code">.</span><span class="hl-identifier">new</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">perforated-angle-12</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-identifier">rotate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,-</span><span class="hl-number">90</span><span class="hl-brackets">])</span><span class="hl-code">.</span><span class="hl-identifier">translate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,-</span><span class="hl-number">2</span><span class="hl-brackets">])</span><span class="hl-code"> </span><span class="hl-identifier">base_front</span><span class="hl-code"> &lt;&lt; </span><span class="hl-identifier">Component</span><span class="hl-code">.</span><span class="hl-identifier">new</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">perforated-angle-4</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-identifier">rotate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-number">90</span><span class="hl-code">,-</span><span class="hl-number">90</span><span class="hl-brackets">])</span><span class="hl-code">.</span><span class="hl-identifier">translate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">1</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-brackets">])</span><span class="hl-code"> </span><span class="hl-identifier">base_front</span><span class="hl-code"> &lt;&lt; </span><span class="hl-identifier">Component</span><span class="hl-code">.</span><span class="hl-identifier">new</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">perforated-angle-4</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-identifier">rotate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-number">90</span><span class="hl-code">,-</span><span class="hl-number">90</span><span class="hl-brackets">])</span><span class="hl-code">.</span><span class="hl-identifier">translate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">7</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-brackets">])</span><span class="hl-code"> </span><span class="hl-identifier">base_front</span><span class="hl-code"> &lt;&lt; </span><span class="hl-identifier">Component</span><span class="hl-code">.</span><span class="hl-identifier">new</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">perforated-angle-2</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-identifier">rotate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">90</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-number">180</span><span class="hl-brackets">])</span><span class="hl-code">.</span><span class="hl-identifier">translate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">4</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,-</span><span class="hl-number">2</span><span class="hl-brackets">])</span><span class="hl-code"> </span><span class="hl-identifier">base_front</span><span class="hl-code"> &lt;&lt; </span><span class="hl-identifier">Component</span><span class="hl-code">.</span><span class="hl-identifier">new</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">perforated-angle-2</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-identifier">rotate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">90</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-number">90</span><span class="hl-brackets">])</span><span class="hl-code">.</span><span class="hl-identifier">translate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">8</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,-</span><span class="hl-number">2</span><span class="hl-brackets">])</span><span class="hl-code"> </span><span class="hl-identifier">base_front</span><span class="hl-code"> &lt;&lt; </span><span class="hl-identifier">Component</span><span class="hl-code">.</span><span class="hl-identifier">new</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">perforated-angle-2</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-identifier">rotate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">90</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-number">90</span><span class="hl-brackets">])</span><span class="hl-code">.</span><span class="hl-identifier">translate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">4</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,-</span><span class="hl-number">1</span><span class="hl-brackets">])</span><span class="hl-code"> </span><span class="hl-identifier">base_front</span><span class="hl-code"> &lt;&lt; </span><span class="hl-identifier">Component</span><span class="hl-code">.</span><span class="hl-identifier">new</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">perforated-angle-2</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-identifier">rotate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">90</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-number">180</span><span class="hl-brackets">])</span><span class="hl-code">.</span><span class="hl-identifier">translate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">8</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,-</span><span class="hl-number">1</span><span class="hl-brackets">])</span><span class="hl-code"> </span><span class="hl-identifier">base_front</span><span class="hl-code"> &lt;&lt; </span><span class="hl-identifier">Component</span><span class="hl-code">.</span><span class="hl-identifier">new</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">perforated-angle-2</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-identifier">rotate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">0</span><span class="hl-code">,-</span><span class="hl-number">90</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-brackets">])</span><span class="hl-code">.</span><span class="hl-identifier">translate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">4</span><span class="hl-code">,-</span><span class="hl-number">1</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-brackets">])</span><span class="hl-code"> </span><span class="hl-identifier">base_front</span><span class="hl-code"> &lt;&lt; </span><span class="hl-identifier">Component</span><span class="hl-code">.</span><span class="hl-identifier">new</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">perforated-angle-2</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-identifier">rotate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-brackets">])</span><span class="hl-code">.</span><span class="hl-identifier">translate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">8</span><span class="hl-code">,-</span><span class="hl-number">1</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-brackets">])</span><span class="hl-code"> </span><span class="hl-identifier">base_front</span><span class="hl-code">.</span><span class="hl-identifier">screenshot</span><span class="hl-code"> </span><span class="hl-identifier">base_back</span><span class="hl-code"> = </span><span class="hl-identifier">Assembly</span><span class="hl-code">.</span><span class="hl-identifier">new</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">Base back</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-identifier">base_back</span><span class="hl-code"> &lt;&lt; </span><span class="hl-identifier">Component</span><span class="hl-code">.</span><span class="hl-identifier">new</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">perforated-angle-12</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-identifier">rotate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-number">180</span><span class="hl-code">,-</span><span class="hl-number">90</span><span class="hl-brackets">])</span><span class="hl-code"> </span><span class="hl-identifier">base_back</span><span class="hl-code"> &lt;&lt; </span><span class="hl-identifier">Component</span><span class="hl-code">.</span><span class="hl-identifier">new</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">perforated-angle-3</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-identifier">rotate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">0</span><span class="hl-code">,-</span><span class="hl-number">90</span><span class="hl-code">,-</span><span class="hl-number">90</span><span class="hl-brackets">])</span><span class="hl-code">.</span><span class="hl-identifier">translate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,-</span><span class="hl-number">2</span><span class="hl-brackets">])</span><span class="hl-code"> </span><span class="hl-identifier">base_back</span><span class="hl-code"> &lt;&lt; </span><span class="hl-identifier">Component</span><span class="hl-code">.</span><span class="hl-identifier">new</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">perforated-angle-3</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-identifier">rotate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">0</span><span class="hl-code">,-</span><span class="hl-number">90</span><span class="hl-code">,-</span><span class="hl-number">90</span><span class="hl-brackets">])</span><span class="hl-code">.</span><span class="hl-identifier">translate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">9</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,-</span><span class="hl-number">2</span><span class="hl-brackets">])</span><span class="hl-code"> </span><span class="hl-identifier">base_back</span><span class="hl-code"> &lt;&lt; </span><span class="hl-identifier">Component</span><span class="hl-code">.</span><span class="hl-identifier">new</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">perforated-angle-2</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-identifier">rotate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">90</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,-</span><span class="hl-number">90</span><span class="hl-brackets">])</span><span class="hl-code">.</span><span class="hl-identifier">translate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">3</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,-</span><span class="hl-number">2</span><span class="hl-brackets">])</span><span class="hl-code"> </span><span class="hl-identifier">base_back</span><span class="hl-code"> &lt;&lt; </span><span class="hl-identifier">Component</span><span class="hl-code">.</span><span class="hl-identifier">new</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">perforated-angle-2</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-identifier">rotate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">90</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-brackets">])</span><span class="hl-code">.</span><span class="hl-identifier">translate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">9</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,-</span><span class="hl-number">2</span><span class="hl-brackets">])</span><span class="hl-code"> </span><span class="hl-identifier">base_back</span><span class="hl-code"> &lt;&lt; </span><span class="hl-identifier">Component</span><span class="hl-code">.</span><span class="hl-identifier">new</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">perforated-angle-2</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-identifier">rotate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">90</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-brackets">])</span><span class="hl-code">.</span><span class="hl-identifier">translate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">4</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,-</span><span class="hl-number">1</span><span class="hl-brackets">])</span><span class="hl-code"> </span><span class="hl-identifier">base_back</span><span class="hl-code"> &lt;&lt; </span><span class="hl-identifier">Component</span><span class="hl-code">.</span><span class="hl-identifier">new</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">perforated-angle-2</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-identifier">rotate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">90</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,-</span><span class="hl-number">90</span><span class="hl-brackets">])</span><span class="hl-code">.</span><span class="hl-identifier">translate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">8</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,-</span><span class="hl-number">1</span><span class="hl-brackets">])</span><span class="hl-code"> </span><span class="hl-identifier">base_back</span><span class="hl-code">.</span><span class="hl-identifier">screenshot</span><span class="hl-brackets">(</span><span class="hl-identifier">camera</span><span class="hl-code"> = </span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-identifier">base</span><span class="hl-code"> = </span><span class="hl-identifier">Assembly</span><span class="hl-code">.</span><span class="hl-identifier">new</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">Base</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-identifier">base</span><span class="hl-code"> &lt;&lt; </span><span class="hl-identifier">base_back</span><span class="hl-code">.</span><span class="hl-identifier">rotate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-number">180</span><span class="hl-brackets">])</span><span class="hl-code">.</span><span class="hl-identifier">translate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">12</span><span class="hl-code">,</span><span class="hl-number">18</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-brackets">])</span><span class="hl-code"> </span><span class="hl-identifier">base</span><span class="hl-code"> &lt;&lt; </span><span class="hl-identifier">Component</span><span class="hl-code">.</span><span class="hl-identifier">new</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">perforated-angle-18</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-identifier">translate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">1</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-brackets">])</span><span class="hl-code"> </span><span class="hl-identifier">base</span><span class="hl-code"> &lt;&lt; </span><span class="hl-identifier">Component</span><span class="hl-code">.</span><span class="hl-identifier">new</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">perforated-angle-18</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-identifier">rotate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">0</span><span class="hl-code">,-</span><span class="hl-number">90</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-brackets">])</span><span class="hl-code">.</span><span class="hl-identifier">translate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">11</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-brackets">])</span><span class="hl-code"> </span><span class="hl-identifier">base</span><span class="hl-code">.</span><span class="hl-identifier">screenshot</span><span class="hl-code"> </span><span class="hl-identifier">base</span><span class="hl-code"> &lt;&lt; </span><span class="hl-identifier">base_front</span><span class="hl-code">.</span><span class="hl-identifier">rotate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-number">180</span><span class="hl-brackets">])</span><span class="hl-code">.</span><span class="hl-identifier">translate</span><span class="hl-code">!</span><span class="hl-brackets">([</span><span class="hl-number">12</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-brackets">])</span><span class="hl-code"> </span><span class="hl-identifier">base</span><span class="hl-code">.</span><span class="hl-identifier">screenshot</span><span class="hl-code"> </span><span class="hl-reserved">end</span><span class="hl-code"> </span><span class="hl-comment"># Create top level assembly</span><span class="hl-code"> </span><span class="hl-identifier">contraption</span><span class="hl-code"> = </span><span class="hl-identifier">Assembly</span><span class="hl-code">.</span><span class="hl-identifier">new</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">mini-CNC</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-comment"># Set up extra cameras - they are shared among all instances of Assembly class</span><span class="hl-code"> </span><span class="hl-identifier">contraption</span><span class="hl-code">.</span><span class="hl-identifier">set_camera</span><span class="hl-brackets">(</span><span class="hl-number">1</span><span class="hl-code">,</span><span class="hl-brackets">[</span><span class="hl-code">-</span><span class="hl-number">30</span><span class="hl-code">,-</span><span class="hl-number">30</span><span class="hl-code">,</span><span class="hl-number">30</span><span class="hl-brackets">])</span><span class="hl-code"> </span><span class="hl-identifier">contraption</span><span class="hl-code">.</span><span class="hl-identifier">set_camera</span><span class="hl-brackets">(</span><span class="hl-number">2</span><span class="hl-code">,</span><span class="hl-brackets">[</span><span class="hl-number">30</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-brackets">])</span><span class="hl-code"> </span><span class="hl-comment"># Add subassemblies to the top level assembly</span><span class="hl-code"> </span><span class="hl-identifier">contraption</span><span class="hl-code"> &lt;&lt; </span><span class="hl-identifier">base</span><span class="hl-code"> </span><span class="hl-comment"># Take a final screenshot using default camera</span><span class="hl-code"> </span><span class="hl-identifier">contraption</span><span class="hl-code">.</span><span class="hl-identifier">screenshot</span> </pre></div> </div> <p>The images are not in color yet, but it should be easy to add. Also, there are no fasteners - while they can be added via Component.new() - just like any other component in the library, this would probably make the script too bulky. Trying to figure out if there is a way to make them go to where they should be with minimum commands.</p> <p>The plugin is attached (unzip in Plugins folder, restart Sketchup): <a href="http://www.contraptor.org/local--files/forum:thread/AIG.zip">http://www.contraptor.org/local--files/forum:thread/AIG.zip</a><br /> The folder $SketchupHome\Components\Contraptor should contain SKP files with Contraptor components in order for plugin to work - alternatively, change component library path in assembly.rb and use arbitrary components.</p> <p>Finally, there is no error handling and the code is a bit kludgy, but it works for me on Sketchup 8/WinXP</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://www.contraptor.org/forum/t-303506</guid>
				<title>[Metric] Contrapteur : alpha angle</title>
				<link>http://www.contraptor.org/forum/t-303506/metric-contrapteur:alpha-angle</link>
				<description></description>
				<pubDate>Fri, 28 Jan 2011 20:19:24 +0000</pubDate>
				<wikidot:authorName>arthurwolf</wikidot:authorName>				<wikidot:authorUserId>471107</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Today was the big day :&nbsp;the package for the Contrapteur angle arrived !</p> <a href="http://www.flickr.com/photos/arthurwolf/5396403162/"><img src="http://farm5.static.flickr.com/4099/5396403162_340e9ef044.jpg" alt="flickr:5396403162" class="image" /></a> <a href="http://www.flickr.com/photos/arthurwolf/5396403164/"><img src="http://farm6.static.flickr.com/5098/5396403164_1f85c61073.jpg" alt="flickr:5396403164" class="image" /></a> <a href="http://www.flickr.com/photos/arthurwolf/5396403170/"><img src="http://farm5.static.flickr.com/4092/5396403170_b4e78979dc.jpg" alt="flickr:5396403170" class="image" /></a> <a href="http://www.flickr.com/photos/arthurwolf/5396403172/"><img src="http://farm5.static.flickr.com/4074/5396403172_4fefe1a824.jpg" alt="flickr:5396403172" class="image" /></a> <a href="http://www.flickr.com/photos/arthurwolf/5396403178/"><img src="http://farm5.static.flickr.com/4147/5396403178_2877beb8b3.jpg" alt="flickr:5396403178" class="image" /></a> <p>Ok so end of the suspense, to summarize : it's good, <strong>it works !</strong> ( but it's not perfect ).<br /> All dimensions are good, except for the centering of the holes, that is a very very small bit off ( 0.2mm or maybe less in the direction of the inside … ) but when using the angles, it works ( maybe the fact that the bolts are not exactly 5mm helps ).<br /> The angles are a bit "dirty", but they look super good once cleaned with water and soap.<br /> Also, they are deburred only on one side, but the other one is clean so that's ok.<br /> They weight less than the contraptor angles obviously, that feels better when building, but it's subjective.</p> <a href="http://www.flickr.com/photos/arthurwolf/5395826519/"><img src="http://farm5.static.flickr.com/4138/5395826519_8f4f32054d.jpg" alt="flickr:5395826519" class="image" /></a> <a href="http://www.flickr.com/photos/arthurwolf/5395826521/"><img src="http://farm5.static.flickr.com/4137/5395826521_63f2ba7ebb.jpg" alt="flickr:5395826521" class="image" /></a> <a href="http://www.flickr.com/photos/arthurwolf/5395826527/"><img src="http://farm5.static.flickr.com/4151/5395826527_36a57160ba.jpg" alt="flickr:5395826527" class="image" /></a> <a href="http://www.flickr.com/photos/arthurwolf/5395826531/"><img src="http://farm6.static.flickr.com/5095/5395826531_6c7b4cc485.jpg" alt="flickr:5395826531" class="image" /></a> <a href="http://www.flickr.com/photos/arthurwolf/5395826535/"><img src="http://farm6.static.flickr.com/5257/5395826535_dc987a6ee7.jpg" alt="flickr:5395826535" class="image" /></a> <p>The small problem with centering scared me a bit so I decided to try it and build something with it, you should recognize it :) :</p> <a href="http://www.flickr.com/photos/arthurwolf/5396403184/"><img src="http://farm5.static.flickr.com/4082/5396403184_863265dc3c.jpg" alt="flickr:5396403184" class="image" /></a> <a href="http://www.flickr.com/photos/arthurwolf/5395826513/"><img src="http://farm5.static.flickr.com/4102/5395826513_cf7be41b7d.jpg" alt="flickr:5395826513" class="image" /></a> <a href="http://www.flickr.com/photos/arthurwolf/5395834295/"><img src="http://farm5.static.flickr.com/4093/5395834295_20fc289ecc.jpg" alt="flickr:5395834295" class="image" /></a> <a href="http://www.flickr.com/photos/arthurwolf/5395834303/"><img src="http://farm5.static.flickr.com/4083/5395834303_fed62d294d.jpg" alt="flickr:5395834303" class="image" /></a> <a href="http://www.flickr.com/photos/arthurwolf/5395834307/"><img src="http://farm6.static.flickr.com/5056/5395834307_e61deb7358.jpg" alt="flickr:5395834307" class="image" /></a> <a href="http://www.flickr.com/photos/arthurwolf/5395834313/"><img src="http://farm6.static.flickr.com/5219/5395834313_b0e6f0472c.jpg" alt="flickr:5395834313" class="image" /></a> <a href="http://www.flickr.com/photos/arthurwolf/5395834315/"><img src="http://farm5.static.flickr.com/4135/5395834315_339005f034.jpg" alt="flickr:5395834315" class="image" /></a> <p>I didn't have the exact angle length for the present plans of the contrapteur mini-cnc, so I used lengths that were close …<br /> The screws are the shorter they had at the hardware store ( 15mm ), it needs even shorter screws ( 8mm would be good ).<br /> The machine feels very stiff, and the fact that the screws all fit perfectly makes building it very very easy : everything just stays wherever you put it :)<br /> Small problem :&nbsp;due to the light weight , lack of control when using a big electric screwdriver sent the machine flying to the other side of the room, hurt my arm a lot … will be more cautious next time.</p> <p>When ordering more, I'll have to ask for the holes to be better centered … maybe define a set of tests/shapes for the angles to be sure before shipping.<br /> With the holes better centered, it would really be perfect.</p> <p>That's all for today !<br /> Super happy !</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://www.contraptor.org/forum/t-302666</guid>
				<title>Arduino + Pololu alternative to Makerbot driver</title>
				<link>http://www.contraptor.org/forum/t-302666/arduino-pololu-alternative-to-makerbot-driver</link>
				<description></description>
				<pubDate>Wed, 26 Jan 2011 01:02:30 +0000</pubDate>
				<wikidot:authorName>jimjiminyjimjim</wikidot:authorName>				<wikidot:authorUserId>689269</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>I was just wandering whether I could use an alternative to the Makerbot driver. I've been following the Contraptor instructions and getting the necessary equipment to start experimenting with the stepper motors and GCode.</p> <p>All the Makerbot drivers seem to be out of stock as I think they've upgraded their electronics. Can I just buy Pololu driver boards and plug straight to an Arduino Mega - will the Arduino Gcode interpreter work with this setup?</p> <p>Are there any other alternative boards people have been using successfully?</p> <p>As an alternative I have been recommended swapping the arduino firmware and makerbot with replicatorg and a RAMP setup - can anyone shed any light about this?</p> <p>I'm new to this and any help would be much appreciated.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://www.contraptor.org/forum/t-298126</guid>
				<title>GCODE!!!!</title>
				<link>http://www.contraptor.org/forum/t-298126/gcode</link>
				<description></description>
				<pubDate>Thu, 13 Jan 2011 08:45:24 +0000</pubDate>
				<wikidot:authorName>halejandro</wikidot:authorName>				<wikidot:authorUserId>675253</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p><strong>bold text</strong> WHAT`S THE BEST HOST SOFTWARE TO SEND COMMANDS TO ARDUINO GCODE INTERPRETER ??????????????</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://www.contraptor.org/forum/t-296218</guid>
				<title>[Metric] Contrapteur : wall drawer</title>
				<link>http://www.contraptor.org/forum/t-296218/metric-contrapteur:wall-drawer</link>
				<description></description>
				<pubDate>Thu, 06 Jan 2011 21:02:24 +0000</pubDate>
				<wikidot:authorName>arthurwolf</wikidot:authorName>				<wikidot:authorUserId>471107</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Teaser : The angle samples will probably be shipped soon, and are expected to arrive around the beginning of February, so IRL making will start happening then.</p> <p>Here is a new project for contrapteur : the wall drawer.<br /> Nothing new, you can find similar projects <a href="http://www.kickstarter.com/projects/notever/the-drawing-machine?play=1&amp;ref=search">here</a>, <a href="http://www.as220.org/labs/blog/drawbot/">here</a>, <a href="http://hektor.ch/">here</a> and <a href="http://muralizer.com/">here</a>.</p> <p>Basically, it is a small robot, suspended by strings, that rolls the strings to move, and doing so, draw ( on a wall ).</p> <p>It is still at the draft stage, but the main ideas are here.</p> <p>Main eccentricities of this design :</p> <ul> <li>Uses belt and pulleys instead of strings. More expensive, but more reliable and precise.</li> <li>Has motors on-board, adds weight, makes it less giggly.</li> <li>Will use software calculation to maintain the robot aligned with the horizon.</li> </ul> <p>To get an idea of how it works here is a picture of the back ( part that faces the wall ) :</p> <a href="http://www.flickr.com/photos/arthurwolf/5330629575/"><img src="http://farm6.static.flickr.com/5086/5330629575_fa4dd83b49_z.jpg" alt="flickr:5330629575" class="image" /></a> <p>Basically, the motors turn the pulleys, the pulleys push/pull the belt, and that makes the robot move. As simple as that. You actually need cosine things in the software to have Cartesian coordinates/movement, that's probably the most difficult part of the project.<br /> At the top you can see the pen, attached to a servo. The servo is for not-drawing when not necessary, or even for controlling depth if you use a brush, or brush-pen.<br /> Not featured here, the contact between the robot and the wall ( other than the pen ) will be handled by <a href="http://www.mcmaster.com/#roller-balls/=ah5g2q">roller balls</a>.</p> <p>A&nbsp;picture of the top :</p> <a href="http://www.flickr.com/photos/arthurwolf/5330631645/"><img src="http://farm6.static.flickr.com/5248/5330631645_59aeea0d9e_z.jpg" alt="flickr:5330631645" class="image" /></a> <p>You can see the motors, arduino and servo. Missing are the arduino shield with pololu drivers on it.</p> <p>Design challenges :</p> <ul> <li>Figure out if this can work</li> <li>Design a contrapteur part for the roller balls</li> <li>Find how to attach the servo to contrapteur … maybe via a lasercut part.</li> <li>Find how to attach the pen to the servo. Lasercut or 3D printed part. Or something dirty at first.</li> <li>The software is the real challenge. Must understand Gcode, like the mini-cnc, but moves nothing like it.</li> </ul> <p>Apart from that it all seems fairly easy.<br /> I'll continue to refine the design, and when the contrapteur sample parts arrive, assemble it and test it … it should be a quick build.</p> <p>Note : This took 15&nbsp;minutes to design, contraptor really rules !<br /> Should be easy to do in ( inch ) contraptor too.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://www.contraptor.org/forum/t-295481</guid>
				<title>[Metric] Contrapteur : lasercut templates</title>
				<link>http://www.contraptor.org/forum/t-295481/metric-contrapteur:lasercut-templates</link>
				<description></description>
				<pubDate>Mon, 03 Jan 2011 19:22:26 +0000</pubDate>
				<wikidot:authorName>arthurwolf</wikidot:authorName>				<wikidot:authorUserId>471107</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>The contrapteur mini-cnc project makes good progress.<br /> The lasercut parts need testing, so I'll have a bunch made at ponoko.<br /> The parts were designed for 2mm thick material, but it turns out ponoko has most of it's materials in 3mm thickness, so it's limited to a few materials ( wood, clear acrylic ).<br /> I'll order one of each and see what is better.</p> <p>Here is the first draft of the template :<br /> <a href="http://www.flickr.com/photos/arthurwolf/5320422095/"><img src="http://farm6.static.flickr.com/5009/5320422095_15930bce1a.jpg" alt="flickr:5320422095" class="image" /></a></p> <p>It includes :</p> <ul> <li>18 ball bearing holders</li> <li>8&nbsp;lead nut mounts</li> <li>8 lead nut mounts for sliding element</li> <li>Templates for punching the angle</li> <li>Templates for punching the 40mm square tube</li> <li>Templates for punching the motor mount and cutting the rubber dampers</li> </ul> <p>It will include :</p> <ul> <li>Design tests for lasercut motor mounts ( inspired by <a href="http://www.flickr.com/photos/rileyporter/4058823079/in/set-72157622475596037/">riley's</a> )</li> <li>Templates for punching the sliding elements, linear rail stage, etc … they are still at the design stage, not sure about where all the holes will be.</li> </ul> <p>Any idea of usefull stuff that could be added in the white space that helps when doing contraptor ?</p> <p>Edit : Optimism FAIL, it's way more costly than thought at first, forgetting about ordering two materials.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://www.contraptor.org/forum/t-293577</guid>
				<title>[Metric] Contrapteur : mini-cnc project</title>
				<link>http://www.contraptor.org/forum/t-293577/metric-contrapteur:mini-cnc-project</link>
				<description>Making a mini-cnc out of 20mm based contraptor clone</description>
				<pubDate>Wed, 22 Dec 2010 18:09:27 +0000</pubDate>
				<wikidot:authorName>arthurwolf</wikidot:authorName>				<wikidot:authorUserId>471107</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Hello !</p> <p>This will be the thread for the <a href="http://www.contraptor.org/forum/t-273404/contraptor-openstructures">contrapteur</a> mini-cnc project.<br /> The goal is to make a complete replica of the mini-cnc, but using metric parts.<br /> The good thing about the mini-cnc is that it uses all contraptor parts, so translating it's part is basically translating contraptor.</p> <p>So to start, we need a frame with about the same dimensions as the contraptor mini-cnc.<br /> Here bellow is a draft, conversion has been made the following way :</p> <ul> <li>For short parts, use parts with the same number of holes.</li> <li>For long parts, use parts about the same length.</li> </ul> <p>Picture :<br /> <a href="http://www.flickr.com/photos/arthurwolf/5282914519/"><img src="http://farm6.static.flickr.com/5122/5282914519_bf8009f2a9_z.jpg" alt="flickr:5282914519" class="image" /></a></p> <p>It ends up looking very much alike.<br /> Some things may need to be changed once we start adding the moving parts, we'll see then.</p> <p>So now that there is a frame ( in sketchup ), what is needed next ?</p> <ul> <li><a href="http://www.contraptor.org/make-sliding-elements">Sliding elements</a> : design already started in the <a href="http://www.contraptor.org/forum/t-273404/contraptor-openstructures">big-cnc project</a>, raw aluminium square tube easily available.</li> <li><a href="http://www.contraptor.org/make-linear-bearings">Linear bearings</a> : TBD, main problem is here is that aluminium channel is hard to find. Could be made by shortening U profile legs.</li> <li><a href="http://www.contraptor.org/make-linear-rail">Linear rails</a> :&nbsp;design started in sketchup, same problem with aluminium channel.</li> <li><a href="http://www.contraptor.org/make-coupling-nut-clamp">Coupling nut clamp</a> and <a href="http://www.contraptor.org/make-lead-nut-mount">Lead nut mount</a> :&nbsp;TBD</li> <li><a href="http://www.contraptor.org/make-shaft-mount">Shaft mount</a> : easy, will be made with laser cut holders, see <a href="http://www.contraptor.org/forum/t-292919/ball-bearing-mount-idea">discution</a></li> <li><a href="http://www.contraptor.org/make-belt-clamp">Belt clamp</a> : easy too.</li> <li><a href="http://www.contraptor.org/make-motor-mount">Motor mount</a> : design already started in the <a href="http://www.contraptor.org/forum/t-273404/contraptor-openstructures">big-cnc project</a>, from square tube cut in half, with rubber vibration isolation.</li> <li><a href="http://www.contraptor.org/mini-cnc-subset">The rest ( parts column )</a> : TBD, but lots of progress already done for the <a href="http://www.contraptor.org/forum/t-273404/contraptor-openstructures">big-cnc project</a></li> </ul> <p>Picture of a first draft :<br /> <a href="http://www.flickr.com/photos/arthurwolf/5284198802/"><img src="http://farm6.static.flickr.com/5243/5284198802_5b4696435d.jpg" alt="flickr:5284198802" class="image" /></a></p> <p>Documentation :&nbsp;</p> <ul> <li>Wiki page ( under <a href="http://www.contraptor.org/metric-version-development">Metric version</a> )</li> <li>Sketchup file to be uploaded to 3D warehouse</li> <li>Build log with pictures</li> <li>Trying to document it as well as the original mini-cnc</li> </ul> <p>Any comments/advice is super welcome !</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://www.contraptor.org/forum/t-292956</guid>
				<title>Mini CNC with modified Z axis</title>
				<link>http://www.contraptor.org/forum/t-292956/mini-cnc-with-modified-z-axis</link>
				<description></description>
				<pubDate>Sun, 19 Dec 2010 07:08:26 +0000</pubDate>
				<wikidot:authorName>Albanetc</wikidot:authorName>				<wikidot:authorUserId>381022</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Over the last 2-3 weeks I spent a few hours here and there on validating the assembly sequence for mini CNC (<a href="http://www.contraptor.org/mini-cnc#assembly">http://www.contraptor.org/mini-cnc#assembly</a>) and looking for spots in the alignment process that could use more documentation. One of such spots is the leadscrew alignment - I found that following a few simple rules and knowing how things might go wrong can really shorten the time it takes to get the leadscrew drive working. I will need to write it up in detail but here is the draft: <a href="http://www.contraptor.org/leadscrew-alignment">http://www.contraptor.org/leadscrew-alignment</a></p> <p>When I started Z-axis assembly, it became clear that the design wouldn't allow to easily perform the leadscrew alignment steps, so I ended up modifying Z-axis to accommodate that. By the way, one of the advantages of construction sets is that a new version of an assembled device doesn't require time/expense of making/buying modified parts, as the case may be with a traditional kit. I simply rearranged the existing parts - construction set is more like software in that sense.</p> <p>Here is the new Z-axis:</p> <a href="http://www.flickr.com/photos/40642599@N07/5260132260/"><img src="http://farm6.static.flickr.com/5002/5260132260_fc5ee86bcd_m.jpg" alt="flickr:5260132260" class="image" /></a> <a href="http://www.flickr.com/photos/40642599@N07/5267579659/"><img src="http://farm6.static.flickr.com/5087/5267579659_59d72bde5b_m.jpg" alt="flickr:5267579659" class="image" /></a> <p>The design allows to assemble and align each of the rails independently.</p> <a href="http://www.flickr.com/photos/40642599@N07/5216669235/"><img src="http://farm5.static.flickr.com/4089/5216669235_7cc1ba59bc_m.jpg" alt="flickr:5216669235" class="image" /></a> <a href="http://www.flickr.com/photos/40642599@N07/5216671211/"><img src="http://farm5.static.flickr.com/4133/5216671211_34495336ab_m.jpg" alt="flickr:5216671211" class="image" /></a> <p>It also provides more Z axis travel - almost 3" (measured without Dremel). This may be useful for some of the attachments such as drill chuck.</p> <a href="http://www.flickr.com/photos/40642599@N07/5259527325/"><img src="http://farm6.static.flickr.com/5202/5259527325_90cbb9f8ae_m.jpg" alt="flickr:5259527325" class="image" /></a> <a href="http://www.flickr.com/photos/40642599@N07/5259533199/"><img src="http://farm6.static.flickr.com/5043/5259533199_026ddc903d_m.jpg" alt="flickr:5259533199" class="image" /></a> <p>The first tests went well, but when I replaced 6" flat plexi bracket on the rear of X stage with AL angle to enable grounding of the limit switches, I ran into um.. a runtime error when the X stage rear angle crashed into one of the stepper driver heatsinks with Z raised all the way up. I didn't really <em>crash</em>, X stage just kept going, getting more and more skewed as the top was blocked and the bottom continued to move.</p> <a href="http://www.flickr.com/photos/40642599@N07/5260135830/"><img src="http://farm6.static.flickr.com/5009/5260135830_17a962e3b0_m.jpg" alt="flickr:5260135830" class="image" /></a> <a href="http://www.flickr.com/photos/40642599@N07/5260141998/"><img src="http://farm6.static.flickr.com/5245/5260141998_16f9125575_m.jpg" alt="flickr:5260141998" class="image" /></a> <p>So now I have to remove the entire X axis and (mostly) re-assemble and re-align it from scratch. However this means I can take care of another narrow assembly spot - securing X axis to Z stage. It's somewhat difficult with the wrench and using hex socket is almost impossible. There is no reason why the flat screw/nut at the end of the linear rail can't be removed/moved 1" inward - that way it won't interfere with the hex socket.</p> <a href="http://www.flickr.com/photos/40642599@N07/5259530467/"><img src="http://farm6.static.flickr.com/5210/5259530467_aa96a552e8_m.jpg" alt="flickr:5259530467" class="image" /></a> <a href="http://www.flickr.com/photos/40642599@N07/5259530973/"><img src="http://farm6.static.flickr.com/5169/5259530973_3726ab78f0_m.jpg" alt="flickr:5259530973" class="image" /></a>
				 	]]>
				</content:encoded>							</item>
				</channel>
</rss>
