Converting Selection to Polyline

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

Converting Selection to Polyline

gravo-mm
Hi everyone,

first let me say that I greatly appreciate the existing "Convert Into Polyline" Feature.
However, I'm missing (or unable to find) one bit of functionality:
Converting Only Selection To Polyline,
or to be more exact, specifying that only selected entity be eligible for the Polyline feature.

Consider this example:
I have two eight simple lines of same length, placed to look like (not to technically form) squares,
side by side so that the left edge of the first lies exactly on top of the right edge of the second,
upper and lower left/right corners respectively touching.
(It should look somewhat like this:)
 ---------
|     |     |
|     |     |
 --------

No I wish to transform only the lines looking like the first square into a polyline.
The existing feature, however, would link all touching lines into a polyline,
without a possibility for finer control.

Now I'm using this workflow as a workaround:
-select lines of second square
-create block from selection
>now second lines are not eligible for polyline
-create polyline from rest of lines
-explode block
-delete block

What I would like to do:
-select lines of first square
>polyline feature knows only these are eligible
-create polyline from selection

Is there already an easy way to do that,
or should I make this a feature request?

Thanks for any help
mm
Reply | Threaded
Open this post in threaded view
|

Re: Converting Selection to Polyline

dxli
experimental implementation:

https://github.com/LibreCAD/LibreCAD/commit/6b5125bea3e71fea95898cba4e53332370e0470b

We really need some smart graph algorithms for polyline, contour structures.
gravo-mm wrote
Hi everyone,

first let me say that I greatly appreciate the existing "Convert Into Polyline" Feature.
However, I'm missing (or unable to find) one bit of functionality:
Converting Only Selection To Polyline,
or to be more exact, specifying that only selected entity be eligible for the Polyline feature.

Consider this example:
I have two eight simple lines of same length, placed to look like (not to technically form) squares,
side by side so that the left edge of the first lies exactly on top of the right edge of the second,
upper and lower left/right corners respectively touching.
(It should look somewhat like this:)
 ---------
|     |     |
|     |     |
 --------

No I wish to transform only the lines looking like the first square into a polyline.
The existing feature, however, would link all touching lines into a polyline,
without a possibility for finer control.

Now I'm using this workflow as a workaround:
-select lines of second square
-create block from selection
>now second lines are not eligible for polyline
-create polyline from rest of lines
-explode block
-delete block

What I would like to do:
-select lines of first square
>polyline feature knows only these are eligible
-create polyline from selection

Is there already an easy way to do that,
or should I make this a feature request?

Thanks for any help
mm
Reply | Threaded
Open this post in threaded view
|

Re: Converting Selection to Polyline

gravo-mm
Thanks for your effort.

Will this change become available with the next release (and when might that be?)
or will I have to install from sources?
Reply | Threaded
Open this post in threaded view
|

Re: Converting Selection to Polyline

dxli
it helps a lot if you can install from source and evaluate this experimental feature before we can release 2.0.9, which is already over due.

The implementation seems to be compact, but not clean at it is, and it's following like what we do with Ctl-C or (Move/Copy):

1, if entities already selected, trigger action directly;
2, if no entity selected, enter selection stage.

Need more test, of course.
gravo-mm wrote
Thanks for your effort.

Will this change become available with the next release (and when might that be?)
or will I have to install from sources?
Reply | Threaded
Open this post in threaded view
|

Re: Converting Selection to Polyline

gravo-mm
Well, I've tried it out and it works exactly as I hoped it would.

As for the TODO in Line 56 of your commit:
Why not give the user the opportunity to select the starting point?
Ask the user to "select starting entity". If the user doesn't feel the need to make the choice,
the user can be given the possibility to simply press enter and use the current selection method instead.
Reply | Threaded
Open this post in threaded view
|

Re: Converting Selection to Polyline

dxli
It's great to know that it works for you.

As you can see this quickly gets into topological structure of polylines.

1, can we extend polyline to support graph/contours better?
2, a new GUI action is more appropriate to support.

Do you want to do some coding?

gravo-mm wrote
Well, I've tried it out and it works exactly as I hoped it would.

As for the TODO in Line 56 of your commit:
Why not give the user the opportunity to select the starting point?
Ask the user to "select starting entity". If the user doesn't feel the need to make the choice,
the user can be given the possibility to simply press enter and use the current selection method instead.
Reply | Threaded
Open this post in threaded view
|

Re: Converting Selection to Polyline

gravo-mm
Unfortunately, I neither have the time nor the necessary knowledge to assist with real code work,
as I only have some modest skill in Java and no experience with the LibreCAD codebase whatsoever.

In my opinion as a user, polylines are already quite powerful, so you really should be fine with
just giving the user some more fine-grained control over this operation.
Reply | Threaded
Open this post in threaded view
|

Re: Converting Selection to Polyline

gravo-mm
It occured to me that I mostly worked with this special subtype of polylines: closed polylines.
That's why I didn't really need control over the starting point of a polyline.
However, I would consider this flow user interaction for the specification of a new polyline helpful:

                                                user starts convert
                                  option(like trim with fillet): force closed
                                      selection tools as with "hatch"
                                             user presses enter
selected closed polyline:                                  selected non-closed polyline;
create with any starting point                          fail if force enabled (inform: gap between... etc.)
                                                                  else have user click starting entity
                                                                  create polyline

Note that the currently used auto-finding of touching entities will still be available via "select contour".

By "closed polyline" I mean any polyline with < 2 segments whose starting and ending entity touch.
"force closed" to reject non-closed polylines would be useful for editing dxf files converted with other
software, because these sometimes have small gaps between entities, visible only with deep zoom.

I'm also thinking of some other useful polyline operations and will soon create a subject about these.