FAQ on freeCAD / StCAD Usage
freeCAD / StCAD uses the right hand Cartesian coordinate system, XYZ or xyz, represented by Red, Green and Blue axes in the graphics view. Relative translation is described by moving xyz origin from XYZ origin by X units, Y units, Z units along XYZ axes. To specify relative orientation: Start with xyz parallel with XYZ. Rotate xyz about x axis by Bryant1 radians using the right hand rule. Rotate xyz about the current y axis by Bryant2 radians using the right hand rule. Finally, rotate xyz about the current z axis by Bryant3 radians using the right hand rule. Rotations in this manner are called Bryant angles or Euler angles in xyz convention. All units are SI units: kilograms, meter, second, radians. Angles can be in degrees when indicated so.
An alternative method of specifying relative orientation involves specifying relative directions. Start with xyz parallel with XYZ. Define a direction vector in XYZ components that z axis must parallel to. The xyz frame is not yet fully oriented because it is still free to spin about the z axis. To fix the orientation fully define a another direction vector in XYZ components that the x axis or the xz plane must be parallel to. Note that, only the directions of the direction vectors are important. Their magnitudes can be any value greater than zero.
The goal is to create an empty assembly and populate it with parts. Then, markers are attached at pertinent points in the assembly and parts. The assembly and parts are then connected by joints, constraints, actuators and/or forces between the markers. Contacts connect parts through face profiles. The required sequence of actions in freeCAD / StCAD are:
- Click File/New/Assembly/ to create an empty assembly. A dialog allows you to specify a unique name. You can change the name anytime from the Tree View.
- Click Select/Plane/x=X y=Y/ to select the XY plane of the assembly. XYZ is the reference frame. xyz is the frame is being oriented relative to XYZ. In this case, XYZ is the world frame represented by the long axes in 'freeCAD'. With this selection, xyz coincides with XYZ.
- Click Insert/Part/New/ to insert a new part on the selected plane, i.e. xy plane. A dialog allows you to specify a unique name.
- Click Insert/Sketch/ to insert a sketch on the new part. A dialog allows you to specify a unique name.
- Click Draw/Rectangle/ to select the rectangle tool. In the drawing area, click and drag toward the positive quadrant (increasing x and y) to create a rectangle. There are three handles (black squares) that you can drag to move, resize and rotate the rectangle in the sketch plane. Dragging anywhere in the rectangle will also move the rectangle. Optionally, RightClick/Position/Angle/ over the rectangle to get a dialog to specify the rectangle position and size precisely.
- Click Insert/Feature/Extrusion/ to extrude the drawing perpendicular to the sketch plane. A dialog allows you to specify the z coordinates for extrusion.
- Clicking on the 3D solid part will select a face under the cursor. There are two handles for tilting and rotating the solid part. Dragging anywhere in the solid will also move the solid. Optionally, RightClick/Position/Direction/ over the solid part to get a dialog to specify its position precisely.
To add another part:
- Select Assembly1 from the TreeView.
- Then repeat steps Select/Plane/x=X y=Y/ on down. See below for how to create markers and connections.
See How to Create an Assembly in the above article.
- Select Assembly1 from the TreeView.
- Click Select/Plane/x=X y=Y/ to select the XY plane of the assembly.
- Click Insert/Part/File/ to insert a new part from a *.prt file on the selected plane. A dialog allows you to specify a unique name.
- Select Assembly1 from the TreeView.
- Click Select/Plane/x=X y=Y/ to select the XY plane of the assembly. Another plane can do. This will be the guide plane.
- Click View/Y up/X right/ to avoid viewing the guide plane on edge.
- Click Insert/Marker/. A dialog allows you to specify a unique name. A RedGreenBlue (RGB) marker representing the xyz axes appears at the assembly origin. The xy plane of the marker is constrained in the guide plane of the assembly. There is one handle that you can drag to move the marker. Dragging anywhere on the marker will also move it in its guide plane. You can also rotate the marker about any axis by RightClick/Rotate/. Other RightClick commands allow precise placement of the marker relative to the assembly frame.
- Click Edit/Marker Size/ to set the marker sizes appropriate for the assembly.
- Select Assembly1Part1 from the TreeView.
- Click Select/Plane/x=X y=Y/ to select the XY plane of the part. This will be the guide plane.
- Click Insert/Marker/. A dialog allows you to specify a unique name. A RedGreenBlue (RGB) marker representing the xyz axes appears at the part origin.
- Click a face of a solid to select and highlight it.
- Click Insert/Marker/. A dialog allows you to specify a unique name. A marker appears at the origin of the face. Its guide plane is also the face plane.
Joints are applied to connect markers. Every marker is created and attached to a part or an assembly.
- Click Kinematic/Joint/RevoluteZ/ to select the revolute joint tool. In the drawing area, click on a marker, drag to another marker on another part or assembly, release the button. A dialog allows you to specify a unique name. A rubber band line connects the 'i' and 'j' markers with an label 'rev' to denote the presence of a revolute joint between the 'i' and 'j' markers. A revoluteZ joint constraints the origins of 'i' and 'j' to be coincident and the z axes of 'i' and 'j' to be parallel. Only one rotational degree of freedom exists between 'i' and 'j'.
- Click Kinematic/Explain/ to see the function of various joints.
All real machines are made from non rigid parts that allow flexibility, even if the flexibility is invisible to the eye. This flexibility allows us to use imperfect and redundant joints without severe restrictions. For example, a door usually have two or more hinges which are not perfectly aligned, yet the door swings open and shut to our expectation.
In multibody dynamics simulation, however, the mathematical parts and joints are perfect. Parts are rigid. Joints are unyielding to motion that they are meant to restrict. Hence, redundant constraints must be removed before the mathematics can converge to a solution. For example, a mathematical door needs one hinge only to work as expected. Extra hinges actually prevent a mathematical solution.
freeCAD /StCAD has an advanced algorithm for automatic redundant constraint removal that works well for multibody dynamics. But the user needs to be aware of the problem when unexpected simulations occur. Then the user must define joints that eliminate redundant constraints from the assembly. For example, a mathematical door with two hinges defined may be jammed (no swinging) even though a huge force or torque is applied to it and the simulation runs without problems. The user need to realize that the extra hinge is redundant and slight misalignment between the two hinges caused the door to jam.
A curve-curve contact is applied to connect a face on one part with another on a different part. The faces need to be maintained parallel by other joints or constraints. The vertices of each planar face are connected with a fifth order spline to create a smooth cross sectional profile for contact. The profiles can slide on each other without inter penetration. Lift off is permitted. Hard collision is permitted and rebound is calculated based on the user specified coefficient of restitution. A common use for contact is the cam-follower system. To start the simulation with the profiles in contact, move the profiles to overlap before starting the simulation. If contact behavior during simulation is not reliable, delete the contact, increase the number of vertices in the curve profiles, reconnect the contact profiles and resimulate.
Click Kinematic/Joints/Curve on Curve/ to select the contact tool. Click on a face of a part and drag to another face on a different part, release the button. Dialogs allows you to specify a unique name for the contact, the first curve marker, the second curve marker and the coefficient of restitution. A rubber band line connects the 'i' and 'j' markers with an label 'cvcv' to denote the presence of a curve-curve contact between the 'i' and 'j' curve markers.
Motions are applied to joints.
Click Kinematic/Motion/RotationZ/ to select the z rotation tool. Click on a revolute or cylindrical joint to apply the prescribed rotation. A dialog allows you to specify a user defined function of time describing the angle of the 'j' x-axis relative to the 'i' x-axis. Valid expressions using +, -, *, /, ^, pi, cos, sin, tan, arctan, exp, ln, log, sqrt are acceptable.
Click Kinematic/Explain/Motion/ to see the function of other motions.
- Click menu item Dynamic/ForceTorque/General/to select the general forceTorque tool.
- Connect markers 'i' and 'j'. A dialog allows you to specify arbitrary functions describing the forceTorque acting on 'i'. An equal and opposite reaction is applied to the part containing 'j' at the point coincident with 'i'. The general forceTorque abbreviation is 'ftg'. The user can define all three components of force and torque as functions of time, displacements and velocities of any pairs of markers in the assembly. You may enter zero terms or constant expressions for clarity because the parser simplifies the user functions before internal use.
- Click menu item Dynamic/ForceTorque/InLine/ to select the inline forceTorque tool.
- Connect markers 'i' and 'j'. A dialog allows you to specify arbitrary functions describing the forceTorque acting on 'i'. Positive force and axial torque vectors are directed from 'i' to 'j'. An equal and opposite inline reaction is applied to marker 'j'. The inline forceTorque abbreviation is 'fti'. The user can define the tension and twist as functions of time, displacements and velocities of any pairs of markers in the assembly. You may enter zero terms or constant expressions for clarity because the parser simplifies the user functions before internal use.
- Warning: Inline ForceTorque is ill defined when 'i' and 'j' are near coincidence.
It is a connector to hold vector type data from marker 'i' to marker 'j'. It can be used in formulas describing constraint relationships or force values. After the simulation, it can be used for plotting.