明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1384|回复: 13

[经验] 以包围框中心为基点,用1个图元替换所选图元

  [复制链接]
发表于 2023-3-8 16:36 | 显示全部楼层 |阅读模式
本帖最后由 wzg356 于 2024-2-23 16:10 编辑

回应刚看到的一个帖子发的

可以先选好要替换的多个目标在执行命令
时候大批量更换,比如换图签名字,日期,圆 方框 块替换等之类的
配合快速选择操作更方便http://bbs.mjtd.com/thread-183273-1-1.html
文字最小包围盒函数txtbox在http://bbs.mjtd.com/thread-183274-1-1.html

(defun c:rss nil (c:ReFromEn))
(defun c:ReFromEn( / getcen ss ps e p)
        (defun getcen (e / p1 p3 ps p)
                (if(wcmatch(cdr(assoc 0(entget e)))"MTEXT")
                        (setq ps(txtbox e) ps(list(car ps)(caddr ps)));引用txtbox函数取得实际最小包围盒
                        (progn
                                (vla-getboundingbox (vlax-ename->vla-object e) 'p1 'p3)
                                (setq ps(mapcar 'vlax-safearray->list (list p1 p3)))
                        )
                )
                (polar(car ps)(apply 'angle ps)(* 0.5(apply 'distance ps)))
        );获图元中心
        (princ "\n 以包围框中心为基点,用1个图元替换所选图元,作者wzg356")
        (if        (and(or (setq ss(ssget "i" ))(setq ss(ssget)))
                (sssetfirst nil ss)
                        (setq e(car(entsel "\n 选择要换成的新对象:")))
                )
                (progn
                        (repeat(setq ps nil n (sslength ss))
                                (setq ps(cons(getcen(ssname ss(setq n(1- n)))) ps))
                        )
                        (setq p(getcen e))
                        (setvar "cmdecho" 0)
                        (command "_undo" "be")
                        (command "copy" e "" "m" "non" p(foreach p ps(command "non" p)))
                        (command "_erase" ss "")                        
                        (command "_undo" "_e")
                        (setvar "cmdecho" 1)
                )
        )
        (princ )               
)

本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
tigcat + 1 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-12-13 18:04 | 显示全部楼层
wzg356 发表于 2023-12-13 12:23
vl-cmdf  换成command 看看

帖子已改

(command "copy" e "" "m" "non" p(foreach p ss(command "non" p))""),我在最后一个括号前加了一个"",现在运行正常了。大佬这个程序挺实用,真是精品!
发表于 2023-12-13 16:14 | 显示全部楼层
本帖最后由 tigcat 于 2023-12-13 16:54 编辑
wzg356 发表于 2023-12-13 12:28
发生错误的,把vl-cmdf  换成command 看看
另外复制命令command copy对照具体cad版本看一下步骤

感谢大佬抽空回复,回去试一下。今天新更新的地方有个函数有误?txtbox是不是textbox?
 楼主| 发表于 2024-2-23 16:08 | 显示全部楼层
edsion24 发表于 2024-1-31 13:06
(setq ps(cons(getcen(ssname ss(setq n(1- n)))) ps))  这里的GETCEN 是写错了 还是个函数呢?
发生错 ...

ss0笔误   ss0 改为ss即可
发表于 2023-3-11 21:53 | 显示全部楼层
希望老大能做个适用的成熟的例子
 楼主| 发表于 2023-3-11 23:16 来自手机 | 显示全部楼层
理解标题意图,任意图元互换,比如你发现图签有个名字写错了,你把一个改正,然后用这个命令一起把其它的换掉,按命令行提示操作
发表于 2023-6-29 17:35 | 显示全部楼层
本帖最后由 水洗可口可乐 于 2023-6-29 17:37 编辑


错误
命令“NON”。按 F1 查看帮助。
应用程序错误: 命令输入时发送的类型无效

本帖子中包含更多资源

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

x
发表于 2023-11-7 13:37 | 显示全部楼层
选择要换成的新对象:未知命令“NON”。按 F1 查看帮助。
应用程序错误: 命令输入时发送的类型无效
发表于 2023-12-13 10:00 | 显示全部楼层
选择对象:
选择要换成的新对象:*无效*
应用程序错误: irfcld

CAD 2014使用时可以替换对象,但是没有删除原对象,弹出的提示如上,不知道大佬有时间修复不?
 楼主| 发表于 2023-12-13 12:23 | 显示全部楼层
本帖最后由 wzg356 于 2023-12-13 12:25 编辑
tigcat 发表于 2023-12-13 10:00
选择对象:
选择要换成的新对象:*无效*
应用程序错误: irfcld

vl-cmdf  换成command 看看

帖子已改

 楼主| 发表于 2023-12-13 12:28 | 显示全部楼层
发生错误的,把vl-cmdf  换成command 看看
另外复制命令command copy对照具体cad版本看一下步骤
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-17 16:15 , Processed in 0.199000 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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