明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 602|回复: 6

[源码] 新手请教程序代码运行问题

[复制链接]
发表于 2024-10-14 13:39:53 | 显示全部楼层 |阅读模式
请教高手以下代码实现不了变直径功能,请帮忙指出不对之处,谢谢

(defun c:TY()
  (setq new_rad(getreal "请求输入圆的新半径值:"))
  (prompt "\n<<框选欲更新半径的圆>>")
  (setq ss(ssget))
  (setq n 0 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))



(princ(strcat "\n共有<" (itoa k) ">个圆更新半径=" (rtos new_rad)))
(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)
  (setq k (1+k))
  )

(prin1)
)

发表于 2024-10-14 14:02:00 | 显示全部楼层
  1. (defun c:TY(/ en endata entype k n new_rad ss sub_upd_rad)
  2.   (setq new_rad(getreal "请求输入圆的新半径值:"))
  3.   (prompt "\n<<框选欲更新半径的圆>>")
  4.   (setq ss(ssget))
  5.   (setq n 0 k 0)
  6.   (repeat(sslength ss)
  7.                 (setq en(ssname ss n))
  8.                 (setq endata(entget en))
  9.                 (setq entype (cdr(assoc 0 endata)))
  10.                 (if(= entype "CIRCLE")
  11.                         (progn
  12.                                 (setq 40_list(assoc 40 endata))
  13.                                 (setq new_40_list (cons 40 new_rad))
  14.                                 (entmod(subst new_40_list 40_list endata))
  15.                         )
  16.     )
  17.                 (setq n (1+ n))
  18.                 (setq k (1+ k))
  19.                 (prin1)
  20.         )
  21.         (princ(strcat "\n共有<" (itoa k) ">个圆更新半径=" (rtos new_rad)))
  22.         (prin1)
  23. )
发表于 2024-10-14 14:09:26 | 显示全部楼层
(defun c:TY ()
  (setq new_rad (getreal "请求输入圆的新半径值:"))
  (prompt "\n<<框选欲更新半径的圆>>")
  (setq ss (ssget))
  (setq n 0 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))
  )
  (princ (strcat "\n共有<" (itoa k) ">个圆更新半径=" (rtos new_rad)))
  (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)
  (setq k (1+ k))
)

(prin1)
发表于 2024-10-14 14:14:20 | 显示全部楼层
  1. (defun c:gg(/ en n new-r ss)
  2.         (setq ss(ssget '((0 . "CIRCLE"))));直接选取圆
  3.         (setq new-r(getreal "设置新半径:"))
  4.         (setq n(sslength ss))
  5.         (print(strcat "共计修改了"(rtos n 2 0)"个圆!半径为"(rtos new-r 2 0)))
  6.         (repeat n
  7.                 (setq en(ssname ss(setq n(1- n))))
  8.                 (entmod(subst(cons 40 new-r)(assoc 40(entget en))(entget en)))
  9.         )
  10.         (princ)
  11. )


这样简洁一些
 楼主| 发表于 2024-10-14 15:49:39 | 显示全部楼层

谢谢高手不令赐教
发表于 2024-10-14 22:01:54 | 显示全部楼层
  1. (defun c:tt ()
  2.   (defun SubUpd(e c v)(entmod(subst(cons c v)(assoc c(entget e))(entget e)))(entupd e))
  3.   (setq rr (getreal "\n请求输入圆的新半径值: ")
  4.         i  -1
  5.   )
  6.   (if (setq ss (ssget '((0 . "circle"))))
  7.     (while (setq s1 (ssname ss (setq i (1+ i))))
  8.       (SubUpd s1 40 rr)
  9.     )
  10.   )  
  11.   (princ)
  12. )
发表于 2024-10-15 09:10:49 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-21 22:46 , Processed in 0.172047 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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