Add option for node symmetry

Bug #211894 reported by birdsaregood
20
This bug affects 3 people
Affects Status Importance Assigned to Milestone
Inkscape
Triaged
Wishlist
Unassigned

Bug Description

Feature request: Add an option in Inkscape to make objects symmetrical about its vertical and/or horizontal axis (make the nodes on the right/left or top/bottom mirror to the other side for a symmetrical object). This would be very useful in making symmetrical drawings that require some freehand action. Also, maybe have a "keep symmetrical" check-box which allows you to edit nodes on one part of the picture and have the rest of the object change in step with it (similar to the way we already can change the corner curves of rectangles).

Revision history for this message
Petr Dlouhý (petr-dlouhy) wrote :

Hello,
thank for your idea, but it seems to me, that both requested features are already present in Inkscape. Horizontal/vertical symetry is reachable through Object->Flip Horizontal/Vertical (or you can use H or V key). If you want to keep object symmetrical, you can just use clone object, and flip it.
Please write, if your idea was different.

Changed in inkscape:
status: New → Invalid
Revision history for this message
birdsaregood (ariel36) wrote :

Nope, it is very much different. This is talking about a whole new way of keeping a free-hand object symmetrical without separating and re-joining it every time you change something. Its like extending the tools available for modifying rectangles and stars except applied to all objects.

Changed in inkscape:
status: Invalid → New
Revision history for this message
birdsaregood (ariel36) wrote :

It also makes it much, MUCH easier because, lets say you are drawing a shape like a face. If you can sketch an outline and then make one side just like the other, it would be easier. And then you would be able to see the live effects taking place without having to clone, like adjusting a center point so you can see it will be right without having to keep cloning and flipping. Plus, if you just draw an outline of half an object, there would be a line overlapping a little or going through the whole picture, depending on how you set the outline. Having live-effects of all objects would be a great and unique addition to make lots of free-hand art easier, and cloning and flipping is really just a work-around to what this feature should be.

Revision history for this message
birdsaregood (ariel36) wrote :

Just a thought of an addon to this feature: Have a "mirror line" that you can move about the original object to adjust how much of the picture is reflected. When moving, it would show the whole, unreflected object, which could make it easier to change your decision of what you want reflected. Maybe the line could be like a rotate-able like that locks at 45 deg, 90 deg, 180 deg, 360 deg, etc. with maybe an option to fold the reflection line in half and change what segment of the object is repeated around the axis. It would be a nice GUI to the idea.

Revision history for this message
Petr Dlouhý (petr-dlouhy) wrote :

If you are using clone (not duplicate), you don't have to keep cloning and flipping; the changes are live - try to modify left object in attached file. You can also use rotation, to achieve rotation of imaginary mirror-line.

The line tool you suggested, would bring only one thing new - the automatic clip on the line (but you can still do it through clip tool in limited way). Maybe it would be better to improve functionality of clip tool.

Revision history for this message
birdsaregood (ariel36) wrote :

I understand that cloning would allow changing the original object to change the cloned objects, but a tool like that would still be better and easier, especially for the less experienced users.

Revision history for this message
ScislaC (scislac) wrote :

This function now exists in the Technical Drawing tool in current SVN development version. :)

Changed in inkscape:
importance: Undecided → Wishlist
status: New → Fix Released
Revision history for this message
su_v (suv-lp) wrote :

Setting status back from 'Fix Released' to 'Triaged' - no recent activity with regard to the 'Mirror symmetry' LPE (still experimental and disabled by default, even in development builds).

Please revert this change if you think it was done in error and the requested feature is sufficiently supported by the available tools (clones, flip&rotate) in current stable/development versions.

Changed in inkscape:
status: Fix Released → Triaged
Revision history for this message
Victor Westmann (victor.westmann) wrote :

I agree that even though this feature is somewhat present in Inkscape it would be easier if the app had a different UI to implement this feature. With windows and buttons and all. :)

su_v (suv-lp)
tags: added: livepatheffects node-editing
Revision history for this message
Will S (willstott101) wrote :

This would be super useful for me. I currently don't have the time to investigate development for myself.

But I propose starting a workflow plan. NUmbers are user actions, letters are xml actions.

1) Select the mirror 'tool/extension'.
2) Define line (snapping needs to be supported here).
- Perhaps user could select two points, (see #3)
3) User has inputs with visual feedback on which nodes mirror which and which nodes are centerline-snapped.
- Options:
- - Search range on opposite side of mirror.
- - Max distance from centerline for snap.
- Feedback:
- - Color-coded nodes (to avoid loads of lines connecting every single one?)
- - Hover over node to see line connecting the two (maybe make both bold or smth).
- - Centerline nodes definitely in a different color.

a) Adds a sodipod:mirrorline attribute. Probably 'x y r', or some other infinite line representation.
b) Adds a sodipod:mirrornode attribute. (could be same attribute e.g. 'x y r 2c0c')
- Each character is a node.
- Character can be 'c' for a centerline node.
- Character can be an index to refer to the node it is linked to.
- Example: '2c0c' Four nodes, 1 on left, one on centerline, one on right, last on centerline (think a circle with nodes on 9, 12, 3, 6 o clock and the mirrorline down the clock center).

This was a tad rushed but hopefully it makes sense and is a good starting point for discussion (assuming agreement on addition).

- Thanks

Revision history for this message
Will S (willstott101) wrote :

In addition, as mentioned here: https://blueprints.launchpad.net/inkscape/+spec/symmetrical-drawing the tool could be (/ shouldn't be implemented in a way that would prevent) multiple mirrors, or rotated instances. i.e. it should be possible to draw a star, add a mirror and then move on of the handles of one point, and affect the curve of all mirror/rotated segments.

I also forgot to mention that there are two distinct situations for mirroring, taking an existing partial path, and mirroring all points, and taking an existing full path and linking existing nodes.

I believe it would be advantageous to support both. Due to easier editing of existing SVG files, and of course the underlying data having all nodes represented.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Bug attachments

Remote bug watches

Bug watches keep track of this bug in other bug trackers.