明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 767|回复: 8

[源码] 同样的代码,为什么上一行可以得到数据,下一行就不行。

  [复制链接]
发表于 2022-7-31 21:11:48 | 显示全部楼层 |阅读模式
  1. (defun c:l2w()
  2. (setvar "cmdecho" 0)
  3.   (setq en (entsel "\n 选取直线:"))
  4.   (setq nn (getint "\n 重复次数<5>:"))
  5.   (if (null nn) (set nn 5))
  6.   (setq endata (entget en))
  7.   (setq pt_10 (assoc 10 endata));用!pt_10可以得到10,
  8.   (setq pt_11 (assoc 11 endata));用!pt_11只能得到nil。
  9.   (setq ang (angle pt_10 pt_11))
  10.   (setq dd (distance pt_10 pt_11))
  11.   (setq bas1 pt_10)
  12.   (setq dd_nn (/ dd nn))
  13.   (command "pline" bas1 "a" "a" 180)
  14.   (repeat nn
  15.     (setq bas2 (polar bas1 ang dd_nn))
  16.     (command bas2)
  17.     (setq bas1 bas2)
  18.     )
  19.   (command "")
  20.   (entdel en)
  21.   )


 楼主| 发表于 2022-7-31 21:15:37 | 显示全部楼层
上面第7行与第8行。同样的代码,一个能得到数据另一个就不行。
发表于 2022-7-31 21:18:34 | 显示全部楼层
本帖最后由 yshf 于 2022-7-31 21:25 编辑

将:(setq endata (entget en))
改为:(setq endata (entget (car en)))

entsel
提示用户通过指定一个点来选择单个对象(图元)
(entsel [msg])
参数
msg
用于提示用户的字符串。如果省略该参数,则提示信息为“选择对象”。
返回值
表,其中第一个元素是用户所选对象的图元名,第二个元素是用户选择对象时指定的拾取点的坐标值(用当前 UCS 表示)。

 楼主| 发表于 2022-7-31 21:25:59 | 显示全部楼层
yshf 发表于 2022-7-31 21:18
将:(setq endata (entget en))
改为:(setq endata (entget (car en)))

还是不行。
发表于 2022-7-31 21:40:18 | 显示全部楼层
(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))
  )

发表于 2022-7-31 21:51:25 | 显示全部楼层
(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)
)
发表于 2022-8-1 08:38:39 | 显示全部楼层
5、6楼是正解
 楼主| 发表于 2022-8-1 22:20:25 来自手机 | 显示全部楼层
能解释一下吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-9-29 21:28 , Processed in 0.147192 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表