找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 649|回复: 4

[弹指神通]:批量修改圆的半径

[复制链接]
发表于 2005-12-4 18:37:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我写了一个批量修改圆半径的程序,可是有点问题,劳烦各位大侠指点一二.
(defun C:PJ()
(setq new_rad (getreal "请输入新的半径:"))
  (prompt "\n选择:")
  (setq ss (ssget))
  
  (setq n 0)
  (setq k 0)
  
  (repeat (sslength ss)
      (setq en (ssname ss n))
      (setq endata (entget en))
      (setq entype (cdr (assoc 0 endata)))
   
      (if (= entype "CIRCLE")
        (sub_upd_rad)
        )
      (setq n (1 + n))
   )
  (prin1)
)

  (defun sub_upd_rad()
  (setq 40_list (assoc 40 endata))
  (setq new_40_list (cons 40 new_rad))
  (setq endata (subst new_40_list 40_list endata))
  (entmod endata)
    )

  (prompt "\n ***** <<PJ>> ***** 更新圆半径")
  (prin1)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-12-4 19:01:19 | 显示全部楼层
  1. [FONT=courier new](load "xyp_lib.vlx")  ;版本 V.20051204 (1764)
  2. ;|加载通用函数(可在签名栏直接下载)
  3. 如果已经下载xyp_lib并放到搜索路径下可以不再下载!
  4. 利用以下任何一种方式(首选第一种)即可加载和运行通用函数内的所有子程序:
  5. ★1·在acad.lsp中增加(load"xyp_lib")
  6. ■2·在每个程序内增加(load"xyp_lib")
  7. ■3·在command下,输入(load"xyp_lib")
  8. ■4·在菜单.mnl中增加(load"xyp_lib")
  9. ■5·将xyp_lib.vlx文件直接拽到cad屏幕
  10. [COLOR=red] ★通用函数下载地址:[/COLOR]
  11. [url]http://www.xdcad.net/forum/attachment.php?s=&postid=1606661[/url]
  12. |;
  13. ;
  14. (defun c:test ()
  15.   (CMDLA0)
  16.   (if (null rad)
  17.     (setq rad 100)
  18.   )
  19.   (setq        rad (UREAL 7 "" "\n新半径" rad)
  20.         ss  (ssget '((0 . "CIRCLE")))
  21.         i   -1
  22.   )
  23.   (while (setq s1 (ssname ss (setq i (1+ i))))
  24.     (sub_upd s1 40 rad)
  25.   )
  26.   (CMDLA1)
  27. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-4 19:25:56 | 显示全部楼层
等了这么久,看来只有大侠你是我的知音了
我欠你太多了,没办法还要继续欠下去
大哥:以下三个子程序是啥意思啊!
(CMDLA0)
(CMDLA1)

还有
(setq rad (UREAL 7 "" "\n新半径" rad)     "UREAL"

我想学习LISP,可是看不懂你的源代码,或者把我有问题的源代码改一下,求你了,这个问题捆扰我好多天了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-4 19:59:01 | 显示全部楼层
  1. [FONT=courier new](defun C:PJ (/ ss n s1)
  2.   (prompt "\n选择 : ")
  3.   (setq        ss  (ssget '((0 . "CIRCLE")))
  4.         rad (getreal "请输入新的半径 : ")
  5.         n   -1
  6.   )
  7.   (if ss
  8.     (progn
  9.       (repeat (sslength ss)
  10.         (setq s1 (ssname ss (setq n (1+ n))))
  11.         (sub_upd s1 40 rad)
  12.       )
  13.     )
  14.   )
  15.   (princ)
  16. )
  17. (defun sub_upd (ename code newvalue)
  18.   (entmod (subst (cons code newvalue)
  19.                  (assoc code (entget ename))
  20.                  (entget ename)
  21.           )
  22.   )
  23.   (entupd ename)
  24. )

  25. (prompt "\n ***** <> ***** 更新圆半径")
  26. (princ)[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-4 21:24:33 | 显示全部楼层
xyp1964师傅:
终于搞懂了,太感谢了,
以后你就是我的师傅了,有机会\有条件的话来个拜师仪式.

(defun C:PJ (/ ss n s1)
  (prompt "\n选择 : ")
  (setq        ss  (ssget '((0 . "CIRCLE")))
        rad (getreal "请输入新的半径 : ")
        n   -1
  )
  (if (/= ss nil)
    (progn
      (repeat (sslength ss)
              (setq s1 (ssname ss (setq n (1+ n))))
              (sub_upd s1 40 rad)
      )
    )
  )
  (princ)
)
;用新值替换旧值(对象、群码、新值)
(defun sub_upd (ename code newvalue)
  (entmod (subst (cons code newvalue) (assoc code (entget ename))(entget ename)))(新半径子列表、原半径子列表、对象属性列表)
  (entupd ename)
)

(prompt "\n ***** <PJ> ***** 更新圆半径")
(princ)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-21 21:49 , Processed in 0.372442 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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