I'm trying to write a command that breaks polylines / lines along a polyline. Is there any way to
A. Find all intersection points of two polylines?
B. Break the polyline at points gained previously?
Any help is appreciated, but keep in mind these are polylines with 30k+ vertices... so try to tailor a response around speed if possible.
You rotate both lines so one is vertical, then see if horizontal one has x values surrounding the vertical one.
Other approaches work too, but in real programs you must also deal with a really close intersection, where mayeb there is a gap of .0000001 and you wantb to consider that an intersection.
Then my approach works.
I've written this for arcs too, so anything can chop anything.
Arcs are not trivial, though you can use acad's api to cut the corner of doing your own code...
Did you try IntersectWith method ?
SomePolyLine.IntersectWith(OtherPolyline, Intersect.ExtendThis/OrNot, PointCollectionVariable, New IntPtr(0), New IntPtr(0))
You can search for this issue here:
another suggestion, you could use each poly's vertices to form a geometry curve and use those pairwise to form a curvecurveintersector object which can return intersections as doubles/points, which in turn you could use as a collection parameter in the getsplitcurves method of the original poly*. whether it's worth the trouble may to depend on how many intersections you expect, and whether it is certain that there actually is an intersection between any two polys
*i'm wary though of how reliable it is to 'carry' intersections over from geometry to database curve, so you'd have to stick to the geometry curve for the splits, which means you'd need a final conversion back into polys (if that's what you need after all)