Тема: "Вырезание" примитивов из чертежа произвольным многоугольником

В чертеже присутствуют линии и лвполилини. Задача: "вырезать" часть чертежа произвольной ломаной.
1.Создаю замкнутую полилинию PL, которая пересекает некоторые объекты.
2.Создаю список SPIS из точек вершин PL.
3.Создаю наборы из объектов на пересечении частей PL (ssget "_F" (list 1-я 2-я т-ки)) из SPIS, проверяю их, разбиваю до отрезков (_explode...).
4. Создаю наборы из объектов на пересечении частей PL (ssget "_F" (list 1-я 2-я т-ки))  из SPIS. Вычисляю пересечение части PL с отрезками (inters...) и ("_break..." в т-ке пересечения.
5. Повторяю пп. 3, 4 пока не дойду до до пары последняя ? первая из SPIS (включительно).
5. ИТАК, объекты все порезаны в точках пересечения (хоть и потерял ширину полилинии), НО забирая при помощи (ssget "_WP" SPIS) получаю не совсем тот набор, что необходим. ВСЕ объекты разрезаны как хотелось!!! А вот в набор что-то не вошло, что-то лишнее, т.е забирает иногда ВНЕШНИЙ хвост разрезанного примитива. Что бы это могло быть??? Проверяю набор созданием блока из вышеназванного набора. Может кто посоветует чего-нибудь.

Re: "Вырезание" примитивов из чертежа произвольным многоугольником

Иного результата и не может быть. Программный выбор объектов с помощью заданных контуров всегда ненадежен. Опция "WP" (и другие) удобна для интерактива, когда человек в силах увидеть ошибку и поправить выбор.  Именно это я хотел ответить на Ваш предыдущий вопрос по этой теме, но здесь приведен конкретный пример.

Для того, чтобы в набор попадало именно то, что хочется, надо и формировать его соответственно. В данно случае сначала создать пустой набор (после пункта 2), затем, при выполнении п.3.4 добавлять в этот набор примитивы, поападающие внутрь вырезки. Как это сделать - надо дополнительно напрячь мозги. Например, проверять точки концов каждого примитива на нахождение внутри или на границе контура.

Что касается этой конкретной задачи, по вырезке контура, то ТАК ее можно решить только для простых объектов. А если будут присутствовать сложные (блоки, штриховки и т.д., да еще с вложениями)?

Разумеется, не Вы первый, кому это понадобилось. И никто, насколько мне известно, ПОЛНОСТЬЮ эту задачу не решил. Рекомендую поизучать исходные тексты библиотеки Xpress. Там имеются подобные задачи.

Re: "Вырезание" примитивов из чертежа произвольным многоугольником

Спасибо за совет. Что же касается добавления примитивов в пустой набор, то проблема как раз и состоит в том, что ломаная ПРОИЗВОЛЬНАЯ, т. е. определить в какую сторону она замкнется в конце концов , как мне кажется нереально. Больше поражает то, что ВНЕШНИЕ хвосты, по идее, ну ни как не могут оказаться в наборе после (ssget "_WP"!!!).Это происходит нечасто , но пару раз столкнулся. Т. е. налицо преднамеренное введение AUTODESKом в заблуждение доверчивых программистов.

Re: "Вырезание" примитивов из чертежа произвольным многоугольником

А вы посмотрите, как в интерактивном режиме работает команда SELECT с опцией WP, как это выглядит во время работы, и какие получаются результаты. Все станет понятно.

Команды вырезки произвольного контура очень не хватает Автокаду. Но сделать ее надежной пока не получается.

Автодеск, в данном случае, специально козни не строит. Просто у них самих не получается. Кроме того, программисты Автодеск, как и все другие, "тренируют" свои программы на примитивных ситуациях. А когда программа сдана - вообще про нее забывают.

Прикладным программистам самим не надо быть слишком доверчивыми. То, что хорошо работает в интерактиве, не всегда реализуется программно.