Dj_T_Rex2002 发表于 2022-7-5 16:11:14

替换块

您好,我正在尝试找到使用Blockreplace或Replace命令的最简单方法。我知道当你键入Replace然后输入时,它会要求你选择要替换的块,但你必须键入“=”然后输入才能选择块。然后,您必须选择另一个块,但仍必须键入“=”,然后输入并选择它。。。我正在尝试创建一个类似于此的lisp代码。。。
 
 
<p>(Defun C:RB1 (/ SS )</p><p>(SetQ SS (SSGet))</p><p>(Command "Replace" "=" SS SS "Y")</p><p>)</p><p></p><p> </p><p> </p><p>Sorry if it did not wrap the code but I did click the "#" button and it did nothing. I can't remember how to wrap code in here. Wish there was an example.</p>

Dj_T_Rex2002 发表于 2022-7-5 16:18:26

您好,我正在尝试找到使用Blockreplace或Replace命令的最简单方法。我知道当你键入Replace然后输入时,它会要求你选择要替换的块,但你必须键入“=”然后输入才能选择块。然后,您必须选择另一个块,但仍必须键入“=”,然后输入并选择它。。。我正在尝试创建一个类似于此的lisp代码。。。
 
 
:<p> (Defun C:RB1 (/ SS )</p><p>(SetQ SS (SSGet))</p><p>(Command "Replace" "=" SS SS "Y")</p><p> )</p><p> /</p><p> </p><p> </p><p> Sorry if it did not wrap the code but I did click the "#" button and it did nothing. I can't remember how to wrap code in here. Wish there was an example.</p>

Jef! 发表于 2022-7-5 16:26:30

嗨,DJ。对于代码标记。。。

Your code here

 
 
顺便说一句,在你的尝试中,你用旧的块替换了相同的旧块。
此外,该函数的工作方式是,当您必须告诉cad要用哪个块替换原始块时,要么提供一个包含块名称的字符串,要么点击“=”并进行选择。
 
至于使用replace命令,我发现该命令有一个非常奇怪的行为(在这里使用2015)。当您启动“replace”时,它会启动“-BLOCKREPLACE”命令。奇怪的是,我收到消息“未知命令”-BLOCKREPLACE。按F1键获取帮助不管我尝试了什么方法(command/command-s/vl-cmdf“-BLOCKREPLACE”)。(尝试将“REPLACE”用作命令/命令-s或vl cmdf时也是如此)。这是我第一次看到这种行为。基本上,它的意思是您可能必须“模拟”整个replace命令。我想进一步帮忙,但我赶时间。

Dj_T_Rex2002 发表于 2022-7-5 16:31:44

嗨,杰夫,
 
 
我试图用这个命令做的是单击我试图用现有块替换的新块。而不是删除旧的,重命名新的,并将其移动到插入点。我只是想知道是否有办法告诉它“好的,暂停一分钟,我选择新块,然后选择旧块”。它要求我按“=”

SLW210 发表于 2022-7-5 16:38:31

请阅读代码发布指南,并编辑代码以包含在代码标签中。
Your Code Here=
Your Code Here

Tharwat 发表于 2022-7-5 16:47:22

你好
 
也许这会很有趣:用另一个块替换块

halam 发表于 2022-7-5 16:55:49

Tharwat很棒!!!

Tharwat 发表于 2022-7-5 17:03:43

 
谢谢你,哈兰。很高兴听到这个消息。

Aftertouch 发表于 2022-7-5 17:08:36

我在用lisp替换块时也遇到了一些问题,
最大的问题是将非注释性块替换为注释性块。
我通过一个非常简单的解决方法解决了这个问题。
 
-获取块的坐标
-在这些坐标上插入新块
-删除旧块
这样就不会有任何注释问题。
 

; setq oldblocksome in a way you like first...
; setq newblocksome in a way you like first...

(if (/= newblockname "")
(progn
(setq blockobjecten (ssget "_X" (list (cons 0 "INSERT")(cons 2 oldblockname))))
(setq n (sslength blockobjecten))
        (repeat n
                (setq ensel (ssname blockobjecten (setq n (1- n))))
                (setq enlist (entget ensel))                ;; Set DXF group codes         
                (setq xyz (cdr (assoc 10 enlist)))        ;; Set coordinates
                (command "-insert" newblockname xyz "1" "1" "")
        )
        (command "ERASE" blockobjecten "")
)
)

 
(这是一个全局替换代码)

halam 发表于 2022-7-5 17:13:43

我在这一页专门介绍Tharwat提供的解决方案。也许它可以带来一些改进的想法。
注释性块可能很难处理。我认为这是我无法完全理解的深层行为。
 
https://www.linkedin.com/pulse/autocad-block-tool-hans-lammerts
页: [1]
查看完整版本: 替换块