aihuyujian 发表于 2013-11-26 19:55:33

关于循环中的变量问题

本帖最后由 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:14:49

本帖最后由 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)
)

qiuhaitao110 发表于 2013-11-27 10:47:12

在代码前加(setq jd_list '())
获得需要记录记录的值jd 将其加入列表中
(setq jd_list (cons jd jd_list))
如果jd是有顺序的,将其反转 (setq jd_list (reverse jd_list))
你要使用你的jd值时候用(nth i jd_list)
就可以取出你的jd值

aihuyujian 发表于 2013-11-27 13:12:53

qiuhaitao110 发表于 2013-11-27 10:47 static/image/common/back.gif
在代码前加(setq jd_list '())
获得需要记录记录的值jd 将其加入列表中
(setq jd_list (cons jd jd_list) ...

谢谢回答,你的方法跟版主的基本一样,非常感谢

aihuyujian 发表于 2013-11-27 13:14:16

xyp1964 发表于 2013-11-26 23:14 static/image/common/back.gif


谢谢版主,问题基本解决,版主的代码不啰嗦学习了
页: [1]
查看完整版本: 关于循环中的变量问题