# Trimming polyline challenge

## Recommended Posts

Hello all,

got myself a question now, wich i realy cannot solve myself this time...

On the left side 4 cases, with on the right side the desired results.

The case can be anything between these, but will be shaped like this in some way.

I want the blue line to be trimmed on the yellow one, but the blue line must always remain above the yellow one.

Yellow = earthwork, blue = water.

There is always one yellow and one blue line.

lets say...

```!waterline = blue entity

!earthline = yellow entity.

```

Hope somebody can do me a suggestion.

##### Share on other sites

Why do you need this automated... You can easily do this manually... I think this is a rabbit hole for someone willing to code it as it takes more time to make lisp than that lisp can save time by using it...

##### Share on other sites

Since this is a part of something larger where im generating profiles based on numbers.

Sometimes up to 40 profiles in one go.

Edited by Aftertouch

##### Share on other sites

Calculate your intersection points and draw it correctly in the first place?

##### Share on other sites

Few words to solve the puzzle:

• GetBoundingBox method (activeX),

• Ray casting method (algorithm in LISP)

• This pseudo-conditional:

```(if (DoesAVerticallyCastedRayFromTheBlueSegmentIntersectsTheYellowLine BlueSeg YellowLine)
(erase BlueSeg)
)```

Right now I don't have time to assemble it, so good luck solving!

##### Share on other sites
5 hours ago, Aftertouch said:

Since this is a part of something larger where im generating profiles based on numbers.

Sometimes up to 40 profiles in one go.

What sort of line entities are the earthline and the waterline?

##### Share on other sites

Applause for Grrr, as someone just starting down the path of learning Lisp, I personally find this reply more helpful than half a dozen people trying to better each other by seeing who can feed the biggest fish to the OP this breaks it down into easy steps giving useful pointers to the thought process behind it, and some useful tips about how to approach it. I'm saddened by the trend at the moment (in many forums) where people just post requests and they get working solutions, We have some of the brightest people in the Cad world right here on CADTutor, and so many people wanting to learn how to fish. I'm not for one minute suggesting the OP is just hoping someone will give them the code and move onto the next item in the wish list. But all too often that is how it comes across (to me at least). So my thanks to all of you who have answered here. There are a lot of us watching you from the sidelines trying to learn how "you" do it, the way you approach it, more importantly, the methods available and the thought process behind it, and this is much more instructional than saying "here's the answer".

##### Share on other sites
2 hours ago, dlanorh said:

What sort of line entities are the earthline and the waterline?

Oops    Senior moment

I'd do it slightly differently to Grrr, but the approach is much the same

Get the two polylines

Get the coordinates of the waterline

Find the insersection points and feed back into the waterline polyline.

collect the line objects made from exploding the waterline (code below)

`(setq l_objs (vlax-invoke wl_obj 'explode))`

delete waterline

loop through line objects in l_objs

insert an xline (per to) at the mid point of each line object

get the intersection between the xline and the earthline

delete xline

If the mid pt y coord less than the intersection point y coord  add line obj to delete list

end loop

remove delete list objs from l_objs and delete

run the remaining lines in l_objs through pedit (peditaccept set to 1)

Edited by dlanorh

##### Share on other sites

Hello all,

Solved the problem, by instead of trimming the line, drawing the line where it should be.

The program loops trough all vertexes. Checks current and next point, it it intersects, it calculates the points.

## Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

×   Pasted as rich text.   Paste as plain text instead

Only 75 emoji are allowed.