Тема: Пересечение примитивов!
Есть примитив - дуга, как узнать, какие примитивы она пересекает?
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → LISP → Пересечение примитивов!
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Есть примитив - дуга, как узнать, какие примитивы она пересекает?
и мне тоже интересно. и кстати как получить координаты пересечений
Получение точек пересечения примитивов с помощью функций ACET:
(acet-geom-intersectwith (ssname (acet-ui-entsel alst) 0) (ssname (acet-ui-entsel alst) 0) 0)
(vlax-safearray->list(vlax-variant-value (VLA-INTERSECTWITH (vlax-ename->vla-object(ssname (acet-ui-entsel alst) 0)) (vlax-ename->vla-object(ssname (acet-ui-entsel alst) 0)) 0)))
Форма получаемых результатов, естественно, будет разная.
По этой же схеме можно получить список примитив, которые пересекают выбранный примитив:
(setq ss1 (ssname (acet-ui-entsel alst) 0)); Это имя выбранного примитива
(setq nab (ssdel ss1 (ssget "_A"))) ; Это набор всех примитивов рисунка без выбранного примитива
Далее выбираете любую привычную Вам схему выделения примитивов из набора по признаку их пересечения с исходным и/или другим признакам или фильтрам.
Можно и так находить точки пересечения примитивов без АСЕТ:
( с конференции cad.dp.ua)
(defun Intersect (/ Prim1 Prim2 Points Rezult)
(setq Prim1 (vlax-ename->vla-object (car (entsel "Объект1:")))
Prim2 (vlax-ename->vla-object (car (entsel "Объект2:")))
Points (vl-catch-all-apply 'vla-IntersectWith (list Prim1 Prim2 acExtendNone))
)
(cond
((vl-catch-all-error-p Points) nil)
((vl-catch-all-error-p
(setq Points (vl-catch-all-apply 'vlax-safearray->list (list (vlax-variant-value Points))))
) nil
)
(t Points ;Преобразование к удобочитаемому списку точек
(while Points
(setq Rezult (cons (list (car Points) (cadr Points) (caddr Points)) Rezult)
Points (cdddr Points)
)
)
Rezult
)
)
>shura-alex
У меня Мар4, но Ваши пример почему-то не работает. ЕТ загружено, но не узнает команд. Может в комплекте идет более старый ЕТ или это для 2002?
> BelPolk
Посмотрите acetauto.lsp, там расписаны все загружаемые команды и функции.
etv1-9.exe скачан c URL:
http://www-eng.lbl.gov/~anita/pdm/etv1-9.exe
объем: 2714kB
А использовать ET или не использовать - это воля каждого.
Вы, наверное, сами-то используете что-то из ET, иначе зачем устанавливали. Так почему же не воспользоваться этим приложением программистам так же, как его используют чертежники?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → LISP → Пересечение примитивов!
Форум работает на PunBB, при поддержке Informer Technologies, Inc