Тема: LISP. Определение координат центра прямоугольной ячейки. Примеры
Прямоугольная ячейка должна быть пуста и может быть образована отрезками, полиниями или прямоугольником.
;**************** cen_rec.lsp ********************************************* ; Определение координат центра прямоугольной ячейки. ; (defun C:CEN_REC ( / pp echo osm reg minp maxp pmin pmax pxy) (vl-load-com) (setq echo (getvar "CMDECHO")) (setvar "CMDECHO" 0) (setq osm (getvar "OSMODE")) (setvar "OSMODE" 0) (setq pp (getpoint "\n Укажите точку внутри ячейки: ")) (vl-cmdf "_BOUNDARY" "_A" "_O" "_R" "" pp "") (setq reg (entlast)) (setq vlaobj(vlax-ename->vla-object reg)); Преобразование области в VLA-объект. (vla-GetBoundingBox vlaobj 'minp 'maxp) ; Массивы кординат диагонали прямоугольника. (setq pmin(vlax-safearray->list minp) ; Преобразование массивов pmax(vlax-safearray->list maxp) ; в списки. pxy (list ; Вычисление координат центра прямоугольника. (+(car pmin)(/(-(car pmax)(car pmin))2)) (+(cadr pmin)(/(-(cadr pmax)(cadr pmin))2)) ) ); setq (vl-cmdf "_ERASE" reg "") (princ "\n Одна область удалена.") (princ "\n Координаты центра ячейки: ")(princ pxy) (setvar "CMDECHO" echo) (setvar "OSMODE" osm) (princ) )