inkstitch / inkstitch

Ink/Stitch: an Inkscape extension for machine embroidery design
https://inkstitch.org
GNU General Public License v3.0
934 stars 169 forks source link

Convert stroke path to satin columns internally #255

Open lexelby opened 6 years ago

lexelby commented 6 years ago

I personally don't use simple satin as I prefer to have the control that a satin column brings, and simple satin rendering of corners is suboptimal. It also doesn't support underlay at all.

On the other hand, I keep hearing over and over that others find simple satin much easier to work with and they prefer to use it when possible.

252 opens up an interesting possibility. If we can automatically generated a satin column for the user, why not do it transparently behind the scenes? We can eliminate the suboptimal simple satin algorithm entirely. When a plain path is encountered, convert it to a satin column internally and use that instead.

This opens up excellent possibilities. We can eliminate the distinction between simple satin and custom satin columns entirely. We can support underlay for plain paths. "E" stitch can be achieved simply by drawing a line, which will make applique super-easy. And finally, we'll stop confusing the user with these two kinds of satins, only one of which I actually like to write code for ;)

In order to do this, we need to implement #253 and #254. It's no good to present the user with random errors just because their path intersects itself. There's nothing wrong with self intersection -- it's perfectly legitimate for satin columns to run over themselves and I do it all the time.

Even if we do this, I'd still want to keep the Convert to Satin extension. That way, I can tweak the rungs as needed if Ink/Stitch doesn't place them optimally.

X3msnake commented 6 years ago

The reason why simple satin is good is that you can change the width of the sating on the fly and see it reflected on the work. for newcomers that are bound to make mistakes this is a great thing since they can aproximate the desing as they go along without having to rebuild the shape.

Will you implement this versatility with the new satin? Or once you convert to satin you lose the editability of the thickness of the satin shape?

danielkschneider commented 6 years ago

One maybe could distinguish between an artwork layer without embroidery markup (i think you got already an attribute for that) and then copy the generated satin column into an embroidery objects layer. That way the user could go back to "pure artwork" and start again . ( from my mobile)

lexelby commented 6 years ago

Will you implement this versatility with the new satin? Or once you convert to satin you lose the editability of the thickness of the satin shape?

That's another one of those problems that's much harder than it sounds like it should be. I may be able to implement editability of the thickness down the road, but probably not. In the meantime, I've found that the pull compensation setting can give you this kind of functionality in a pinch.

lexelby commented 6 years ago

@danielkschneider Yup, that sounds pretty good. That's the kind of workflow I'd expect users to develop, and I'd probably want to leave it to them. I do the same kind of thing when I'm digitizing text: I keep a copy of the text objects in another layer and set invisible, in case I need to go back to them and change the font or anything.