This is a reference manual for SolveSpace. This document is not intended for new users; to learn about this program, see the video tutorials.

General Navigation

The user interface consists of two windows: a larger window that contains mostly graphics, and a smaller window that contains mostly text. The graphics window is used to draw the geometry, and to view the 3d model. The text window provides information about the model, and may also be used to modify settings and numerical parameters.

Graphics Window and Model View

To pan the view, right-drag with the mouse. To rotate the view, center-drag with the mouse. This turns the part over, so that the surfaces that used to be hidden (because they were facing backwards, away from the viewer) become visible. To rotate the view within the plane of the monitor, Ctrl+center-drag with the mouse. It is also possible to pan by Shift+center-dragging, or to rotate by Shift+right-dragging. To zoom in or out, rotate the scroll wheel. It is also possible to zoom by using the View menu, or the associated keyboard shortcuts (+ and -). Some features, including the planes, are always drawn the same size on-screen, and are therefore not affected by zooming. To zoom to the extent of the part, choose View -> Zoom To Fit. This adjusts the zoom level so that the part fits exactly on the screen, and then pans to center the part. The rotation of the part is not affected. If a workplane is active, then choose Sketch -> In Workplane (or press W) to align the view to the workplane. After doing this, the plane of the screen is coincident with the workplane, and the center of the workplane is at the center of the screen. The zoom level is not affected. The x, y, and z coordinate axes are always drawn at the bottom left of the graphics window, in red, green, and blue. These axes are live: they can be highlighted and selected with the mouse, in the same way as any other normals. (This means that the coordinate axes are always conveniently available on-screen, which is useful e.g. when constraining a line parallel to the x-axis.)

Dimension Entry and Units

Dimensions may be displayed in either millimeters or inches. Millimeter dimensions are always displayed with two digits after the decimal point (45.23), and inch dimensions are always displayed with three (1.781). Choose View -> Dimensions in Inches/Mm to change the current display units. This does not change the model; if the user changes from inches to millimeters, then a dimension that was entered as 1.0 is now displayed as 25.40. All dimensions are entered in the current display units. In most places where a dimension is expected, it's possible to enter an arithmetic expression ("4*20 + 7") instead of a single number.

Text Window

The text window appears as a floating palette window. It may be shown or hidden by pressing Tab, or by choosing View -> Show Text Window. The text window works like a web browser. Any underlined text is a link. To activate a link, click it with the mouse. The links may be used to navigate to other pages in the text window. For example, the "home" screen is a list of groups in the sketch: To navigate to a group's page, click on that group's name (e.g., "g002-sketch-in-plane"). The links may also trigger actions in the sketch. For example, in the above screenshot, all of the groups are shown. To hide a group, click on the word "yes" in the "show" column. As a convenience, the text window will sometimes automatically navigate to a page that is likely to be relevant. For example, when a new group is created, the text window displays that new group's page. It's always possible to navigate to a different page, by clicking the "home" link at the top left corner (or pressing Esc), and following the links from there. When sketch entities are selected (e.g., the user has clicked on them with the mouse), information about those entities is displayed in the text window. If a single entity is selected, then information about that entity is displayed. For example, the window display's a circle's center and radius. If multiple entities are selected, then the text window can sometimes display information about all of them. These cases include: two points: the distance between the points a point and a plane face: the distance from the point to the plane two points, and a vector: the distance between the points, projected along the vector two plane faces: the angle between the plane faces

Show / Hide Entities

As the sketch becomes more complex, it may be useful to hide unnecessary information. SolveSpace provides several different ways to do this. In the second and third line of the text window, links are provided to hide and show different things. These are: wrkpls -- When a new "Sketch In New Workplane" group is created, an associated workplane is created automatically. If wrkpls is hidden, then that workplane is visible only when its associated group is active. If wrkpls is shown, then the workplane is always visible. normals -- By default, normals are drawn as blue-grey arrows, in the direction of the normal. These normals may be hovered and selected with the mouse, for example in order to constrain them. This link may be used to hide them. points -- By default, points are drawn as green squares. These points may be hovered and selected with the mouse, for example in order to constrain them. This link may be used to hide them. If points are hidden, then they will still appear when the mouse hovers over them, and may still be selected. constraints - When a constraint is created, a graphical representation of that constraint is displayed in purple. The constraints in a group are visible only when that group is active. To hide them even then, use this link. shaded -- The 3d part is displayed as an opaque solid, with lighting effects to give the impression of depth. This link may be used to hide that view. faces -- Some surfaces on the 3d model may be selected. For example, the user can select a plane face of the part, and constrain a point to lie on that plane. If faces are shown, then the faces will appear highlighted when the mouse hovers over them. The user can click the mouse to select the face, as they would for any other entity. As a convenience, faces are automatically hidden when a new sketch group is created, and automatically shown when a new extrusion is created. If this behavior is not what's desired, then the faces can be shown or hidden manually with this link. mesh -- The 3d model of the part consists of many triangles; for example, a rectangular face is represented by two triangles. Use this link to show the triangles on the model. This is a good way to see how fine or coarse the mesh is before exporting it. hidden-lines - With the part in a given orientation, some of the lines in the part will be invisible, because they are buried inside the solid part. To show those lines anyways, as if the part were transparent, use this link. This is useful when drawing a sketch that lies within the volume of the part. In addition to the above options, it is possible to hide and show entire groups. If a group is hidden, then all of the entities (line segments, circles, arcs, points, etc.) from that group are hidden. The solid model is not affected; if a hidden group contains a circle that is extruded to form a cylinder, then the cylinder will remain visible. To hide a group, go to the home screen in the text window, by pressing Esc or choosing the link at the top left. A list of groups is displayed, along with their visibility. If a group is visible, then the "show" column contains the word "yes" in green. Click the "yes"; it now appears as a greyed "no", and the group is hidden. The show / hide status of groups is saved in the part file. If a part is imported into an assembly, then entities that were visible in the part file will be visible in the assembly, and entities that were hidden will be hidden.

Active Workplane

SolveSpace represents all geometry in 3d; it's possible to draw line segments anywhere, not just in some plane. This freedom is not always useful, so SolveSpace also makes it possible to draw in a plane. If a workplane is active, then all entities that are drawn will be forced to lie that plane. The active workplane ("wrkpl") is indicated in the top line of the text window, at the right. When SolveSpace starts with a new empty file, a workplane parallel to the XY plane is active. To deactivate the workplane, and draw in 3d, choose Sketch -> Anywhere In 3d. To activate a workplane, select it, and then choose Sketch -> In Workplane. When a workplane is activated, the view is aligned onto that workplane. (The workplane remains active until the user chooses Sketch -> Anywhere In 3d, or a different workplane is activated. If the user rotates the view, so that the view is no longer aligned onto the workplane, then the workplane remains active.) In a "Sketch in New Workplane" group, the group's associated workplane may be activated by choosing Sketch -> In Workplane; there is no need to select it first.

Active Group

When a new line, circle, or other curve is created, it will be created in the active group. Geometry from the active group is drawn in white; geometry from earlier groups is drawn in brown. Later groups are hidden. In the text window's home screen (press Escape, or choose the link in the top left corner), the active group's line in the list of groups has "yes" in the "actv" column. All other groups (except g001-#references, which cannot be activated) have "no" in that column. To activate an inactive group, click on the "no".

Sketch Entities

Construction Geometry

In normal operation, the user draws line and curves in a sketch. Those curves describe the geometry to be manufactured; ultimately, the endmill or the laser or some other tool will cut along those curves. In some cases, it is useful to draw a line that should not appear on the final part. For example, the user may wish to draw a center line for a symmetric part; but that center line is only a guide, and should not actually get exported with the CAM data. These lines are called construction lines. To mark an entity as construction-only, choose Sketch -> Toggle Construction. A construction entity will behave just like any other entity, except that it is drawn in green, and does not contribute to the geometry for export (or to the section that will be extruded or lathed or swept).

Datum Point

This entity is defined by a single point. If a workplane is active when the datum point is created, then that datum point will always lie in the workplane. If no workplane is active, then the datum point will be free in 3d. (This is the same behaviour as for all points, including e.g. the endpoints of a line segment.) Datum points are typically used as construction geometry. The user might place datum points in order to simplify the dimensioning of line segments or other entities.

Workplane

This entity is specified by a point and a normal. The point defines its origin, and the normal defines its orientation. A workplane makes it possible to draw a section in 2d. If a workplane is active, then any entities that are drawn must lie in that workplane. It's almost never necessary to create workplanes explicitly. Instead, create a new Sketch in New Workplane group.

Line Segment

This entity is specified by its two endpoints. If a workplane is active, then the two endpoints will always lie in that workplane. To create the line segment, choose Sketch -> Line Segment, and then left-click one endpoint of the line. Then release the mouse button; the other endpoint is now being dragged. To create another line segment, that shares an endpoint with the line segment that was just created, left-click again. This is a fast way to draw closed polygons. To stop drawing line segments, press Escape, or right- or center-click the mouse. SolveSpace will also stop drawing new line segments if an automatic constraint is inserted. (For example, draw a closed polygon by left-clicking repeatedly, and then hovering over the starting point before left-clicking the last time. The endpoint of the polyline will be constrained to lie on the starting point, and since a constraint was inserted, SolveSpace will stop drawing.)

Rectangle

This entity consists of two vertical line segments, and two horizontal line segments, arranged to form a closed curve. Initially, the rectangle is specified with the mouse by two diagonally opposite corners. The line segments (and points) in the rectangle may be constrained in the same way as ordinary line segments. It would be possible to draw the same figure by hand, by drawing four line segments and inserting the appropriate constraints. The rectangle command is a faster way to draw the exact same thing. A workplane must be active when the rectangle is drawn, since the workplane defines the meaning of "horizontal" and "vertical".

Circle

This entity is specified by its center point, by its diameter, and by its normal. To create the circle, choose Sketch -> Circle, and then left-click the center. Then release the mouse button; the diameter of the circle is now being dragged. Left-click again to place the diameter. If a workplane is active, then the center point must lie in that workplane, and the circle's normal is parallel to the workplane's normal (which means that the circle lies in the plane of the workplane). If no workplane is active, then the center point is free in space, and the normal may be dragged (or constrained) to determine the circle's orientation.

Arc of a Circle

This entity is specified by its center point, the two endpoints, and its normal. To create the arc, choose Sketch -> Arc of a Circle, and then left-click one of its endpoints. Then release the mouse button; the other endpoint is now being dragged. The center is also being dragged, in such a way as to form an exact semi-circle. Left-click again to place the other endpoint, and then drag the center to the desired position. The arc is drawn counter-clockwise from the first point to the second. The arc must be drawn in a workplane; it cannot be drawn in free space. Tangent arcs may be created automatically. To do so, first select a point where two line segments join. Then choose Sketch -> Arc of a Circle; the arc will be created, and automatically constrained tangent to the two line segments. The initial line segments will become construction lines, and two new lines will be created, that join up to the arc. The arc's diameter may then be constrained in the usual way, with Distance / Diameter or Equal Length / Radius constraints. This is a simple way to round a sharp corner.

Bezier Cubic Segment

This entity is specified by its four Bezier points: two endpoints, and two (in general, off-curve) control points. To create the Bezier cubic, choose Sketch -> Bezier Cubic Segment. Then left-click one endpoint of the cubic segment. Release the mouse button; the other endpoint of the cubic segment is now being dragged. The two control points are intially placed on the straight line between the endpoints; this means that the cubic originally appears as a straight line. Drag the control points to produce the desired curve.

Text in a TrueType Font

This entity is defined by two points, at the top left and bottom left of the text. The distance between the points determines the height of the text; the angle of the line between them determines the orientation of the text, and their position determines the text's position. To create the text, choose Sketch -> Text in TrueType Font. Then left-click the top left point of the text. The bottom right point of the text is now being dragged; left-click again to place it. To change the font, select the text entity. A list of installed fonts appears in the text window; click the font name to select it. To change the displayed text, select the text entity and click the [change] link in the text window.

Constraints

General

To create a constraint, first select the geometry to be constrained. For example, when constraining the distance between two points, first select those two points. Then choose the appropriate constraint from the Constrain menu. Depending on what is selected, the same menu item may generate different constraints. For example, the Distance / Diameter menu item will generate a diameter constraint if a circle is selected, but a length constraint if a line segment is selected. If the selected items do not correspond to an available constraint, then SolveSpace will display an error message, and a list of available constraints. Most constraints are available in both 3d and projected versions. If a workplane is active, then the constraint applies on the projection of the geometry into that workplane. If no workplane is active, then the constraint applies to the actually geometry in free space. For example, consider the line shown below: The line's length is constrained in two different ways. The upper constraint, for 50 mm, applies to its actual length. The lower constraint, for 40 mm, applies to the length of its projection into the xy plane. (The xy plane is highlighted in yellow.) The dotted purple lines are drawn to indicate the locations of the line segment's projected endpoints. In normal operation, the user activates a workplane (or a workplane is activated automatically, for example by creating a "Sketch in New Workplane" group). The user then draws an entity, for example a line. Since a workplane is active, the line is created in that workplane. The user then constrains that line, for example by specifying its length. Since the workplane is still active, the constraint actually applies to the projection of the line segment into the workplane. In this case, the projected distance is equivalent to the 3d distance. If the line segment lies in the workplane, then the projection of that line segment into the workplane is just that line segment. This means that when drawing in a workplane, most of this can be ignored. It's possible to use projected constraints in more complex ways, though. For example, the user might create a line segment in workplane A, and constrain its projection into workplane B. Constraints are drawn in purple on the sketch. If a constraint has a label associated with it (e.g. a distance or an angle), then that label may be repositioned by dragging it with the mouse. To modify the dimension, double-click the label; a text box will appear on the screen, where the new value can be entered. Press enter to commit the change, or Esc to cancel.

Failure to Solve

In some cases, the solver will fail. This is usually because the specified constraints are inconsistent or redundant. For example, a triangle with internal angles of 30, 50, and 90 degrees is inconsistent--the angles don't sum to 180, so the triangle could never be assembled. This is an error. A triangle with internal angles constrained to 30, 50, and 100 degrees is also an error. This is not inconsistent, because the angles do sum to 180 degrees; but it's redundant, because only two of those angles need to be specified. If the sketch is inconsistent or redundant, then the background of the graphics window is drawn in red (instead of the usual black), and an error is displayed in the text window: As a convenience, SolveSpace calculates a list of constraints that could be removed to make the sketch consistent again. To see which constraints those are, hover the mouse over the links in the text window; the constraint will appear highlighted in the graphics window. By deleting one or more of the constraints in that list, the user can make the sketch consistent again. A different type of error occurs when the solver fails to converge. This may be a defect in the solver, or it may occur because impossible geometry was specified (for example, a triangle with side lengths 3, 4, and 10; 3 + 4 = 7 < 10), In that case, a similar error message is displayed, but without a list of constraints to remove to fix things. The problem can be resolved by removing or editing the constraints, or by choosing Edit -> Undo.

Reference Dimensions

By default, the dimension drives the geometry. If a line segment is constrained to have a length of 20.00 mm, then the line segment is modified until that length is accurate. A reference dimension is the reverse: the geometry drives the dimension. If a line segment has a reference dimension on its length, then it's still possible to freely change that length, and the dimension displays whatever that length happens to be. A reference dimension does not constrain the geometry. To convert a dimension into a reference dimension, choose Constrain -> Toggle Reference Dimension. A reference dimension is drawn with "REF" appended to the displayed length or angle. Double-clicking a reference dimension does nothing; the dimension is specified by the geometry, not the user, so it is not meaningful to type in a new value for the reference dimension.

Specific Constraints

To get help on a specific constraint, choose its menu item without first selecting any entities. An error message will be displayed, listing all of the possibilities. In general, the order in which the entities are selected doesn't matter. For example, if the user is constraining point-line distance, then they might select the point and then the line, or the line and then the point, and the result would be identical. Some exceptions exists, and are noted below.

Distance / Diameter

This constraint sets the diameter of an arc or a circle, or the length of a line segment, or the distance between a point and some other entity. When constraining the distance between a point and a plane, or a point and a plane face, or a point and a line in a workplane, the distance is signed. The distance may be positive or negative, depending on whether the point is above or below the plane. The distance is always shown positive on the sketch; to flip to the other side, enter a negative value.

Angle

This constraint sets the angle between two vectors. A vector is anything with a direction; in SolveSpace, line segments and normals are both vectors. (So the constraint could apply to two line segments, or to a line segment and a normal, or to two normals.) The angle constraint is available in both projected and 3d versions. The angle must always lie between 0 and 180 degrees. Larger or smaller angles may be entered, but they will be taken modulo 180 degrees. The sign of the angle is ignored. When two lines intersect, four angles are formed. These angles form two equal pairs. For example, the pictured lines interesect at 30 degrees and 150 degrees. These two angles (30 and 150) are known as supplementary angles, and they always sum to 180 degrees. (Notice that in the sketch, three of the angle constraints are reference dimensions. Given any one of the angles, we could calculate the other three; so a sketch that specified more than one of those angles would be overconstrained, and fail to solve.) When a new angle constraint is created, SolveSpace chooses arbitrarily which supplementary angle to constrain. An arc is drawn on the sketch, to indicate which angle was chosen. As the constraint label is dragged, the arc will follow. If the wrong supplementary angle is constrained, then select the constraint and choose Constrain -> Other Supplementary Angle. A constraint of 30 degrees on one supplementary angle is exactly equivalent to a constraint of 150 degrees on the other.

Horizontal / Vertical

This constraint forces a line segment to be horizontal or vertical. It may also be applied to two points, in which case it applies to the line segment connecting those points. A workplane must be active, because the meaning of "horizontal" or "vertical" is defined by the workplane. It's good to use horizontal and vertical constraints whenever possible. These constraints are very simple to solve, and will not lead to convergence problems. Whenever possible, define the workplanes so that lines are horizontal and vertical within those workplanes.

On Point / Curve / Plane

This constraint forces two points to be coincident, or a point to lie on a curve, or a point to lie on a plane. The point-coincident constraint is available in both 3d and projected versions. The 3d point-coincident constraint restricts three degrees of freedom; the projected version restricts only two. If two points are drawn in a workplane, and then constrained coincident in 3d, then an error will result--they are already coincident in one dimension (the dimension normal to the plane), so the third constraint equation is redundant. When a point is constrained to lie on a circle (or an arc of a circle), the actual constraint forces the point to lie on the cylindrical surface through that circle. If the point and the circle are already coplanar (e.g., if they are both drawn in the same workplane), then the point will lie on the curve, but otherwise it will not.

Equal Length / Radius

This constraint forces two lengths, angles, or radiuses to be equal. The equal-angle constraint requires four vectors as input: the two equal angles are the angle between each pair of inputs. For example, select line segments A, B, C, and D. The constraint forces the angle between lines A and B to be equal to the angle between lines C and D. If the wrong supplementary angle is chosen, then choose Constrain -> Other Supplementary Angle, as for the angle constraint.

Length Ratio

This constraint sets the ratio between the lengths of two line segments. For example, if line A and line B have length ratio 2:1, then the constraint is satisfied if A is 50 mm long and B is 25 mm long. The order in which the lines are selected matters; if line A is selected before line B, then the ratio is length of A:length of B.

At Midpoint

This constraint forces a point to lie on the midpoint of a line. The at-midpoint constraint can also force the midpoint of a line to lie on a plane; this is equivalent to creating a datum point, constraining it at the midpoint of the line, and then constraining that midpoint to lie on the plane.

Symmetric

This constraint forces two points to be symmetric about some plane. Conceptually, this means that if we placed a mirror at the symmetry plane, and looked at the reflection of point A, then it would appear to lie on top of point B. The symmetry plane may be specified explicitly, by selecting a workplane. Or, the symmetry plane may be specified as a line in a workplane; the symmetry plane is then through that line, and normal to the workplane. Or, the symmetry plane may be omitted; in that case, it is inferred to be parallel to either the active workplane's vertical axis or its horizontal axis. The horizontal or vertical axis is chosen, depending which is closer to the configuration in which the points were initially drawn.

Perpendicular

This constraint is exactly equivalent to an angle constraint for ninety degrees.

Parallel / Tangent

This constraint forces two vectors to be parallel. In 2d (i.e., when a workplane is active), a zero-degree angle constraint is equivalent to a parallel constraint. In 3d, it is not. Given a unit vector A, and some angle theta, there are in general infinitely many unit vectors that make an angle theta with A. (For example, if we are given the vector (1, 0, 0), then (0, 1, 0), (0, 0, 1), and many other unit vectors all make a ninety-degree angle with A.) But this is not true for theta = 0; in that case, there are only two, A and -A. This means that while a normal 3d angle constraint will restrict only one degree of freedom, a 3d parallel constraint restricts two degrees of freedom. This constraint can also force a line to be tangent to a curve. In order to do this, the line must already share an endpoint with the curve; this would usually be achieved with a point-coincident constraint. The constraint will force them to also be tangent at that point.

Same Orientation

This constraint forces two normals to have the same orientation. A normal has a direction; it is drawn as an arrow in that direction. The direction of that arrow could be specified by two angles. The normal specifies those two angles, plus one additional angle that corresponds to the twist about that arrow. (Technically, a normal represents a rotation matrix from one coordinate system to another. It is represented internally as a unit quaternion.) For example, the picture below shows two workplanes, whose normals are constrained to be parallel: Because the normals are parallel, the planes are parallel. But one plane is twisted with respect to the other, so the planes are not identical. The line on the left is constrained to be horizontal in the leftmost plane, and the line on the right is constrained to be horizontal in the rightmost. These lines are not parallel, even though the normals of the workplanes are parallel. If we replace the "parallel" constraint with a "same orientation" constraint, then the two workplanes become identical, and the two horizontal lines become parallel. This is a useful constraint when building an assemblies; a single "same orientation" constraint will fix all three of the imported part's rotational degrees of freedom.

Comment

A comment is a single line of text that appears on the drawing. When the comment is created, it appears in the center of the screen. To move the comment, drag it with the mouse. To change the text, double-click it. The comment has no effect on the geometry; it is only a human-readable note.

Groups

General

To view a list of groups, go to the home page of the text window. This is accessible from the link at the top left of the text window, or by pressing Esc. To view a group's page, click on its name in the list. All groups have a name. When the group is created, a default name (e.g., "g008-extrude") is assigned. The user may change this name; to do so, go to the group's page in the text window, and choose [rename]. Groups that create a solid (e.g. extrudes or sweeps) have a "MERGE AS" option, which is displayed in the page in the text window. The group can be merged as union, which adds material to the model, or as difference, which cuts material away. These groups also have a color, which determines the color of the surfaces they produce. To change the color, click on one of the swatches in the group's page in the text window. The group's page in the text window also includes a list of all requests, and of all constraints. To identify a constraint or a request, hover the mouse over its name; it will appear highlighted in the graphics window. To select it, click on the link in the text window. This is equivalent to hovering over and clicking the actual object in the graphics window.

Sketch in 3d

This creates a new empty group, in which the user may draw lines, circles, arcs, and other curves. The ultimate goal is usually to draw closed sections (like a triangle, or a square with a circular cutout, or some more complicated shape). These sections are the input for later groups. For example, an extrude group takes a flat section, and uses it to form a solid. If all of the entities in the group can be assembled into closed loops, then the area that the loops enclose is shaded in very dark blue. This is the area that would be swept or extruded or lathed by a subsequent group.

Sketch in New Workplane

This creates a new empty group, similar to a new "Sketch in 3d". The difference is that a "Sketch in New Workplane" also creates a workplane. The workplane is created based on the entities that are selected when the sketch is created. These may be: A point and two line segments The new workplane has its origin at the specified point. The workplane is parallel to the two lines. If the point is a vertex on a face of the part, and the two lines are two edges of that face, then the resulting workplane will be coincident with that face (i.e., the user will be drawing on that face). A point The new workplane has its origin at the specified point. The workplane is orthogonal to the base coordinate system; for example, its horizontal and vertical axes might lie in the +y and -z directions, or +x and +z, or any other combination. The orientation of the workplane is inferred from the position of the view when the workplane is created; the view is snapped to the nearest orthographic view, and the workplane is aligned to that. If a part consists mostly of ninety degree angles, then this is a quick way to create workplanes. The new group's associated workplane is automatically set to be the active workplane. If the entities in this group do not form closed curves, then an error message is displayed on the screen, and a red line is drawn across the gap. An error is also displayed if the curves are not all coplanar.

Step Translating

This group takes geometry in the active group, and copies it multiple times along a straight line. If a workplane is active when the step translating group is created, then the translation vector must lie parallel to that workplane. Otherwise, the translation vector may go anywhere in free space. The number of copies to create is specified by the user. To change this value, click the [change] link in the group's page in the text window. The copies may be translated on one side, or on two sides. If the copies are translated on one side, then the original will appear to the left of (or above, below, etc.) all the copies. If the copies are translated on two sides, then the original will appear in the center of the copies. The copies may be translated starting from the original, or starting from copy #1. If the translation starts from the original, then the translation will contain the original. (So a 1-element step will always produce the input geometry in its original location.) If the translation starts from copy #1, then the original is not included in the output. (So a 1-element step makes a single copy of the input geometry, and allows the user to translate it anywhere in space.) If the active group is a sketch (sketch in 3d, sketch in new workplane), the the sketch is stepped and repeated. In that case the user would typically draw a section, step and repeat that section, and then extrude the step and repeat. If the active group is a solid (extrude, sweep, lathe), then the solid is stepped and repeated. In this case, the user would draw a section, extrude the section, and then step and repeat the extrusion. In some cases, these two possibilities (extrude the step, vs. step the extrusion) are equivalent. If the translation vector isn't parallel to the section plane, then only the second option will work.

Step Rotating

This group takes the geometry in the active group, and copies it mutiple times along a circle. Before creating the group, the user must select its axis of rotation. One way to do this is to select a point, plus either a line segment or a normal; the axis of rotation goes through the point, and is parallel to the line segment or normal. If a workplane is active, then it's also possible to select just a point; in that case, the axis of rotation goes through that point, and is normal to the workplane. This means that the rotation remains within the plane of the workplane. The step and repeat options (one side / two sides, with original / with copy #1) are the same as for step translating groups. The numer of copies is specified in the same way as for step translating. If the rotated geometry has not yet been constrained, then the copies will be spaced evenly around a circle; for example, if 5 copies are requested, then the spacing will be 360/5 = 72 degrees. To place the copies along less than (or more than) a complete circle, drag a point on one of the copies with the mouse; all of the rest will follow, as the step rotation angle is modified. Constraints (for example an angle constraint, or a point-on-lie constraint) may be used to specify the angle of rotation exactly.

Extrude

This group takes a flat section, and extrudes it to form a solid. The flat section is taken from the section of the group that is active when the extrude group is created. (This is usually a sketch in workplane, or a sketch in 3d, but could also be a step and repeat.) The sketch may be extruded on one side, or on two sides. If the sketch is extruded on one side, then the new solid is either entirely above or entirely below the original sketch. Drag a point on the new surface to determine the extrude direction, and also to determine the extrude depth. Once the extrusion depth looks approximately correct, it may be specified exactly by using constraints. For example, the user might constrain the length of one of the newly extruded edges. If the sketch is extruded on two sides, then the original sketch lies at the exact midpoint of the new solid. This means that the solid is symmetric about the original sketch plane. Later dimensioning often becomes simpler when the part has symmetry, so it's useful to extrude on two sides whenever possible. If a workplane is active when the group is created, then the extrude path is automatically constrained to be normal to that workplane. This means, for example, that a rectangle is extruded to form a rectangular prism. The extrusion has one degree of freedom, so a single distance constraint will fully constrain it. This is usually the desired behaviour. If no workplane is active when the group is created, then the extrude path may be in any direction. This means that a rectangle could be extruded to form a parallelepiped. The extrusion has three degrees of freedom. This is not typically useful. By default, no workplane is active in a new extrude group. This means that constraints will apply in 3d; for example, a length constraint is a constraint on the actual length, and not on the length projected into some plane. This is typically the desired behaviour, but it's possible to activate a workplane in the usual way (by selecting it, then choosing Sketch -> In Workplane).

Lathe

This group takes a flat sketch, and sweeps it around a specified axis, to form a solid of revolution. The section is taken from the group that is active when the lathe group is created. To create a lathe group, first select a line segment. Then choose New Group -> Lathe. The line segment is the axis of revolution. The section must not intersect itself as it is swept along the curve. If the section crosses the axis of rotation, then it is certain to intersect itself and fail.

Sweep

This group takes a flat sketch, and sweeps it along an arbitrary trajectory. The section is taken from the group that is active when the sweep group is created. The path is taken from the group that precedes the active group. The section to sweep should be drawn approximately normal (perpendicular) to the trajectory. As the section is swept, it is maintained normal to the trajectory.

Helical Sweep

This group takes a flat sketch, and sweeps it along a helix. The section is taken from the group that is active when the helical sweep is created. To create a helical sweep, first select a line segment and a point. Then choose New Group -> Helical Sweep. The line segment is the axis of the helix, and the point determines the radius of the helix. To change the parameters of the helix, enter new values in the helical sweep's page in the text window. For example, a 1/2"-10 screw thread has axial pitch 0.100" per turn (since ten turns of 0.100" make an inch), and dRadius = 0. A flat coil has axial pitch zero, but some dRadius. A sweep with nonzero pitch and dRadius produces a conical helix.

Import / Assemble

In SolveSpace, there is no distinction between "part" files and "assembly" files; it's always possible to import one file into another. An "assembly" is just a part file that imports one or more other parts. The imported file is not editable within the assembly. It is imported exactly as it appears in the source file, but with an arbitrary position and orientation. This means that the imported part has six degrees of freedom. To move (translate) the part, click any point on the imported part and drag it. To rotate the part, click any point and Shift+ or Ctrl+drag it. The position and orientation of the part may be fixed with constraints, in the same way that any other geometry is constrained. The Same Orientation constraint is particularly useful when importing parts. This one constraint completely determines the imported part's rotation. (Select a normal on the imported part, select some other normal to constrain it against, and choose Constrain -> Same Orientation). Import groups have a special "MERGE AS" option: in addition to the usual "union" and "difference", they have "assemble". The "assemble" option is identical to "union", except that it displays a warning if the components intersect with each other. This is useful when checking to see if the assembled parts interfere. If the parts interfere, then a warning is displayed underneath the "MERGE AS" line in the group's text window page. The interfering surfaces are also highlighted in the graphics window, in red with black stripes. When an assembly file is loaded, SolveSpace loads all of the imported files as well. If the imported files are not available, then an error occurs. When transfering an assembly file to another computer, it's necessary to transfer all of the imported files as well.

Analysis

Trace Point

SolveSpace can draw a "trail" behind a point as it moves. This is useful when designing mechanisms. The sketch shown below is a four-bar linkage: As the linkage is worked, the midpoint of the top link moves along the cyan curve. This image was produced by drawing the linkage, tracing that midpoint, and then dragging the linkage through its full range of motion with the mouse. To start tracing, select a point, and choose Analyze -> Trace Point. When the point moves, a cyan trail will be drawn behind it. To stop tracing, choose Analyze -> Stop Tracing. A dialog will appear, with the option to save the trace as a CSV (comma-separated value) file. To save the trace, enter a filename. To abandon the trace, choose Cancel or hit Esc. The trace is saved as a text file, with one point per line. Each point appears in the format x, y, z, separated by commas. Many programs, including spreadsheets like Excel, can read this format. The units for the coordinates are determined by the export scale factor. (If the export scale factor is 1, then they are millimeters, and if it's 25.4, then they're inches.) If the mechanism is worked by dragging it with the mouse, then the points in the trace will be unevenly spaced, because the motion of the mouse is irregular. A plot of x vs. y (like the cyan trace above) is not affected, but a plot of x or y vs. t is useless, because the "speed" along the curve is not constant. To avoid this problem, move the point by stepping a dimension, rather than by dragging with the mouse. Select the dimension to be stepped; this can be any distance or angle. Choose Analyze -> Step Dimension. Enter the new final value for that dimension, and the number of steps; then click "step dimension now". The dimension will be modified in multiple steps, and solved at each intermediate value. For example, consider a dimension that is now set to 10 degrees. The user steps this dimension to 30 degrees, in 10 steps. This means that SolveSpace will solve at 12 degrees, then 14 degrees, then 16, and so on, until it reaches 30 degrees. The position of the traced point will be recorded at each intermediate value. When the trace is exported, it represents the position of that point, as the dimensioned link rotates with constant angular speed. The step dimension feature can also improve convergence. In some difficult cases, the solver will fail to find a solution when a dimension is changed. If the specified constraints have multiple solutions, then the solver may also find an undesired solution. In this case, it may be useful to try stepping the dimension to its new value, instead of changing it in a single step.

Measure Volume

This feature reports the volume of the part. Depending on the active units, the volume is given in cubic inches, or in millilitres and cubic millimeters. If the part contains smooth curves (e.g. circles), then the mesh is not an exact representation of the geometry. This means that the measured volume is only an approximation; for a mesh that looks fairly smooth on-screen, expect an error around one percent. To decrease this error, choose a finer chord tolerance.

Export

Bitmap Image

This option will export a bitmap image of whatever is displayed on-screen. It is equivalent to taking a screenshot. This option is useful for producing human-readable output. Choose File -> Export Image. The file is exported as a PNG, which most graphics software can open.

2d Vector (DXF)

This option will generate a 2d vector file that represents a specified plane in the part. Most 2d CAM software, including the software that ships with most laser or waterjet cutters, will accept a DXF file. Before exporting a DXF, it is necessary to specify which plane of the part should be exported. This may be specified by: a face: Any surfaces coplanar with that plane face will appear in the file. The faces must be shown before they can be selected; click the link in the third line of the text window. a point, and two lines or vectors: The export plane is through the point, and parallel to the two lines or vectors. If the two lines or vectors are perpendicular, then they will become the x and y axis in the DXF file. Whichever line is more horizontal in the current view becomes the x axis, and the other one becomes the y. This means that it's possible to rotate the exported DXF through ninety degrees by rotating the view through ninety degrees (in the plane of that face). Similarly, by rotating the part around to look at the face from behind instead of in front, the exported DXF is mirrored. the active workplane If a workplane is active, and nothing is selected when the export command is chosen, then SolveSpace will export any surfaces that are coplanar with the active workplane. The workplane's horizontal and vertical axes become the x and y axis in the DXF file. The units of the DXF file are determined by the export scale factor, which may be specified in the configuration screen. The exported DXF contains only line segments; all curves are broken down into lines, with the specified chord tolerance.

3d Mesh (STL)

This option will generate a 3d triangle mesh that represents the entire part. Most 3d CAM software, including the software for most 3d printers, will accept an STL file. The mesh from the active group will be exported; this is the same mesh that is displayed on screen. The coordinate system for the STL file is the same coordinate system in which the part is drawn. To use a different coordinate system (e.g., to rotate or translate the part), create an assembly with the part in the desired position, and then export an STL file of the assembly. The units of the STL file are determined by the export scale factor, which may be specified in the configuration screen.

Configuration

Material Colors

In the text window screen for certain groups (extrude, lathe, sweep), a palette of eight colors is displayed. This palette allows the user to choose the color of any surfaces generated by that group. These eight colors are specified here, by their components. The components go from 0 to 1.0. The color "0, 0, 0" is black, and "1, 1, 1" is white. The components are specified in the order "red, green, blue". A change to the palette colors does not change the color of any existing surfaces in the sketch, even if the color of an existing surface no longer appears in the palette.

Light Directions

The 3d part is displayed with simulated lighting, to produce the impression of depth. The directions and intensities of these lights may be modified according to user preference. The lights do not have a position; they have only a direction, as if they were coming from very far away. This direction is specified in 3 components, "right, top, front". The light with direction "1, 0, 0" is coming from the right of the screen. The light with direction "-1, 0, 0" is coming from the left of the screen. The light with direction "0, 0, 1" is coming from in front of the screen. The intensity must lie between 0 and 1. A light with intensity 0 has no effect, and 1 is full brightness. Two lights are available. If only one is desired, then the second may be disabled by setting its intensity to zero. When the part is rotated or translated, the lights do not move.

Chord Tolerance, and Max Segments

SolveSpace does not represent curved edges or surfaces exactly. Any curves are broken down into piecewise linear segments, and surfaces are represented as triangles. This introduces some error. The chord tolerance determines how much error is introduced; it is the maximum distance between the exact curve and the line segments that approximate it. If the chord tolerance is decreased, then more line segments will be generated, to produce a better approximation. The chord tolerance is specified in units of screen pixels. This means that when the user zooms in on the model, a better approximation is produced. The same tolerance is used for the mesh that's displayed on screen, and for the mesh that is used to export to a file. It may be helpful to use a large chord tolerance (2-5 pixels) while drawing, for fast response, and then temporarily specify a small chord tolerance (~0.5 pixels) before exporting an STL or DXF file. The fineness of the mesh is also limited by the specified maximum number of piecewise linear segments. A single curve will never be broken down into more than that number of line segments, no matter how fine the chord tolerance.

Perspective Factor

To display a 3d part on-screen, it must be projected into 2d. One common choice is a parallel projection. In a parallel projection, any two lines that are parallel in real life are also parallel in the drawing. A parallel projection is also known as an axonometric projection. Isometric and orthographic views are examples of parallel projections. Another way to transform the image into 2d is with a perspective projection. In a perspective projection, objects closer to the "camera" appear larger than objects that are farther away. This means that some lines that are parallel in real life will not be parallel in the drawing; they will converge at a vanishing point. The image below is a perspective projection. All of the square cutouts are the same size, but the ones at the front (closer to the viewer) are drawn larger, and the ones at the back are drawn smaller. The next image is a parallel projection. All of the square cutouts are the same size on the drawing. (The cutouts at the top might look slightly larger, but that is an optical illusion, because the eye is accustomed to seeing images with perspective.) A perspective projection will often look more realistic, and gives a better impression of depth. The disadvantage is that the perspective distorts the image, and may cause confusion. By default, SolveSpace displays a parallel projection. To display a perspective projection, set the perspective factor to something other than zero. The distance from the "camera" to the model is equal to one thousand pixels divided by the perspective factor.

Edge Color

The surfaces of the 3d part are shaded according to the specified lighting. Different faces will catch the light at slightly different angles, and will therefore appear slightly brighter or darker. This permits the viewer to distinguish the boundary between the faces. Depending on the lighting, this may not provided very much constrast. To make the edges of the part more visible, it's possible to emphasize them with a solid-color line. If the edge color is specified as "0,0,0", then no emphasized edges will be drawn. If any other color is specified, then the edges will be drawn in that color. The edge color is specified in the same format as for the material color.

Export Scale Factor

Internally, SolveSpace represents lengths in millimeters. Before exporting geometry to an STL or DXF file, these lengths are divided by the export scale factor. This scale factor determines the units for the exported file. If the scale factor is set equal to 1, then exported files are in millimeter units. If the scale factor is set equal to 25.4, then the exported files are in inch units, since 1 inch = 25.4 mm. SolveSpace works in a right-handed coordinate system. If the scale factor is negative, then the exported file will appear in a left-handed coordinate system (so that a right-handed screw thread will become left-handed).

Draw Back Face

SolveSpace always works with solid shells. This means that in normal operation, only the outside of a surface should be visible. This setting should therefore have no effect. If a self-intersecting shell is drawn, then inside surfaces may be exposed. Even if the shell is watertight, a few stray pixels from an inside surface may "show through", depending on how the graphics card renders triangles. This setting determines whether those surfaces are discarded, or drawn highlighted in red.

Licensing

As downloaded, SolveSpace does not include a license key. This means that it cannot create files with more than six groups. Larger files may be opened, but not modified. This light version of SolveSpace is intended for evaluation, but non-commercial / personal use is also permitted. The licensed version of SolveSpace can create files with an unlimited number of groups. When a license is purchased, a license file ("solvespace.key") will be sent via email. To activate the license, save this file somewhere on your computer. In SolveSpace, choose Help -> Load License... A file dialog box will appear; select the license file. No license server or dongle is required, and licenses do not expire.

Bugs

Boolean operations are performed on triangle meshes, and not on exact curved surfaces. This often results in poor mesh quality. An equally good mesh might have been achieved with fewer triangles, if the curves were piecewise-linear approximated differently. Or the mesh may contain long skinny triangles. This means that the exported STL files do not contain a high quality mesh. This is generally not a problem, but could be in some applications. Another consequence is that the program runs slower as the number of triangles increases. To obtain a coarser mesh, increase the chord tolerance in the configuration screen. To improve speed and mesh quality, draw the part using fewer Boolean operations. For example, a plate with a hole might be modeled by extruding the plate, and then cutting the hole with a second extrusion. Instead, make a single sketch with both the outline of the plate and the hole, and extrude only once. This is the introductory tutorial. We review the basic user interface, and draw a simple 2d part. This covers rectangles, symmetry constraints, distance/length constraints, and equal length constraints. We draw a slightly more complex part, by combining multiple extrusions. This introduces workplanes and Boolean ops, and several new constraints. We look at constraints in more detail. This covers inconsistent and nonconverging sketches (two common error conditions), projected constraints in 3d, reference dimensions, and construction geometry. We look at step and repeat; this takes entities, and copies them multiple times along a line (translating) or the arc of a circle (rotating). The details of the step are specified using constraints. We build an assembly from multiple parts. The positions and orientations of the parts are enforced using constraints. We run a computed intersection check, to verify that the parts don't interfere. We draw linkages and other mechanisms, and simulate their operation using the constraint solver. The trajectory of certain points on the linkage is traced and exported. We also attach a linkage to a solid model, and animate the solid model by dragging the linkage.