明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1372|回复: 23

[源码] 批量更新圆的半径

[复制链接]
发表于 2023-11-3 23:28 | 显示全部楼层 |阅读模式
  1. ;;;代码功能:批量更新圆的半径.lsp
  2. ;;;代码含有多选对象批量单处理
  3. ;;;代码含有多选特定对象
  4. ;;;代码含有命令行显示处理结果
  5. ;;;春婵写于20231103
  6. (defun c:tt (/ newr ss n i ngc_ss)
  7.   (setq newr (getreal "输入新半径:"));;;程序开始
  8.   (setq ss (ssget '((0 . "CIRCLE"))));;;取得圆选择集ss
  9.   (setq n (sslength ss))
  10.   (setq i 0)
  11.   (while (< i n)
  12.     (progn
  13.       (setq ngc_ss (ssname ss i));;;取得选择集内第0个图元名称
  14.       (Vlax-Put-Property (Vlax-Ename->Vla-Object ngc_ss) 'Radius newr);;;这里的newr是新的半径
  15.       (setq i (1+ i));;;while循环条件
  16.     );;;end progn
  17.   );;;endwhile
  18. (princ (strcat "\n共更新了<"(itoa n)">个圆,新半径="(rtos newr)))
  19. (princ)
  20. )

源码和上面的是一样的,代码包含基础处理,学习备用




本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
菜鸟初来乍到 + 1 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-11-4 09:52 | 显示全部楼层
(defun c:tt ()
  "批量更新圆或圆弧的半径"
  (setq rr (Ureal 7 "" "新半径" rr))
   (while (setq ss (ssget '((0 . "CIRCLE,ARC"))))
    (xyp-SubUpd ss 40 rr)
   )
  (princ)
)

点评

院长前辈的代码简洁明了,使用前需要加载院长的函数库,自定函数在论坛都能找到,向院长学习  发表于 2023-11-4 13:39
回复 支持 2 反对 0

使用道具 举报

发表于 2023-11-7 22:35 | 显示全部楼层
xyp1964 发表于 2023-11-4 09:52
(defun c:tt ()
  "批量更新圆或圆弧的半径"
  (setq rr (Ureal 7 "" "新半径" rr))

(defun c:11 ()
  "批量更新圆或圆弧的半径"
  (setq rr (getreal "输入新半径:"))
  (while (setq ss (ssget '((0 . "CIRCLE,ARC"))))
    (xyp-SubUpd ss 40 rr)
  )
  (princ)
)

(defun xyp-SubUpd (ename code val / ent x y i s1)
  (cond
    ((= (type ename) 'ENAME)
     (setq ent (entget ename))
     (if (and (= (type code) 'LIST) (= (type val) 'LIST))
       (mapcar '(lambda (x y) (xyp-SubUpd ename x y)) code val)
       (progn (if (= (xyp-dxf code ename) nil)
                (entmod (append ent (list (cons code val))))
                (entmod (subst (cons code val) (assoc code ent) ent))
              )
              (entupd ename)
       )
     )
    )
    ((= (type ename) 'PICKSET)
     (setq i -1)
     (while (setq s1 (ssname ename (setq i (1+ i))))
       (xyp-SubUpd s1 code val)
     )
    )
    ((= (type ename) 'LIST)
     (foreach s1 ename (xyp-SubUpd s1 code val))
    )
  )
  ename
)

(defun xyp-dxf (code ename / ent lst a)
  (if (= (type code) 'list)
    (progn (setq ent (entget ename))
           (setq lst nil)
           (foreach a code
             (setq lst (cons (list a (cdr (assoc a ent))) lst))
           )
           (reverse lst)
    )
    (progn (if (= code -3)
             (progn (cdr (assoc code (entget ename '("*")))))
             (progn (cdr (assoc code (entget ename))))
           )
    )
  )
)
发表于 2023-11-6 00:26 | 显示全部楼层
hhh454 发表于 2023-11-4 13:49
需要加载院长的自定函数,论坛里面有

是这个函数吗?
(defun xyp-SubUpd (ename code val / ent x y i s1)

(cond ((= (type ename) 'ENAME)

(setq ent (entget ename))

(if (and (= (type code) 'LIST) (= (type val) 'LIST))

(mapcar '(lambda (x y) (xyp-SubUpd ename x y)) code val)

(progn

(if (= (xyp-dxf code ename) nil)

(entmod (append ent (list (cons code val))))

(entmod (subst (cons code val) (assoc code ent) ent))

)

(entupd ename)

)

)

)

((= (type ename) 'PICKSET)

(setq i -1)

(while (setq s1 (ssname ename (setq i (1+ i))))

(xyp-SubUpd s1 code val)

)

)

((= (type ename) 'LIST)

(foreach s1 ename (xyp-SubUpd s1 code val))

)

)

ename

)

评分

参与人数 1明经币 +1 收起 理由
xyp1964 + 1 赞一个!

查看全部评分

发表于 2023-11-4 09:03 | 显示全部楼层
很实用,小白一枚,向大佬学习
发表于 2023-11-4 13:20 | 显示全部楼层
感谢楼主分享
发表于 2023-11-4 13:21 | 显示全部楼层
xyp1964 发表于 2023-11-4 09:52
(defun c:tt ()
  "批量更新圆或圆弧的半径"
  (setq rr (Ureal 7 "" "新半径" rr))

感谢大佬分享
发表于 2023-11-4 13:21 | 显示全部楼层
xyp1964 发表于 2023-11-4 09:52
(defun c:tt ()
  "批量更新圆或圆弧的半径"
  (setq rr (Ureal 7 "" "新半径" rr))

版主2024,用不了,AutoCAD 变量设置被拒绝: "osmode" nil
 楼主| 发表于 2023-11-4 13:49 | 显示全部楼层
vista228 发表于 2023-11-4 13:21
版主2024,用不了,AutoCAD 变量设置被拒绝: "osmode" nil

需要加载院长的自定函数,论坛里面有
发表于 2023-11-4 14:44 | 显示全部楼层
感谢楼主分享
发表于 2023-11-4 17:59 | 显示全部楼层
hhh454 发表于 2023-11-4 13:49
需要加载院长的自定函数,论坛里面有

好的,谢谢楼主
发表于 2023-11-6 00:23 | 显示全部楼层
hhh454 发表于 2023-11-4 13:49
需要加载院长的自定函数,论坛里面有

没有找到这个函数啊。xyp-SubUpd
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-4 09:29 , Processed in 0.501568 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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