Выбор примитивов между двумя полилиниями

Автор Тема: Выбор примитивов между двумя полилиниями  (Прочитано 3393 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн 1958Автор темы

  • ADN OPEN
  • **
  • Сообщений: 91
  • Карма: 0
Имеется две замкнутые полилинии, одна в другой. Между ними находятся примитивы. Как их выбрать для дальнейшего удаления/перемещения/копирования?


Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Скажу сразу, что ни в одном из AutoCAD'овских API нет готовых средств для этой цели. Самое простое из того, что можно сделать - это получить два набора примитивов и убрать из первого те примитивы, которые есть во втором наборе.
Получаем список вершин (или точек аппроксимации, если в полилинии есть дуговые сегменты) внешней полилинии (назовём его pts1), список вершин (или точек аппроксимации) внутренней полилинии (pts2)
Получаем два набора:
Код - Auto/Visual Lisp [Выбрать]
  1. (setq ss1 (ssget "_CP" pts1))
  2. (setq ss2 (ssget "_CP" pts2))
Ну и из набора ss1 выкидываем всё, что есть в наборе ss2. Ну и в конце для выделения набора:
Код - Auto/Visual Lisp [Выбрать]
  1. (sssetfirst nil ss1)
При этом обе полилинии должны находится в видимой области в момент обращения к функциям (ssget)
Как-то так.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн 1958Автор темы

  • ADN OPEN
  • **
  • Сообщений: 91
  • Карма: 0
Спасибо!
Скажу сразу, что такое решение у меня вертелось в голове. Думал, что есть что-нибудь красивее.
Ну, что же! Будем ваять два набора.  :)