麻烦高手帮我解决一下问题!!
(vl-load-com)<BR>(defun c:pp()<BR> (command "line" '(100 100) '(200 200)"")<BR> (command "line" '(200 200)'(200 300)"")<BR> (command "line" '(200 300)'(300 400)"")<BR> (setq ll '("10" "20" "30"))<BR> (setq n 0)<BR> (setq ss (ssget "x"))<BR> <BR> (setq len (sslength ss))<BR> (while (< n len)<BR> (setq s1 (ssname ss n))<BR> (setq lll (nth n ll))<BR> (setq n (1+ n))<BR> (vlax-ldata-put (vlax-ename->vla-object s1) "yy"<BR> '((1 . lll)))<BR> )<BR> <BR> (setq ttt (vl-symbol-value(cdr(assoc 1 (vlax-ldata-get<BR> (vlax-ename->vla-object (ssname ss 0)) "yy")))))<BR> )其实我想得到的是“10”可是为什么得到的总是“30”呢???急需,高手多指点!! (vl-load-com)<BR>(defun c:pp()<BR> (command "line" '(100 100) '(200 200)"")<BR> (command "line" '(200 200)'(200 300)"")<BR> (command "line" '(200 300)'(300 400)"")<BR> (setq ll '("10" "20" "30"))<BR> (setq n 0)<BR> (setq ss (ssget "x")) <BR> (setq len (sslength ss))<BR> (while (< n len)<BR> (setq s1 (ssname ss n))<BR> (setq lll (nth n ll))<BR> (setq n (1+ n))<BR> (vlax-ldata-put (vlax-ename->vla-object s1) "yy"<BR> (list (cons 1 lll)))<BR> )<BR> (setq ttt (cdr(assoc 1 (vlax-ldata-get<BR> (vlax-ename->vla-object (ssname ss 0)) "yy"))))<BR> ) 因為在while 循環里面的n值大過3所以只有第一次循環時的實體是用到"10"的. 就是說把(setq lll (nth n ll))改為(setq lll (car ll))便每次得到"10"了 不是啊!!我并不是总是想得到10啊!!我本意是想随着直线的不同而得到不同的值!!即选择一个直线时得到10,选择另外一个时又可以得到20。。。 2楼的程序有什么问题吗?好歹也给个说法。。。
用下面的提取看看:
(cdar (vlax-ldata-get (vlax-ename->vla-object (car (entsel))) "yy"))
页:
[1]