linkages - An Interactive linkage program. This program reads and displays Inventor files containing connected linkages. Each piece has a 'link' (rendered in Blue by default) and a set of draggers (rendered in Magenta by default). So you can click on anything Magenta and drag it around, and the linkage will remain connected. The links are connected end-to-end using simple field connections defined in the input files. The classes "Link", "Crank", "RivetHinge", "DoubleLink", and "Piston" are special classes written for this application. Their header and source files are in this directory. Each of the new classes is a nodekit that contains draggers as parts. When you drag a dragger, internal connections and engines make changes to some parameter of the node (see below for more details). The "Piston" and "DoubleLink" nodes will turn Red if you pull them apart too far. The linkage will continue to work, and the node will turn Blue again when you stop hurting it. How to run the program: ----------------------- prompt> linkages [-m] filename If no filename is given, linkages looks for: motorizedMechanism.iv The file oneOfEach.iv brings up one of each kind of piece, as described below. The -m option brings up an extra window with buttons you can press to add pieces to the scene. ABOUT THE TYPES OF PIECES: ------------------------- Each class its own interface. Clicking the middle mouse over any of them will toggle the draggers on and off. "Link" ------- A simple strut with draggable ends -2D translate dragger moves origin -2D translate dragger moves endPoint "Crank" ------ A crank you can turn. Good for driving the motion of a mechanism. -2D translate dragger moves origin -rotate dragger turns crank (You can also hook up the rotation from an SoElapsedTime engine) -1D translate dragger changes length "RivetHinge" - A strut that has an origin and a given length, but its orientation is given by the fact that it must point toward the 'hingePoint' -2D translate dragger moves origin -2D translate dragger moves hinge point -1D translate dragger changes length "DoubleLink" - This controls the two "Link" nodes that comprise it. It keeps their endpoints connected even while the two origins are moved. -2D translate dragger moves origin of first link. -2D translate dragger moves origin of second link. -2D translate dragger moves the sharedPoint while leaving the origins fixed. This changes the lengths of both links at once. "Piston" ----- This controls the two "RivetHinge" nodes that comprise it. It keeps each one pointed toward the other, even as their origins are moved. So the two rivets remain aligned as they slide in and out. -2D translate dragger moves origin of first link. -2D translate dragger moves origin of second link. BUILDING MECHANISMS WITH CONNECTIONS: ------------------------------------ Users can easily connect pieces with field-to-field connections and build up mechanisms. (For example, one end of a Piston can be connected from the end point of a Crank). These connections must be specified in the input file. Also, pieces can be connected from engines. For example, the angle of a Crank can be driven by an SoElapsedTime engine. (Try RUNME_MOTORIZED to see how this works) CUSTOMIZING THE PIECES: ---------------------- The file linkagesResourceFile.iv defines the default geometry for each kind of link. You can change this file to create different looking links, or you can change the links on individual basis. The file pairOfLegs.iv does this to make the angleRotateGeom of each leg look different.