How to use AutoLISP to trim lines ?

Hello,everyone!

I meet a problem when use AutoLISP:

There is a long , straight line going through a circle. I just want to trim off the part inside this circle ,and of course to remain the outside part of this line.

Does anyone know how to do that by using AutoLISP? Hope your answer might be as simple as possilble, I am just a begineer to use LISP.

Reply to
jingzhang.jz
Loading thread data ...

I dont understand, why would you want to use autolisp to do this when the trim command will do it for you?

Reply to
Remo Shiva

I can think of two approaches right off.

One is to actually "trim" it by a command call, selecting the two items, and using a point inside the circle (easily generated from the circle's center

OR

another is to find the intersections of the line and circle, the endpoints of the line, and erase the original line and create two lines using the above points.

Both approaches have their challenges.

Have fun, and post some code as you work it out. I'm sure you'll get some help if needed...

Reply to
Michael Bulatovich

(command "trim" "" pt "") pt must be defined as a varible and be the endpoint of the line to trim. This line can be placed in your autolisp routine after the endpoint of your line has been set to the varible pt.

I used this method when I first started learning autolisp but defining the endpoints of the lines and drawing the lines from pointa to pointb is a cleaner way to achieve the same end result. imo Although with radii it does involve a bit of math to define the points to draw the line.

Reply to
Dees

How would the line and circle be selected? I can't think of any obvious way LISP or any other add-on routine could do it faster or with fewer clicks than the TRIM command. ___

Reply to
Paul Turvill

why climb the mountain? because it is there. why decend into the valley? because it isn't there

writing code is fun, end of why.

I make the bold assumption that either you just want to know how to do it for achidemic reasons, or you intend to do it very many times.

Michael is (damn it) right again. I like the more complicated way because in the long run you can do more interesting stuff.

So I would add this. You can make your selection sets by picking entities. (the line and the circle) For that you went to too much work. You can also use ssx to select by filters and get ALL the circles of a particular layer ( or particular radius, radius & layer, linetype, whatever ) and get all the lines of a particular type. without actually picking on the screen.

Colour me anal retentive, but I do my utmost to avoid the word "command" in any lisp. It just isn't right. Once you have the ename of the line you want to "trim" you have choices. Erase the old and create two new entities, or modify the old and create one new. Create a copy of the old line in a new layer. Sum the lengths of the two new lines........

And all this is pretty simple. Error checking, now that't hard.

Reply to
roy

I assume it's part of a larger, more complex function that one wouldn't want to repeat too much.

Reply to
Michael Bulatovich

Got that right. I usually don't get around to it since I work in an office with zero turnover. We just learn to live with the bumps.

Reply to
Michael Bulatovich

PolyTech Forum website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.