Тема: LISP. Определение координат центра произвольного замкнутого контура
;**************** cen_reg.lsp ********************************************* ; Определение координат центра произвольного ; замкнутого контура. ; (defun C:CEN_REG ( / pp echo osm reg minp maxp pmin pmax pxy cx cy ak) (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 pxy (vlax-safearray->list (vlax-variant-value (vla-get-Centroid (vlax-ename->vla-object reg))))); setq (vl-cmdf "_ERASE" reg "") (princ "\n Одна область удалена.") (princ "\n Координаты центра контура: ")(princ pxy) (setq cx (rtos (car pxy))) (setq cy (rtos (cadr pxy))) (setq ak (strcat "\n Координаты центра контура." "\n По X: " cx "\n По Y: " cy)) (alert ak) (setvar "CMDECHO" echo) (setvar "OSMODE" osm) (princ) )
Возможный макрос для кнопки или пункта меню:
^C^C^P(if (not C:CEN_REG) (load "cen_reg")) CEN_REG