This was my final year project at Uni. Written in Java, it implements snapping and auto rotation of all the parts. You can design a full track using drag and drop and then when printed it creates a list of parts required to make the track. In the example i created Silverstone Race Track for my viva.