Wykres commitów

2973 Commity (main)

Autor SHA1 Wiadomość Data
Lex Neva 9249a3ae77 pep8 fixes 2016-10-29 13:28:37 -04:00
Lex Neva 579ef18b56 remove obselete stitch order option 2016-10-28 22:12:03 -04:00
Lex Neva 14ec80d012 switch to millimeters and make pixels_per_millimeter an option 2016-10-28 22:10:54 -04:00
Lex Neva b63abea797 remove unnecessary imports 2016-10-28 21:52:48 -04:00
Lex Neva 46482bfd5e tidy 2016-10-27 22:35:47 -04:00
Lex Neva ae49143c3a studly caps to underscores (pep8) 2016-10-27 22:32:49 -04:00
Lex Neva f2bb136c75 inline reverseTuple 2016-10-27 22:31:59 -04:00
Lex Neva 752b34b4ea get rid of shapelyLineSegmentToPyTuple 2016-10-27 22:29:44 -04:00
Lex Neva 65cb5bf875 simplify polygon sorting 2016-10-27 22:09:59 -04:00
Lex Neva 696e3802ba remove hatching option 2016-10-27 21:59:46 -04:00
Lex Neva dbda3ed3e3 remove trailing spaces 2016-10-27 12:49:05 -04:00
Lex Neva fde8267ed0 tabs to spaces 2016-10-27 12:48:12 -04:00
Lex Neva 90e4cc2c8c big refactor to untangle embroidery from stitch generation 2016-10-26 15:04:15 -04:00
Lex Neva 7cb1b27a67 remove PatchList class and use a simple List 2016-10-26 13:40:00 -04:00
Lex Neva a1cd95b2c8 remove sortorder bits 2016-10-26 13:20:27 -04:00
Lex Neva a7ef582025 be sure to visit selected nodes in the right order 2016-10-26 13:13:27 -04:00
Lex Neva f81a70766f get rid of traveling salesman stuff
The algorithm was terrible.  In general, it seems to work a lot better to just
have the human choose what order things are stitched in than to try to
do it automatically.
2016-10-24 21:55:01 -04:00
Lex Neva 35d5077ca7 remove unused row_spacing_px option from EmbroideryObject 2016-10-24 21:28:19 -04:00
Lex Neva b06783a557 get rid of preamble code and feature
The code was poorly implemented and unclear.  I haven't ever had a need for
preamble.  I think my machine (brother SE400) might do it automatically.
2016-10-24 21:25:12 -04:00
Lex Neva 80c874ab3a remove unused functions 2016-10-24 21:07:24 -04:00
Lex Neva c40ae3cec3 tidy up Patch 2016-10-24 20:54:21 -04:00
Lex Neva afcd2d020a refactor satin a bit 2016-10-24 20:51:43 -04:00
Lex Neva de2cd9a30d proper zigzag underlay 2016-10-20 22:27:48 -04:00
Lex Neva 36085676c8 add center walk and zigzag underlay for satin
the code's a total hack, but it gets the job done
2016-10-19 21:43:23 -04:00
Lex Neva b70e0e7fa8 stuff 2016-10-19 20:47:30 -04:00
Lex Neva 6a23fe868b protect from foot-shooting by printing to stdout 2016-05-16 22:16:36 -04:00
Lex Neva 9f59051c97 add satin underlay and offset params 2016-05-16 22:09:04 -04:00
Lex Neva 4f5a719899 bugfixes 2016-05-16 22:08:50 -04:00
Lex Neva 0e18512947 add pull compensation for satin columns 2016-05-14 15:19:50 -04:00
Lex Neva 75cd530302 align rows properly even for rotated regions, also fix float inaccuracy 2016-04-28 12:07:19 -04:00
Lex Neva 55166bdedd a bunch of features and fixes
* added "flip" option for fills to start stitching in upper left rather than right
  * line up rows in abutting fills properly
  * handle intersect_with_grating intersection result that is a line or single point (skip row)
  * skip endpoint marker tags in SVG files (subtags look like paths)
  * dashed stroke indicates running stitch (<=0.5 width still works but is deprecated)
  * in running stitches, add a stitch at apex of sharp corners
2016-04-27 23:21:17 -04:00
Lex Neva b115c7831a add TODO
Eventually I hope to have a solid embroidery digitizing platform that matches the functionality of basic commercial applications.
2016-02-28 14:15:16 -05:00
Lex Neva ffea1d2bc1 fix: stitches appearing outside fill in case of very short rows 2016-02-28 14:02:57 -05:00
Lex Neva 43b16936be don't embroider stuff set to invisible (layers, groups, paths, etc) 2016-02-25 17:23:16 -05:00
Lex Neva 3c3591c78b embroider everything if nothing is selected 2016-02-25 17:17:41 -05:00
Lex Neva 8f3b03ff6d add option to preserve absolute object stacking order 2016-02-25 17:11:03 -05:00
Lex Neva 25a70ba148 rework satin_column to properly handle segments that are less than the zigzag length 2016-02-23 22:24:36 -05:00
Lex Neva b054de3735 sort line segments to better pick contiguous fill regions 2016-02-23 22:23:58 -05:00
Lex Neva 53598b3508 multiple-stagger stitches in fills
Instead of staggering stitches like this:

--*--*--*-
*--*--*--*

stagger like this:

---*-----------*-----------
------*-----------*--------
---------*-----------*-----
------------*-----------*--
---*-----------*-----------

This ends up looking much prettier on the fabric.  The number of staggers
is configurable; a value of 2 would behave like the previous commit.
2016-02-23 22:23:10 -05:00
Lex Neva d1cd63eecd get rid of randomness in fills
Previously, each row in a fill region was offset by a random amount.  This
looks better than not offsetting at all (which will create visible columns of
stitches), but humans are very good at finding patterns in randomness.  The
result is that fill regions look weird.

This commit instead carefully orders the stitches in fill regions such that
each row's stitches are offset by half of max_stitch_length from the previous.

There are also a couple of other miscellaneous fixes and features in here --
sorry about that.
2016-02-18 21:43:16 -05:00
Lex Neva cf81db3670 add END stitch 2016-02-13 22:13:47 -05:00
Lex Neva 5635eca315 color change BEFORE jump stitch 2016-02-13 22:12:35 -05:00
Lex Neva 13dcbf8846 clean up satin column code and clarify error messages 2016-01-30 23:01:45 -05:00
Lex Neva b1e40861ad add satin column to embrioder params plugin 2016-01-30 23:01:34 -05:00
Lex Neva 8c40bd95e0 add variable satin feature
Variable satin does zigzag stitches between two arbitrary paths.  This lets you do satin stitching of variable width and angles, which is useful for filling smaller regions where tatami filling doesn't make sense.  It's also good for doing satin around corners, because it doesn't leave the outer part of the corner sparsely-stitched.

To use variable satin, create an object containing two paths in inkscape.  Each path should have the same number of vertices.  Zigzag satin will be drawn between the two paths such that a stitch always aligns with each corresponding pair of vertices.  This lets you control the way the stitches are angled by subdividing the paths appropriately.  Tip: you can add a vertex to a path by double-clicking the place on the path where you want the new vertex.

Be careful when going around corners, especially sharp ones.  The number of stitches is based on the zigzag spacing parameter measured around the _longer_ of the two beziers in each segment.  Around corners, even if the outside angle is sharp, you may want to make the inside angle slightly rounded to avoid having a bunch of stitches all land at exactly the same point, which could poke a hole in your fabric.
2016-01-20 03:04:43 -05:00
Lex Neva cf2db11d60 add 'Embroider Params' extension to set XML attributes on svg nodes 2016-01-20 03:04:32 -05:00
Lex Neva acd9db29d3 fix up whitespace error 2016-01-18 22:22:48 -05:00
Lex Neva de87bd71eb augment the TSP algorithm by being greedier
The greedy algorithm can be fairly effective, and it's not particularly
expensive to calculate given the relatively small number of patches in
any given set.  Instead of doing a greedy algorithm starting from the
furthest point from the centroid (what's the theory there...?), just
find greedy paths from all possible starting points and pick the best.
This gets us pretty close to optimal right out of the gate.
2016-01-18 22:22:37 -05:00
Lex Neva 67125cdc0b fix gnarly bug in hill-climbing resulting in hill-falling
try_swap occasionally made very bad swaps that increased the overall cost.
If asked to swap neighboring patches, the calculations were completely wrong.
2016-01-18 22:16:23 -05:00
Lex Neva e2fd415664 fix bug that allowed a patch to be discontiguous 2016-01-18 20:51:31 -05:00