Тема: Как осуществить инверсию выбранных объектов?
Както сижу работаю ... и в голову влетела мысль "Почему в автокаде нету инверсии выбранных объектов? :/"
Вот решил в свободную минутку накидать
протестируйте! .........
(defun subtractionss(nabor1 nabor2 / id) (setq id 0) (while (> (sslength nabor1) id) (if (ssmemb (ssname nabor1 id) nabor2) (setq nabor2 (ssdel (ssname nabor1 id) nabor2))) (setq id (1+ id)) );while (setq nabor2 nabor2) ) (defun c:selinv(/ existss allss revss) (setq existss (ssget)) (setq allss (ssget "_A")) (if (null existss) (setq existss (ssadd))) (if (null allss) (setq allss (ssadd))) (if (or (> (sslength existss) 0) (> (sslength allss) 0)) (progn (if (setq revss (subtractionss existss allss)) (progn (princ (strcat "\n " "Реверсия была выполнена" "\n")) (sssetfirst revss revss) (command "_regen") );progn (progn (princ (strcat "\n " "Ошибка: Возможно функция \"subtractionss\" небыла объявлена" "\n")) );progn );if );progn (princ (strcat "\n " "Ошибка: Нет объектов для инверсии" "\n")) );if (princ) )