Тема: Как определить, что замкнутая полилиния является прямоугольником?
1)Полилиния замкнутая.
2)Надо проверить что это прямоугольник.
Спасибо.
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → LISP → Как определить, что замкнутая полилиния является прямоугольником?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
1)Полилиния замкнутая.
2)Надо проверить что это прямоугольник.
Спасибо.
Получил решение на dwg.ru
До кучи
;; as posted on: http://www.theswamp.org/index.php?topic=43522.msg487926#msg487926 (defun fxRectangle-p (en fuzz / leg obj pts) (vl-load-com) (defun _getpt(obj idx) (vlax-safearray->list(vlax-variant-value (vla-get-coordinate obj idx)))) (and (setq obj (vlax-ename->vla-object en)) (eq "AcDbPolyline" (vla-get-objectname obj)) (vlax-method-applicable-p obj 'getbulge) (vlax-property-available-p obj 'coordinate) (eq (vla-get-closed obj) :vlax-true) (= 8 (length (setq pts (vlax-get obj 'coordinates)))) (vl-every '(lambda (x) (zerop (vla-getbulge obj x))) (list 0 1 2 3)) (setq leg (- (vlax-curve-getdistatpoint obj (list (nth 2 pts) (nth 3 pts))) (vlax-curve-getdistatpoint obj (list (car pts) (cadr pts))))) (vl-every '(lambda (a b) (equal (abs (- (vlax-curve-getdistatpoint obj (_getpt obj a)) (vlax-curve-getdistatpoint obj (_getpt obj b)))) leg fuzz)) (list 0 1 2) (list 1 2 3)) (equal (/ pi 2) (abs (- (angle (_getpt obj 1)(_getpt obj 2))(angle (_getpt obj 2)(_getpt obj 3))))fuzz) ) ) ;; usage: (setq rectangle-p (fxRectangle-p (car (entsel "\nSelect: ")) 0.00001))
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → LISP → Как определить, что замкнутая полилиния является прямоугольником?
Форум работает на PunBB, при поддержке Informer Technologies, Inc