我编了如下一段程序,设想是选择一组图元,可以将所有的线型都改为虚线,虚线的线型比例按各条线的长度进行计算并自动设置.但程序运行的结果是选择的一批图元中只有一个图元的线型改成了虚线,其他的都没有改过来.自己分析了一下,是(setq len (vla-get-length vla-st)) 这句出了问题,对第一个图元能够运行,对第二个图元运行就出错了.
请教各路好汉,是出了什么问题?
(defun C:hh() (setq ss(ssget)) (vl-load-com) (setq acaddocument (vla-get-activedocument(vlax-get-acad-object))) (setq found :vlax-false) (setq LinetypeSel(vla-get-Linetypes AcadDocument)) (VLAX-FOR entry LinetypeSel
(if (= (vla-get-Name entry) "HIDDEN")
(setq found :vlax-true)
)
) (if (= found :vlax-false)
(vla-load LinetypeSel "HIDDEN" "acad.lin")
) (setq nn(sslength ss)) (setq na 0) (while (< na nn) (setq st (ssname ss na)) (setq vla-st (vlax-ename->vla-object st)) (if (setq len (vla-get-length vla-st)) (progn (setq len (* len 0.6)) (vla-put-linetype vla-st "HIDDEN") (vla-put-linetypescale vla-st len) )) (setq na(1+ na)) ); end of while (princ) ) |