steps in thisShell or thisMesh, and then let the Boolean proceed as
usual. If everything works, then this is equivalent. And it's less
code, and it makes stuff like stepping the step and repeat work.
Also begin to work on line/entity/constraint styles, but no real
work yet.
[git-p4: depot-paths = "//depot/solvespace/": change = 2018]
constraint, so that we can export that too. This includes the lines
for the vector font.
A little ugly; it needs some kind of line style (color or width) to
distinguish those lines from the real geometry in the exported
file.
[git-p4: depot-paths = "//depot/solvespace/": change = 2007]
identical to the previous group's (because our thisShell and
thisMesh are empty), then display the previous group's instead.
This saves us re-triangulating the shell (or recalculating the
edges of a triangle mesh) every time our group gets regenerated,
which was horribly slow.
[git-p4: depot-paths = "//depot/solvespace/": change = 2004]
window screen, and remind the user that they could 'fix' the
problem by working with meshes instead.
[git-p4: depot-paths = "//depot/solvespace/": change = 1962]
according to the user's preference. I templated the housekeeping
stuff for Boolean operations and step and repeat, so it's
relatively clean.
Still need to add the stuff to make a mesh vertex-to-vertex, and to
export sections of a mesh.
[git-p4: depot-paths = "//depot/solvespace/": change = 1959]
exact surface shells. And add interference checking; I'll be lazy
and just do that on the meshes, by modifying the self-intersection
tester to ignore coplanar triangles (since that can happen in an
assembly).
[git-p4: depot-paths = "//depot/solvespace/": change = 1958]
a mesh than that's a copy, and if we're working with a shell then
it's the shell's triangulation.
[git-p4: depot-paths = "//depot/solvespace/": change = 1957]
little test app that links against it. I still need to polish a few
things, but this is more or less as it should be.
[git-p4: depot-paths = "//depot/solvespace/": change = 1944]
the fundamental geometric stuff in XxxBase. Next I hope to make the
constraint solver use only the XxxBase types.
[git-p4: depot-paths = "//depot/solvespace/": change = 1941]
and curve.cpp and surface.cpp contain the rest.
Also get rid of the meshError stuff; will just use the nakedEdges
mechanism for that. And I won't run the interference test
continuously, have added a menu item for that.
[git-p4: depot-paths = "//depot/solvespace/": change = 1934]
Add stubs for functions to perform Booleans, and get rid of mesh
stuff, including the kd tree accelerated snap to vertex (which
should not be required if the shell triangulation performs as it
should).
Also check that a sketch is not self-intersecting before extruding
it or whatever. This is dead slow, needs n*log(n) implementation.
[git-p4: depot-paths = "//depot/solvespace/": change = 1902]
from an extrusion, with piecewise linear trim curves for everything
(that are shared, so that they appear only once for the two
surfaces that each trims). No Boolean operations on them, and the
triangulation is bad, because gl seems to merge collinear edges.
So before going further, I seem to need my own triangulation code.
I have not had great luck in the past, but I can't live without it
now.
[git-p4: depot-paths = "//depot/solvespace/": change = 1899]
so now we've got the exact curve loops, with their direction
standardized so that we can tell which direction is out. We still
need the polygon in any case, since that's a convenient way to find
each curve's winding number.
And remove some more leftover code from mesh sweeps.
[git-p4: depot-paths = "//depot/solvespace/": change = 1897]
piecwise linear segments. These are piecewise linear approximated
for display, and currently for the mesh too, but that's the first
step to replace the mesh with exact curved surfaces.
[git-p4: depot-paths = "//depot/solvespace/": change = 1895]
tricky; can't just use the dot product, since that blows up when
you cross pi radians. A gear shift approach, use either sin or cos,
same kind of thing as the 3d-parallel constraint.
And report a NaN constraint as unconverged, of course.
[git-p4: depot-paths = "//depot/solvespace/": change = 1890]
corresponding to each param from the Jacobian, and see if it loses
rank. If it does then that one was important, so it's bound. Then
display a big blue square around its point until the next normal
solve.
[git-p4: depot-paths = "//depot/solvespace/": change = 1887]
are added. There was already precedent for that, since I
auto-remove horiz/vert constraints when symmetry constraints are
added.
[git-p4: depot-paths = "//depot/solvespace/": change = 1875]
not to solve by substitution before rank testing. And report the
unsatisfied constraints when we don't converge.
[git-p4: depot-paths = "//depot/solvespace/": change = 1874]
but the mesh doesn't get combined. That effectively hides it, good
for looking inside and such.
[git-p4: depot-paths = "//depot/solvespace/": change = 1860]
lets us export open curves, if the user drew them that way.
Also increase the limits on how many pwls we will generate for a
single curve.
[git-p4: depot-paths = "//depot/solvespace/": change = 1854]
theorem; it's evaluated as a surface integral over each triangle.
And don't regenerate the emphasized edges unless we have to;
specifically, don't do it when the only dirty group is the
drawing group.
[git-p4: depot-paths = "//depot/solvespace/": change = 1849]
as the difference between the cosines of the two angles. All of the
angle stuff generates huge expressions (Expr *), but doesn't seem
noticeably slow.
[git-p4: depot-paths = "//depot/solvespace/": change = 1847]
These are just a convenience, since it would be possible to get the
same result by drawing a construction line.
[git-p4: depot-paths = "//depot/solvespace/": change = 1836]
based on a chord tolerance. And rewrite the pwl circles to work
against a chord tolerance too (which they really were doing before,
but in funny units).
Also make "assemble" combine type do a union after interference
checking; was previously just copying, which meant that coplanar
faces could break subsequent operations.
And make right-clicking effectively toggle shift key, instead of
forcing it on; so you can pan or rotate with either right or middle
button.
[git-p4: depot-paths = "//depot/solvespace/": change = 1829]
introduced by the bsp routines. It's usually, though not always,
possible to generate a watertight mesh. The occasions where it's
not look ugly, floating point issues, no quick fix.
And use those to generate a list of edges where two different faces
meet, which I can emphasize for cosmetic reasons (and some UI to
specify whether to do that, and with what color).
And make the right mouse button rotate the model, since that was
previously doing nothing.
[git-p4: depot-paths = "//depot/solvespace/": change = 1821]
degree angle, but shows with a right angle symbol instead of a
numerical angle you can edit.
[git-p4: depot-paths = "//depot/solvespace/": change = 1819]
version of the code from SketchFlat, with all arbitrary limits
removed.
The TTF text is its own entity, and that entity includes the
font file basename and the text. That's an extra 128 bytes in the
entity, which is around a 50% increase, kind of a shame. It was
simple, though.
[git-p4: depot-paths = "//depot/solvespace/": change = 1814]
that to try to find them if we can't find them by absolute path.
This is intended to make everything still work if you copy an
entire directory tree of files that import each other.
Also add a mechanism to not paint the scene if we're not sure it's
consistent; otherwise got some crashes on startup. And disable both
text and graphic window when displaying a modal dialog, wasn't
doing that always.
[git-p4: depot-paths = "//depot/solvespace/": change = 1808]
liked, but my more parametric attempts were very difficult to use.
The pitch (both axial and radial) gets specified by typing a
distance in a textbox.
[git-p4: depot-paths = "//depot/solvespace/": change = 1804]
separate groups. The section is swept normal to the trajectory,
producing a mesh. I'm doing the triangles only now, not copying
over any entities.
Also fix a bug in the PNG export; rows are 4-aligned, so that was
breaking when the width of the image wasn't divisible by four. Also
fix a bug in lathes, where it generated overlapping triangles for
one segment.
And change the groups to record both "this mesh", the contribution
due to the extrude/lathe/whatever, and the "running mesh", that we
get after applying the requested Boolean op between "this mesh" and
the previous group's "running mesh". I'll use that to make step and
repeats step the mesh too.
[git-p4: depot-paths = "//depot/solvespace/": change = 1801]
point-line distance equal to line segment length. These are
available in both normal and projected versions, with fancy display
for all of these.
[git-p4: depot-paths = "//depot/solvespace/": change = 1793]
an Expr *, since that complicates multiple units and also memory
management. Now it's just a double.
[git-p4: depot-paths = "//depot/solvespace/": change = 1791]
axis of rotation numerically, so that the associative thing breaks,
and then it also wasn't saving the point on the axis in the file,
so that snapped back to (0, 0, 0) on reload. Now it goes off the
hEntity for a point on the axis and a vector in its direction.
[git-p4: depot-paths = "//depot/solvespace/": change = 1790]
So fix that, and now I can simplify what's exported for an entity.
And add an extra measurement (face-face distance/angle), and some
other little stuff.
[git-p4: depot-paths = "//depot/solvespace/": change = 1789]
user-visible text. And make points hoverable/selectable even when
GW.showPoints is false, and zoom to fit before regenerating on file
open, because then we're at the right zoom level (and will use the
right pwl tolerance).
[git-p4: depot-paths = "//depot/solvespace/": change = 1788]
and rotates, auto-constrain translates in active workplane, speed
up remap list search with a hash table, other stuff.
[git-p4: depot-paths = "//depot/solvespace/": change = 1786]
just the mesh, no derived entities (but I suppose that I could turn
all points into circles).
And fix some bugs where equations didn't get unique IDs, and make
it possible to lock on to the group's workplane automatically, if
you press W while free in 3d with no workplane selected.
[git-p4: depot-paths = "//depot/solvespace/": change = 1780]