同样的代码,为什么上一行可以得到数据,下一行就不行。
(defun c:l2w()(setvar "cmdecho" 0)
(setq en (entsel "\n 选取直线:"))
(setq nn (getint "\n 重复次数<5>:"))
(if (null nn) (set nn 5))
(setq endata (entget en))
(setq pt_10 (assoc 10 endata));用!pt_10可以得到10,
(setq pt_11 (assoc 11 endata));用!pt_11只能得到nil。
(setq ang (angle pt_10 pt_11))
(setq dd (distance pt_10 pt_11))
(setq bas1 pt_10)
(setq dd_nn (/ dd nn))
(command "pline" bas1 "a" "a" 180)
(repeat nn
(setq bas2 (polar bas1 ang dd_nn))
(command bas2)
(setq bas1 bas2)
)
(command "")
(entdel en)
)
上面第7行与第8行。同样的代码,一个能得到数据另一个就不行。 本帖最后由 yshf 于 2022-7-31 21:25 编辑
将:(setq endata (entget en))
改为:(setq endata (entget (car en)))
entsel
提示用户通过指定一个点来选择单个对象(图元)
(entsel )参数msg用于提示用户的字符串。如果省略该参数,则提示信息为“选择对象”。返回值表,其中第一个元素是用户所选对象的图元名,第二个元素是用户选择对象时指定的拾取点的坐标值(用当前 UCS 表示)。
yshf 发表于 2022-7-31 21:18
将:(setq endata (entget en))
改为:(setq endata (entget (car en)))
还是不行。 (defun c:l2w()
(setvar "cmdecho" 0)
(setq en (entsel "\n 选取直线:"))
(setq nn (getint "\n 重复次数<5>:"))
(if (null nn) (setq nn 5))
(setq endata (entget (car en)))
(setq pt_10 (cdr(assoc 10 endata)));用!pt_10可以得到10,
(setq pt_11 (cdr(assoc 11 endata)));用!pt_11只能得到nil。
(setq ang (angle pt_10 pt_11))
(setq dd (distance pt_10 pt_11))
(setq bas1 pt_10)
(setq dd_nn (/ dd nn))
(command "pline" bas1 "a" "a" 180)
(repeat nn
(setq bas2 (polar bas1 ang dd_nn))
(command bas2)
(setq bas1 bas2)
)
(command "")
(entdel (car en))
)
(defun c:l2w()
(setvar "cmdecho" 0)
(If (setq en (entsel "\n 选取直线:"))
(progn
(setq nn (getint "\n 重复次数<5>:"))
(if (null nn) (setq nn 5))
(setq endata (entget (car en)))
(setq pt_10 (cdr (assoc 10 endata)));用!pt_10可以得到10,
(setq pt_11 (cdr (assoc 11 endata)));用!pt_11只能得到nil。
(setq ang (angle pt_10 pt_11))
(setq dd (distance pt_10 pt_11))
(setq bas1 pt_10)
(setq dd_nn (/ dd nn))
(command "pline" bas1 "a" "a" 180)
(repeat nn
(setq bas2 (polar bas1 ang dd_nn))
(command bas2)
(setq bas1 bas2)
)
(command "")
(entdel (car en))
)
)
(princ)
) 5、6楼是正解 谢谢两位。 能解释一下吗?
页:
[1]