CAD БИБЛИОТЕКА
Показать сообщение отдельно
Непрочитано 24.10.2016, 12:17 #1
Прошу добавить в макрос массового поворота объектов функцию RANDOM
MrBrown
 
Регистрация: 26.06.2009
Сообщений: 285

Здравствуйте!
Прекрасный макрос поворота объектов, спасибо за него:
Код:
[Выделить все]
 (defun c:srot (/ ERRCOUNT MAXPT MINPT MIPT MNPT MXPT 
OBJSET VLAOBJ PTLST XLST YLST) 
(vl-load-com) 
(if(not srot:ang)(setq srot:ang (* pi 0.5))) 
(setq oldAng srot:ang 
srot:ang(getangle 
(strcat"\nSpecify rotation angle <"(angtos srot:ang)">: ")) 
); end setq 
(if(null srot:ang)(setq srot:ang oldAng)) 
(setq errCount 0 
ptLst '() 
); en setq
(princ "\n§§§ Select objects or press Enter to Quit. §§§")
(if 
(not(setq objSet(ssget "_I"))) 
(setq objSet(ssget)) 
); end if
(sssetfirst) 
(while objSet
(setq objSet 
(mapcar 'vlax-ename->vla-object 
(vl-remove-if 'listp 
(mapcar 'cadr(ssnamex objSet))))) 
(foreach obj objSet 
(vla-GetBoundingBox obj 'MinPt 'MaxPt) 
(setq mnPt(vlax-safearray->list MinPt) 
mxPt(vlax-safearray->list MaxPt)
miPt (polar mnPt (angle mnPt mxPt)(* 0.5 (distance mnPt mxPt))) 
)
(if 
(vl-catch-all-error-p 
(vl-catch-all-apply 'vla-rotate 
(list obj(vlax-3D-Point miPt)srot:ang))) 
(setq errCount(1+ errCount)) 
) 
); end foreach 
(if(/= 0 errCount) 
(princ(strcat "\n" (itoa errCount) " objects were on locked layer! ")) 
); end if
(princ "\n§§§ Select objects or press Enter to Quit. §§§")
(setq objSet(ssget)) 
); end while 
(princ) 
); end of c:srot
Прошу помочь: добавьте, пожалуйста рандомную функцию, чтобы макрос выполнялся не для всех заранее выбранных примитивов, а случайным образом.
Причина: если отклонения бетона не превышают норм, заказчик закрывает глаза на конкретные цифры и направления стрелок отклонений в исполнительных схемах бетонирования.
При большом количестве стрелок хорошо бы выделить их все (они у меня на одном слое) и запустить макрос поворота, чтобы он перевернул на 180 не все стрелки, а выбранные случайным образом.
Спасибо
p.s. AutoCAD 2014

Последний раз редактировалось MrBrown, 24.10.2016 в 13:29.
Просмотров: 1881
 
Размещение рекламы