kellyyang1 发表于 2004-3-9 13:44:00

麻烦高手帮我解决一下问题!!

(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 (&lt; 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-&gt;vla-object s1) "yy"<BR>                       '((1 . lll)))<BR>                       )<BR>       <BR>       (setq ttt (vl-symbol-value(cdr(assoc 1 (vlax-ldata-get<BR>                                                               (vlax-ename-&gt;vla-object (ssname ss 0)) "yy")))))<BR>       )

其实我想得到的是“10”可是为什么得到的总是“30”呢???急需,高手多指点!!

alin 发表于 2004-3-9 14:00:00

(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 (&lt; 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-&gt;vla-object s1) "yy"<BR>                       (list (cons 1 lll)))<BR>                       )<BR>       (setq ttt (cdr(assoc 1 (vlax-ldata-get<BR>                                                               (vlax-ename-&gt;vla-object (ssname ss 0)) "yy"))))<BR>       )

BDYCAD 发表于 2004-3-9 14:06:00

因為在while 循環里面的n值大過3所以只有第一次循環時的實體是用到"10"的. 就是說把(setq lll (nth n ll))改為(setq lll (car       ll))便每次得到"10"了

kellyyang1 发表于 2004-3-9 18:18:00

不是啊!!我并不是总是想得到10啊!!我本意是想随着直线的不同而得到不同的值!!即选择一个直线时得到10,选择另外一个时又可以得到20。。。

meflying 发表于 2004-3-9 19:06:00

2楼的程序有什么问题吗?好歹也给个说法。。。


用下面的提取看看:


(cdar (vlax-ldata-get (vlax-ename-&gt;vla-object (car (entsel))) "yy"))
页: [1]
查看完整版本: 麻烦高手帮我解决一下问题!!