Тема: Пересечение с нелинейными объектами
В Акаде существует функция нахождения точки пересечения двух линий. А как насчет определения точки пересечения отрезка (линии, луча) с объектами типа окружности, дуги? Буду признателен за совет.
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → Разное → Пересечение с нелинейными объектами
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
В Акаде существует функция нахождения точки пересечения двух линий. А как насчет определения точки пересечения отрезка (линии, луча) с объектами типа окружности, дуги? Буду признателен за совет.
Функцию привел на сайте:
Перепечатка со ссылки http://book.by.ru/cgi-bin/book.cgi?book … 1008770245 /admin/
В Автокаде существует и такая функция. Это метод IntersectWidth для vla-объектов Visual Lisp.
Примитивы любого типа. Возвращается весь список точек пересечения (это особенно удобно для ломаных полилиний). Примерный текст такой:
(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
)
)
)
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → Разное → Пересечение с нелинейными объектами
Форум работает на PunBB, при поддержке Informer Technologies, Inc