关于循环中的变量问题
本帖最后由 aihuyujian 于 2013-11-26 19:58 编辑代码如下(不完整)
(defun c:bad()
(princ "\n选取第一条直线")
(setq dx1 (entget (car (entsel '((0 . "line"))))))
(setq d1 (assoc 10 dx1))
(setq d2 (assoc 11 dx1))
(princ "\n选取其他直线")
(setq ss (ssget '((0 . "line"))))
(setq s (sslength ss))
(setq k 0 n 1)
(while (< k s)
(setq dx (entget (ssname ss k)))
(setq d3 (assoc 10 dx))
(setq d4 (assoc 11 dx))
(set (read (strcat "jd" "n")) (inters d1 d2 d3 d4 nil))
(setq n (1+ n)))
比如我想求多条直线与第一条直线的交点,不知道有几个,所以用jd n 来记录交点的坐标,接下来想要标注这些点间的尺寸也就是尺寸标注,怎么读取jd n的值并且标注,还有选第二次的其他直线时 怎么排除第一次选中的直线,想的头都大了还是解决不了,请版主和各位大虾帮帮忙修改修改代码,谢谢啦
本帖最后由 xyp1964 于 2013-11-26 23:17 编辑
(defun c:tt ()(setq dx1 (entget (car (entsel "\n选取第一条直线: ")))
p1(cdr (assoc 10 dx1))
p2(cdr (assoc 11 dx1))
)
(princ "\n选取其他直线")
(setq ss(ssget '((0 . "line")))
i -1
ptn '()
)
(while (setq s1 (ssname ss (setq i (1+ i))))
(setq dx(entget s1)
pt(inters p1 p2 (cdr (assoc 10 dx)) (cdr (assoc 11 dx)) nil)
ptn (cons pt ptn)
)
)
(princ ptn)
(princ)
)
在代码前加(setq jd_list '())
获得需要记录记录的值jd 将其加入列表中
(setq jd_list (cons jd jd_list))
如果jd是有顺序的,将其反转 (setq jd_list (reverse jd_list))
你要使用你的jd值时候用(nth i jd_list)
就可以取出你的jd值 qiuhaitao110 发表于 2013-11-27 10:47 static/image/common/back.gif
在代码前加(setq jd_list '())
获得需要记录记录的值jd 将其加入列表中
(setq jd_list (cons jd jd_list) ...
谢谢回答,你的方法跟版主的基本一样,非常感谢 xyp1964 发表于 2013-11-26 23:14 static/image/common/back.gif
谢谢版主,问题基本解决,版主的代码不啰嗦学习了
页:
[1]