circles, using a numerical method. And the user can specify a
radius, instead of letting us choose automatically, and specify
whether the original lines should be kept and made construction, or
deleted.
[git-p4: depot-paths = "//depot/solvespace/": change = 2146]
default, let's do a "use perspective projection" item that's off by
default. Same meaning, but less confusion.
[git-p4: depot-paths = "//depot/solvespace/": change = 2132]
to draw those, and hit test with the mouse, and display tool tips
when the user hovers with the mouse. Also, underline links only
when they're hovered, and not otherwise.
And add a separate menu option to align the view to the active
workplane, vs. activating the active group's workplane, and
remap the bottom two graphics window toolbar icons to that and
"nearest iso view" instead of draw in 2d/3d, since people tended
to click on those without understanding and cause trouble.
And by default, we force a parallel projection; so the factory
default camera tangent is now 0.3, not 0.
[git-p4: depot-paths = "//depot/solvespace/": change = 2131]
code. This is now drawn using gl, and the bitmap font (both there
and in the graphics window) is drawn from a texture from a static
table, not from the Win32 functions, since that's ~1000x faster.
So this adds a tool to generate that table. With luck that will
also fix my font issues under WINE, which won't have to render the
TTF itself.
Still needs some cleanup, and to make all the cosmetic improvements
that I want.
[git-p4: depot-paths = "//depot/solvespace/": change = 2130]
File -> New or File -> Open, I freed the Group structures
themselves, but none of their children.
[git-p4: depot-paths = "//depot/solvespace/": change = 2120]
consistently across multiple versionf of Windows, and perhaps not
be immediately ignored by the user.
[git-p4: depot-paths = "//depot/solvespace/": change = 2108]
exporting our view to any file that doesn't have a canvas size (and
therefore doesn't get everything shifted to fit with the requested
margins around it in the canvas).
[git-p4: depot-paths = "//depot/solvespace/": change = 2107]
requires user interface to specify the depth, number of passes,
feed, and plunge feed, unfortunately.
[git-p4: depot-paths = "//depot/solvespace/": change = 2106]
rotation. Also clean up the handling of units, by putting the
conversion factors in only one place, and clean up the
expression-parsing but removing all the copies of the same error
message.
[git-p4: depot-paths = "//depot/solvespace/": change = 2093]
does that, and adds a scale factor to that transformation (instead
of just mirroring, as before), but also:
* Replace the "import mirrored" mechanism with a scale factor,
which if negative corresponds to a reflection as well.
* Fix self-intersection checker to report a meaningful point
when edges are collinear.
* Don't blow an assertion on some types of invalid file;
instead provide a nice error message to the user.
* Clear the naked edges before each regen.
* Don't create zero-length line segments by snapping a line
segment's end to its beginning.
[git-p4: depot-paths = "//depot/solvespace/": change = 2086]
only in a workplane; but this means that plane sketches are
conveniently transformed from one plane to another.
Also tweak snap to grid to ignore unsnappable entities instead of
triggering an error, and to remove arbitrary limit on the number of
entities / comments that will be snapped.
[git-p4: depot-paths = "//depot/solvespace/": change = 2084]
load it as a texture, and show it instead of a flat-color
background. Includes user interface to specify scale and
translation of image, but the rotation is always aligned to the
view.
[git-p4: depot-paths = "//depot/solvespace/": change = 2071]
one point to be dragged simultaneously. So now a dragged point
drags all the selected points and entities, and a dragged entity
drags its points (except for circles, which drag the radius).
This means that the number of forced points for the solver must now
be unlimited, and it is.
Also add commands to invert the selection within the active group,
and to select an edge chain starting from the current selection.
And redo the context menus a bit; still not great, but less
cluttered and more systematic.
[git-p4: depot-paths = "//depot/solvespace/": change = 2064]
also means that closed contours will get output as a single path
now, vs. one open path per Bezier segment before.
I've simplified the 2d/3d wireframe export targets somewhat; they
now support only Beziers, without an additional special case for
line segments. The performance penalty for that should not be worth
caring about, since that's infrequent.
And fix a memory leak in FindOuterFacesFrom(), fix ugly output of
filled triangles in PDF (because the line join style did bad things
on long skinny triangles), fix non-zero Z coordinates for exported
views or sections in DXF or STEP.
[git-p4: depot-paths = "//depot/solvespace/": change = 2061]
loop), and open-ended splines, with their tangents specified at
their endpoints.
Also change constraint solver matrix size to 1024, on the theory
that a power of two will generate better array indexing, and
replace fabs() with my own function that for some reason is
faster.
[git-p4: depot-paths = "//depot/solvespace/": change = 2055]
the same plumbing as the 2d vector output.
Also fix piecewise linear tolerance when the export scale factor is
not equal to one; have to scale the chord tol along with that.
[git-p4: depot-paths = "//depot/solvespace/": change = 2053]
instead of tying that to whether the shaded model is shown. And
rewrite all URLs to solvespace.com, not www.solvespace.com, and get
rid of the nag screen that I just added because opening the website
with ShellExecute seems to freeze a bit on startup.
[git-p4: depot-paths = "//depot/solvespace/": change = 2044]
perspective and parallel projections. Add a snap grid, for points
and for text comments. Draw text comments in the plane of their
workplane if they have one, otherwise always facing forward.
And fix a few nasty bugs: the possibility of an extremely long
animation onto a workplane, accidental use of the wrong style line
width for constraints, misplaced text box in style screen for
default styles, other little stuff.
[git-p4: depot-paths = "//depot/solvespace/": change = 2037]
Constraint::COMMENTs), including line width and color, and text
height and origin location.
[git-p4: depot-paths = "//depot/solvespace/": change = 2033]
formats, with the proper color and width. This may need a bit of
cleanup for stuff like the hidden line removal, which currently
loses the style.
Also fix a bug in the test for arcs of a circle. A second-order
Bezier with collinear control points really is an arc, but it's an
arc with infinite radius so stuff tends to blow up. So return false
for that one.
[git-p4: depot-paths = "//depot/solvespace/": change = 2030]
line width units, on-screen and export visibility. So now we can
use that to modify the default styles, or to create custom styles.
Also add code to draw fat lines, with round endcaps, since gl
doesn't do that.
Next we need some user interface to assign styles to entities, and
to make all the export file formats support the style attributes.
[git-p4: depot-paths = "//depot/solvespace/": change = 2029]
mechanism. This gets filled in from some defaults, and stored in
the registry. The default styles do not get saved in the file, but
user-created styles (which aren't supported yet) do.
[git-p4: depot-paths = "//depot/solvespace/": change = 2028]
size for EPS, etc.). This can either be fixed, with a given width
and height and offset, or automatic, by the left right bottom top
margins.
And draw nicer dimensions for length, with arrows and more
extension lines. Add code to trim those lines against the
(rectangular, axis-aligned) box that contains the actual number,
and use that (instead of the elliptical interpolation, which was
only approximately right) for diameter dimensions too.
[git-p4: depot-paths = "//depot/solvespace/": change = 2027]
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]
and their holes into their own advanced faces. So a single surface
with multiple outer contours generates multiple advanced faces.
Also turn the default chord tol down to 1.5 pixels, seems more
likely to make the exact surface Booleans work.
[git-p4: depot-paths = "//depot/solvespace/": change = 1975]
feared. Though I don't have rational surfaces or curves going yet,
and I don't have the stuff to handle holes or multiple outer
contours in a single surface.
[git-p4: depot-paths = "//depot/solvespace/": change = 1974]
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]
we're inconsistent (singular Jacobian). That's slow, so we should
provide a library interface to disable it.
[git-p4: depot-paths = "//depot/solvespace/": change = 1946]
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]
tables from SolveSpace to their own class. This is intended to
simplify use of the constraint solver in a library.
[git-p4: depot-paths = "//depot/solvespace/": change = 1942]
cubics, so add routines to approximate a rational Bezier of any
degree in that form. And use those for EPS and SVG when applicable,
so now even stuff like ellipses gets exported smooth.
[git-p4: depot-paths = "//depot/solvespace/": change = 1938]
our specified section plane; we then split them according to the
start and endpoints of each STrimBy, using de Castejau's algorithm.
These sections get projected (possibly in perspective, which I do
correctly) into 2d and exported.
Except, for now they just get pwl'd in the export files. That's the
fallback, since it works for any file format. But that's the place
to add special cases for circles etc., or to export them exactly.
DXF supports the latter, but very painfully since I would need to
write a later-versioned file, which requires thousands of lines of
baggage. I'll probably stick with arcs.
[git-p4: depot-paths = "//depot/solvespace/": change = 1936]
closed form. This is a fairly good speedup, and handles tangency
well.
But that shows that tangency has other problems; need to classify
edges correctly (whether they point to a coincident surface) in
curved surfaces too. I need to tweak SShell::ClassifyPoint().
[git-p4: depot-paths = "//depot/solvespace/": change = 1933]
triangle join. And add controls to show and hide the solid model
edges (independently of the shaded mesh), and to suppress the
shaded triangles from SVG/EPS output.
[git-p4: depot-paths = "//depot/solvespace/": change = 1932]
export. So I calculate lighting for each triangle in the mesh, make
a BSP, and then traverse it in-order and output those as SVG or
EPS. And I test edges against the mesh, removing those portions of
the edge that overlap a triangle in front of them (using the
kd-tree to accelerate).
[git-p4: depot-paths = "//depot/solvespace/": change = 1931]
use that for surface-line intersections. That has major problems
with the heuristic on when to stop and do Newton polishing.
There's also an issue with all the Newton stuff when surfaces join
tangent.
And update the wishlist to reflect current needs.
[git-p4: depot-paths = "//depot/solvespace/": change = 1925]
fix convergence tolerance so that points projected into a rational
polynomial surface end up much closer than LENGTH_EPS.
[git-p4: depot-paths = "//depot/solvespace/": change = 1906]
the same precedence as sqrt. Add the code to find naked edges, and
draw them highlighted on the model. And make the direction of trim
curves consistent, always ccw with normal toward viewer; so there's
no need to fix the directions before triangulating.
[git-p4: depot-paths = "//depot/solvespace/": change = 1903]