Previous speedup for regenerating vertex-to-vertex mesh was broken;
it did nothing when GenerateAll got called with an explicit range (vs. with no args, to run on the dirty groups), so the emphasized edges ended up out of date. I think this is better. Also check in latest updates to manual. [git-p4: depot-paths = "//depot/solvespace/": change = 1852]solver
parent
a58680201f
commit
5a2803617b
|
@ -4,11 +4,11 @@ for new users; to learn about this program, see the video tutorials.
|
|||
|
||||
<h2>General Navigation</h2>
|
||||
|
||||
Two windows appear on the screen: a larger window that contains
|
||||
graphics, and a smaller window that contains 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.
|
||||
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.
|
||||
|
||||
<h3>Graphics Window and Model View</h3>
|
||||
|
||||
|
@ -24,9 +24,11 @@ for new users; to learn about this program, see the video tutorials.
|
|||
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 -).
|
||||
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
|
||||
|
@ -35,11 +37,13 @@ for new users; to learn about this program, see the video tutorials.
|
|||
|
||||
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.
|
||||
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
|
||||
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.)
|
||||
|
@ -51,10 +55,10 @@ for new users; to learn about this program, see the video tutorials.
|
|||
after the decimal point (45.23), and inch dimensions are always
|
||||
displayed with three (1.781).
|
||||
|
||||
Choose View -> Dimensions in ... 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.
|
||||
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
|
||||
|
@ -66,17 +70,17 @@ for new users; to learn about this program, see the video tutorials.
|
|||
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
|
||||
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:
|
||||
|
||||
<img src="/pics/ref-text-window.png" />
|
||||
|
||||
To navigate to a group's page, click on that group's name (e.g.,
|
||||
"g002-sketch-in-plane". The links may also taken 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
|
||||
"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
|
||||
|
@ -86,6 +90,26 @@ for new users; to learn about this program, see the video tutorials.
|
|||
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
|
||||
|
||||
|
||||
<h3>Show / Hide Entities</h3>
|
||||
|
||||
|
@ -144,25 +168,26 @@ for new users; to learn about this program, see the video tutorials.
|
|||
with this link.
|
||||
|
||||
mesh -- The 3d model of the part consists of many
|
||||
triangles; for example, a flat polygon with
|
||||
n sides is broken down into n - 2 triangles.
|
||||
Use this link to show the triangles on the
|
||||
model. In general, this is useful only for
|
||||
debugging, or to see how fine the mesh is
|
||||
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 may be
|
||||
useful when drawing a sketch that lies within
|
||||
the volume of 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.
|
||||
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
|
||||
|
@ -227,18 +252,17 @@ for new users; to learn about this program, see the video tutorials.
|
|||
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 only exists as
|
||||
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.
|
||||
Or the user may wish to draw the axis of revolution for a lathe
|
||||
group. These lines are called construction lines.
|
||||
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 for extrusion or
|
||||
lathing or sweeping).
|
||||
contribute to the geometry for export (or to the section that
|
||||
will be extruded or lathed or swept).
|
||||
|
||||
<h3>Datum Point</h3>
|
||||
|
||||
|
@ -282,7 +306,7 @@ for new users; to learn about this program, see the video tutorials.
|
|||
To stop drawing line segments, press Escape, or right- or
|
||||
center-click the mouse. MechSketch will also stop drawing new
|
||||
line segments if an automatic constraint is inserted. (For
|
||||
example, draw a closed polygon by left-clicking continuously, and
|
||||
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,
|
||||
|
@ -290,7 +314,7 @@ for new users; to learn about this program, see the video tutorials.
|
|||
|
||||
<h3>Rectangle</h3>
|
||||
|
||||
A rectangle consists of two vertical line segments, and two
|
||||
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)
|
||||
|
@ -402,12 +426,84 @@ for new users; to learn about this program, see the video tutorials.
|
|||
then MechSketch 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:
|
||||
|
||||
<img src="/pics/ref-projd-constraint.png" />
|
||||
|
||||
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 dimension can be
|
||||
entered. Then press enter.
|
||||
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.
|
||||
|
||||
<h3>Failure to Solve</h3>
|
||||
|
||||
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:
|
||||
|
||||
<img src="/pics/ref-inconsistent.png" />
|
||||
|
||||
As a convenience, MechSketch 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.
|
||||
|
||||
|
||||
<h3>Reference Dimensions</h3>
|
||||
|
||||
|
@ -421,12 +517,24 @@ for new users; to learn about this program, see the video tutorials.
|
|||
and the dimension displays whatever that length happens to be. A
|
||||
reference dimension does not constrain the geometry.
|
||||
|
||||
To change 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.
|
||||
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.
|
||||
|
||||
<h3>Specific Constraints</h3>
|
||||
|
||||
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.
|
||||
|
||||
<h3>Distance / Diameter</h3>
|
||||
|
||||
|
@ -434,14 +542,32 @@ for new users; to learn about this program, see the video tutorials.
|
|||
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.
|
||||
|
||||
<h3>Angle</h3>
|
||||
|
||||
|
||||
This constraint sets the angle between two vectors. A vector
|
||||
is anything with a direction; in MechSketch, 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.
|
||||
|
||||
<img src="/pics/tut-line-cross-angles.png" />
|
||||
<img src="/pics/ref-line-cross-angles.png" />
|
||||
|
||||
(Notice that in the sketch, three of the angle constraints are
|
||||
reference dimensions. Given any one of the angles, we could
|
||||
|
@ -475,12 +601,56 @@ for new users; to learn about this program, see the video tutorials.
|
|||
|
||||
<h3>On Point / Curve / Plane</h3>
|
||||
|
||||
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.
|
||||
|
||||
<h3>Equal Length / Radius</h3>
|
||||
|
||||
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.
|
||||
|
||||
<h3>Length Ratio</h3>
|
||||
|
||||
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.
|
||||
|
||||
<h3>At Midpoint</h3>
|
||||
|
||||
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.
|
||||
|
||||
<h3>Symmetric</h3>
|
||||
|
||||
This constraint forces two points to be symmetric about some
|
||||
|
@ -492,13 +662,20 @@ for new users; to learn about this program, see the video tutorials.
|
|||
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 either parallel to the active
|
||||
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.
|
||||
|
||||
<h3>Perpendicular</h3>
|
||||
|
||||
This constraint is exactly equivalent to an angle constraint
|
||||
for ninety degrees.
|
||||
|
||||
<h3>Parallel / Tangent</h3>
|
||||
|
||||
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.
|
||||
|
@ -514,8 +691,16 @@ for new users; to learn about this program, see the video tutorials.
|
|||
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.
|
||||
|
||||
<h3>Same Orientation</h3>
|
||||
|
||||
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
|
||||
|
@ -528,7 +713,7 @@ for new users; to learn about this program, see the video tutorials.
|
|||
For example, the picture below shows two workplanes, whose
|
||||
normals are constrained to be parallel:
|
||||
|
||||
<img src="/pics/tut-parallel-normals.png" />
|
||||
<img src="/pics/ref-parallel-normals.png" />
|
||||
|
||||
Because the normals are parallel, the planes are parallel. But one
|
||||
plane is twisted with respect to the other, so the planes are not
|
||||
|
@ -591,21 +776,31 @@ for new users; to learn about this program, see the video tutorials.
|
|||
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.
|
||||
|
||||
<h3>Sketch in New Workplane</h3>
|
||||
|
||||
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.
|
||||
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 and
|
||||
two are two edges on a plane face of the part, and a vertex
|
||||
on that plane face, then the resulting workplane will be
|
||||
coincident with that face (i.e., the user will be drawing
|
||||
on that face).
|
||||
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
|
||||
|
||||
|
@ -625,6 +820,11 @@ for new users; to learn about this program, see the video tutorials.
|
|||
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.
|
||||
|
||||
<h3>Step Translating</h3>
|
||||
|
||||
This group takes geometry in the active group, and copies it
|
||||
|
@ -647,12 +847,12 @@ for new users; to learn about this program, see the video tutorials.
|
|||
|
||||
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 exactly.)
|
||||
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.)
|
||||
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
|
||||
|
@ -679,14 +879,19 @@ for new users; to learn about this program, see the video tutorials.
|
|||
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.
|
||||
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.
|
||||
|
||||
By default, three copies are created. If a different number is
|
||||
typed in (to the group's page in the text window, as for Step
|
||||
Translating), then the copies will be spaced evenly along a
|
||||
complete circle.
|
||||
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
|
||||
|
@ -694,23 +899,22 @@ for new users; to learn about this program, see the video tutorials.
|
|||
Constraints (for example an angle constraint, or a point-on-lie
|
||||
constraint) may be used to specify the angle of rotation exactly.
|
||||
|
||||
THe step and repeat options (one side / two sides, with original /
|
||||
with copy #1) are the same as for step translating groups.
|
||||
|
||||
<h3>Extrude</h3>
|
||||
|
||||
Before creating a new extrusion, the active group should contain
|
||||
a sketch that consists entirely of closed curves. The extrude
|
||||
group takes that flat sketch, and extrudes it to form a solid.
|
||||
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
|
||||
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, select a line on the side of
|
||||
the extrusion, and constrain its length.)
|
||||
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
|
||||
|
@ -739,10 +943,10 @@ for new users; to learn about this program, see the video tutorials.
|
|||
|
||||
<h3>Lathe</h3>
|
||||
|
||||
Before creating a new lathe group, the active group should contain
|
||||
a sketch that consists entirely of closed curves. The lathe group
|
||||
takes that flat sketch, and sweeps it around a specified axis,
|
||||
to form a solid of revolution.
|
||||
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.
|
||||
|
@ -753,13 +957,32 @@ for new users; to learn about this program, see the video tutorials.
|
|||
|
||||
<h3>Sweep</h3>
|
||||
|
||||
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.
|
||||
|
||||
<h3>Helical Sweep</h3>
|
||||
|
||||
This group sweeps a section along a helix. It might be used to
|
||||
draw a screw thread, or a coil spring.
|
||||
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 draw the section to be swept
|
||||
along the helix.
|
||||
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.
|
||||
|
||||
<h3>Import / Assemble</h3>
|
||||
|
||||
|
@ -881,7 +1104,7 @@ for new users; to learn about this program, see the video tutorials.
|
|||
|
||||
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 drawings.
|
||||
is useful for producing human-readable output.
|
||||
|
||||
Choose File -> Export Image. The file is exported as a PNG,
|
||||
which most graphics software can open.
|
||||
|
@ -889,9 +1112,9 @@ for new users; to learn about this program, see the video tutorials.
|
|||
<h3>2d Vector (DXF)</h3>
|
||||
|
||||
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 laser or waterjet cutters, will accept
|
||||
a DXF file.
|
||||
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:
|
||||
|
@ -927,6 +1150,9 @@ for new users; to learn about this program, see the video tutorials.
|
|||
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.
|
||||
|
||||
<h3>3d Mesh (STL)</h3>
|
||||
|
||||
This option will generate a 3d triangle mesh that represents
|
||||
|
@ -1019,6 +1245,20 @@ for new users; to learn about this program, see the video tutorials.
|
|||
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.
|
||||
|
||||
<img src="/pics/ref-perspective.png" />
|
||||
|
||||
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.)
|
||||
|
||||
<img src="/pics/ref-no-perspective.png" />
|
||||
|
||||
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.
|
||||
|
@ -1063,7 +1303,7 @@ for new users; to learn about this program, see the video tutorials.
|
|||
|
||||
<h2>Licensing</h2>
|
||||
|
||||
As downloaded, MechSketch does not include a license file. This means
|
||||
As downloaded, MechSketch does not include a license key. This means
|
||||
that it cannot create files with more than seven groups. Larger files
|
||||
may be opened, but not modified. This light version of MechSketch
|
||||
is intended for evaluation, but non-commercial / personal use is
|
||||
|
@ -1072,7 +1312,7 @@ for new users; to learn about this program, see the video tutorials.
|
|||
The licensed version of MechSketch can create files with an unlimited
|
||||
number of groups.
|
||||
|
||||
When a license is purchased, a license file ("mechsketch.license")
|
||||
When a license is purchased, a license file ("mechsketch.key")
|
||||
will be sent via email. To activate the license, save this file
|
||||
somewhere on your computer. In MechSketch, choose Help -> Load
|
||||
License... A file dialog box will appear; select the license file.
|
||||
|
@ -1080,3 +1320,11 @@ for new users; to learn about this program, see the video tutorials.
|
|||
No license server or dongle is required, and licenses do not expire.
|
||||
|
||||
|
||||
|
||||
angle bracket with gusset
|
||||
t slot table
|
||||
slotted box
|
||||
linkage
|
||||
inconsistent constraints
|
||||
|
||||
|
||||
|
|
25
generate.cpp
25
generate.cpp
|
@ -127,7 +127,6 @@ bool SolveSpace::PruneConstraints(hGroup hg) {
|
|||
void SolveSpace::GenerateAll(void) {
|
||||
int i;
|
||||
int firstDirty = INT_MAX, lastVisible = 0;
|
||||
bool markVvMeshDirty = false;
|
||||
// Start from the first dirty group, and solve until the active group,
|
||||
// since all groups after the active group are hidden.
|
||||
for(i = 0; i < group.n; i++) {
|
||||
|
@ -135,23 +134,10 @@ void SolveSpace::GenerateAll(void) {
|
|||
g->order = i;
|
||||
if((!g->clean) || (g->solved.how != Group::SOLVED_OKAY)) {
|
||||
firstDirty = min(firstDirty, i);
|
||||
markVvMeshDirty = true;
|
||||
}
|
||||
if(g->h.v == SS.GW.activeGroup.v) {
|
||||
lastVisible = i;
|
||||
}
|
||||
if(markVvMeshDirty) {
|
||||
if(firstDirty == i &&
|
||||
(g->type == Group::DRAWING_3D ||
|
||||
g->type == Group::DRAWING_WORKPLANE))
|
||||
{
|
||||
// These groups don't change the mesh, so there's no need
|
||||
// to regenerate the vertex-to-vertex mesh if they're the
|
||||
// first dirty one.
|
||||
} else {
|
||||
g->vvMeshClean = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(firstDirty == INT_MAX || lastVisible == 0) {
|
||||
// All clean; so just regenerate the entities, and don't solve anything.
|
||||
|
@ -213,6 +199,17 @@ void SolveSpace::GenerateAll(int first, int last) {
|
|||
g->clean = true;
|
||||
} else {
|
||||
if(i >= first && i <= last) {
|
||||
// See if we have to do the vertex-to-vertex mesh, that
|
||||
// we used for emphasized edges.
|
||||
if(first == i &&
|
||||
(g->type == Group::DRAWING_3D ||
|
||||
g->type == Group::DRAWING_WORKPLANE))
|
||||
{
|
||||
// Special case--if the first dirty group doesn't change
|
||||
// the mesh, then no need to regen edges for it.
|
||||
} else {
|
||||
g->vvMeshClean = false; // so we'll regen it
|
||||
}
|
||||
// The group falls inside the range, so really solve it,
|
||||
// and then regenerate the mesh based on the solved stuff.
|
||||
SolveGroup(g->h);
|
||||
|
|
Loading…
Reference in New Issue