以包围框中心为基点,用1个图元替换所选图元
本帖最后由 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 )
)
wzg356 发表于 2023-12-13 12:23
vl-cmdf换成command 看看
帖子已改
(command "copy" e "" "m" "non" p(foreach p ss(command "non" p))""),我在最后一个括号前加了一个"",现在运行正常了。大佬这个程序挺实用,真是精品! 本帖最后由 tigcat 于 2023-12-13 16:54 编辑
wzg356 发表于 2023-12-13 12:28
发生错误的,把vl-cmdf换成command 看看
另外复制命令command copy对照具体cad版本看一下步骤
感谢大佬抽空回复,回去试一下。今天新更新的地方有个函数有误?txtbox是不是textbox? edsion24 发表于 2024-1-31 13:06
(setq ps(cons(getcen(ssname ss(setq n(1- n)))) ps))这里的GETCEN 是写错了 还是个函数呢?
发生错 ...
ss0笔误 ss0 改为ss即可 希望老大能做个适用的成熟的例子 理解标题意图,任意图元互换,比如你发现图签有个名字写错了,你把一个改正,然后用这个命令一起把其它的换掉,按命令行提示操作 本帖最后由 水洗可口可乐 于 2023-6-29 17:37 编辑
错误
命令“NON”。按 F1 查看帮助。
应用程序错误: 命令输入时发送的类型无效
选择要换成的新对象:未知命令“NON”。按 F1 查看帮助。
应用程序错误: 命令输入时发送的类型无效 选择对象:
选择要换成的新对象:*无效*
应用程序错误: irfcld
CAD 2014使用时可以替换对象,但是没有删除原对象,弹出的提示如上,不知道大佬有时间修复不? 本帖最后由 wzg356 于 2023-12-13 12:25 编辑
tigcat 发表于 2023-12-13 10:00
选择对象:
选择要换成的新对象:*无效*
应用程序错误: irfcld
vl-cmdf换成command 看看
帖子已改
发生错误的,把vl-cmdf换成command 看看
另外复制命令command copy对照具体cad版本看一下步骤
页:
[1]
2