#8798 closed defect (fixed)
[PATCH] eXtruder misbehaviour
Reported by: | skyper | Owned by: | team |
---|---|---|---|
Priority: | normal | Milestone: | 13.11 |
Component: | Core | Version: | latest |
Keywords: | extruder | Cc: |
Description (last modified by )
There was a bug reported on the German mailing list and I just found another misbehaviour. All I use is the extruder mode (I gonna attach the example .osm file):
Misbehaviour (upper samples)
- Draw way a
- Add node A
- Draw way b (ALT)
- Move northern wall of way b
Instead of moving node A a new node is created which is only part of way b.
Bug (lower sample)
- Draw way a
- Draw way b (ALT)
- Move northern and/or southern wall of way a
Nodes A and B should not be part of way a anymore but they still are. And the new corner nodes of way a are not added to way b.
Repository Root: http://josm.openstreetmap.de/svn Build-Date: 2013-06-13 01:35:38 Last Changed Author: Don-vip Revision: 6005 Repository UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b URL: http://josm.openstreetmap.de/svn/trunk Last Changed Date: 2013-06-13 02:16:00 +0200 (Thu, 13 Jun 2013) Last Changed Rev: 6005 Identification: JOSM/1.5 (6005 de) Linux Debian GNU/Linux 7.0 (wheezy) Memory Usage: 225 MB / 672 MB (130 MB allocated, but free) Java version: 1.6.0_27, Sun Microsystems Inc., OpenJDK 64-Bit Server VM Program arguments: [extruder.osm] Dataset consistency test: No problems found
Attachments (8)
Change History (19)
by , 11 years ago
Attachment: | extruder_sample.png added |
---|
comment:1 by , 11 years ago
Description: | modified (diff) |
---|
follow-up: 3 comment:2 by , 11 years ago
My guess is that this is correct behavior. Extrude affects only one way, the one being extruded.
If a node (A in the upper example, A and B in the lower example) is part of other way it is not moved as to not change the other way b (see #5560).
It is always possible to clean up nodes afterwards manually. In the upper example by merging node A into B. In the lower example by joining node A into way b, ungluing node A from way b and deleting the one that is part of way a.
comment:3 by , 11 years ago
Replying to AlfonZ:
My guess is that this is correct behavior. Extrude affects only one way, the one being extruded.
If a node (A in the upper example, A and B in the lower example) is part of other way it is not moved as to not change the other way b (see #5560).
Ok, I can understand why nodes are not moved still think it could be smarter but the lower example is a bug, as way a should not contain the former corner nodes.
I can always clean up afterwards but that is not the nicest way to progress, time consuming and error-prone.
by , 11 years ago
Attachment: | IgnoreSharedNodes1-OverlappingSegmentOnly.patch added |
---|
Should extrusion create overlapping segments, which can't be simplified by moving the node because it's shared with another way, the node is removed from extruded way and replaced by new one. The behavior is controlled by advanced property extrude.ignore-shared-nodes
(disabled by default).
by , 11 years ago
Attachment: | IgnoreSharedNodes2-BothDirections.patch added |
---|
Should extrusion create overlapping segments or segments in straight line, which can't be simplified by moving the node because it's shared with another way, the node is removed from extruded way and replaced by new one. The behavior is controlled by advanced property extrude.ignore-shared-nodes
(disabled by default).
by , 11 years ago
Attachment: | CurrentBehavior.png added |
---|
by , 11 years ago
Attachment: | IgnoreSharedNodes1-OverlappingSegmentOnly.png added |
---|
IgnoreSharedNodes1-OverlappingSegmentOnly.patch in action
Upper row: 1. original, 2. extrude from 1 downwards, 3. extrude from 1 upwards
Lower row: 1. original, 2. extrude from 1 outwards, 3. extrude from 1 inwards
by , 11 years ago
Attachment: | IgnoreSharedNodes2-BothDirections.png added |
---|
IgnoreSharedNodes2-BothDirections.patch in action
Upper row: 1. original, 2. extrude from 1 downwards, 3. extrude from 1 upwards
Lower row: 1. original, 2. extrude from 1 outwards, 3. extrude from 1 inwards
by , 11 years ago
Attachment: | IgnoreSharedNodes1-Nonsymmetry.png added |
---|
Upper row: 1. original, 2. extrude from 1 downwards, 3. extrude from 2 upwards, 4. extrude from 1 upwards
Lower row: 1. original, 2. extrude from 1 upwards, 3. extrude from 2 downwards, 4. extrude from 1 downwards
comment:4 by , 11 years ago
I have attached two variants of a patch. The new behavior is controlled by property extrude.ignore-shared-nodes
(disabled by default).
For reference, current behavior :
IgnoreSharedNodes1-OverlappingSegmentOnly.patch in action:
Note that shared node A is part of way when extruding outwards and not part when extruding inwards. This creates nonsymmetry.
Consider following: First extrude downwards, then upwards. The node A is part of the way. Extrude only upwards, node A is not part of the way. Similar for reverse order of actions.
IgnoreSharedNodes2-BothDirections.patch in action:
comment:5 by , 11 years ago
Summary: | eXtruder misbehaviour → [PATCH] eXtruder misbehaviour |
---|
comment:6 by , 11 years ago
Thanks a lot.
- I like the first patch much better.
- You can always use undo for the cases where you first went to the wrong direction.
- Still I think that when extruding inwards the new nodes should be part of both ways.
By the way #7991 is a really annoying bug, too. Well if someone finds the time ....
comment:10 by , 11 years ago
Milestone: | → 13.11 (6383) |
---|
screenshot