乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 91|回复: 9

[编程交流] 替换块

[复制链接]

13

主题

58

帖子

45

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-5 16:11:14 | 显示全部楼层 |阅读模式
您好,我正在尝试找到使用Blockreplace或Replace命令的最简单方法。我知道当你键入Replace然后输入时,它会要求你选择要替换的块,但你必须键入“=”然后输入才能选择块。然后,您必须选择另一个块,但仍必须键入“=”,然后输入并选择它。。。我正在尝试创建一个类似于此的lisp代码。。。
 
 
  1. <p>(Defun C:RB1 (/ SS )</p><p>  (SetQ SS (SSGet))</p><p>  (Command "Replace" "=" SS SS "Y")</p><p>)</p><p>[code]</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>
回复

使用道具 举报

13

主题

58

帖子

45

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-5 16:18:26 | 显示全部楼层
您好,我正在尝试找到使用Blockreplace或Replace命令的最简单方法。我知道当你键入Replace然后输入时,它会要求你选择要替换的块,但你必须键入“=”然后输入才能选择块。然后,您必须选择另一个块,但仍必须键入“=”,然后输入并选择它。。。我正在尝试创建一个类似于此的lisp代码。。。
 
 
  1. :<p> (Defun C:RB1 (/ SS )</p><p>  (SetQ SS (SSGet))</p><p>  (Command "Replace" "=" SS SS "Y")</p><p> )</p><p> /[code]</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>
回复

使用道具 举报

28

主题

317

帖子

292

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
140
发表于 2022-7-5 16:26:30 | 显示全部楼层
嗨,DJ。对于代码标记。。。
  1. [code]
  2. Your code here
[/code]
 
 
顺便说一句,在你的尝试中,你用旧的块替换了相同的旧块。
此外,该函数的工作方式是,当您必须告诉cad要用哪个块替换原始块时,要么提供一个包含块名称的字符串,要么点击“=”并进行选择。
 
至于使用replace命令,我发现该命令有一个非常奇怪的行为(在这里使用2015)。当您启动“replace”时,它会启动“-BLOCKREPLACE”命令。奇怪的是,我收到消息“未知命令”-BLOCKREPLACE。按F1键获取帮助不管我尝试了什么方法(command/command-s/vl-cmdf“-BLOCKREPLACE”)。(尝试将“REPLACE”用作命令/命令-s或vl cmdf时也是如此)。这是我第一次看到这种行为。基本上,它的意思是您可能必须“模拟”整个replace命令。我想进一步帮忙,但我赶时间。
回复

使用道具 举报

13

主题

58

帖子

45

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-5 16:31:44 | 显示全部楼层
嗨,杰夫,
 
 
我试图用这个命令做的是单击我试图用现有块替换的新块。而不是删除旧的,重命名新的,并将其移动到插入点。我只是想知道是否有办法告诉它“好的,暂停一分钟,我选择新块,然后选择旧块”。它要求我按“=”
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-5 16:38:31 | 显示全部楼层
请阅读代码发布指南,并编辑代码以包含在代码标签中。[NOPARSE]
  1. Your Code Here[/NOPARSE]
=
  1. Your Code Here
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 16:47:22 | 显示全部楼层
你好
 
也许这会很有趣:用另一个块替换块
回复

使用道具 举报

37

主题

264

帖子

236

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
185
发表于 2022-7-5 16:55:49 | 显示全部楼层
Tharwat很棒!!!
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 17:03:43 | 显示全部楼层
 
谢谢你,哈兰。很高兴听到这个消息。
回复

使用道具 举报

76

主题

312

帖子

254

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
390
发表于 2022-7-5 17:08:36 | 显示全部楼层
我在用lisp替换块时也遇到了一些问题,
最大的问题是将非注释性块替换为注释性块。
我通过一个非常简单的解决方法解决了这个问题。
 
-获取块的坐标
-在这些坐标上插入新块
-删除旧块
这样就不会有任何注释问题。
 
  1. ; setq oldblocksome in a way you like first...
  2. ; setq newblocksome in a way you like first...
  3. (if (/= newblockname "")
  4. (progn
  5. (setq blockobjecten (ssget "_X" (list (cons 0 "INSERT")(cons 2 oldblockname))))
  6. (setq n (sslength blockobjecten))
  7.         (repeat n
  8.                 (setq ensel (ssname blockobjecten (setq n (1- n))))  
  9.                 (setq enlist (entget ensel))                ;; Set DXF group codes         
  10.                 (setq xyz (cdr (assoc 10 enlist)))        ;; Set coordinates
  11.                 (command "-insert" newblockname xyz "1" "1" "")
  12.         )
  13.         (command "ERASE" blockobjecten "")
  14. )
  15. )

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

使用道具 举报

37

主题

264

帖子

236

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
185
发表于 2022-7-5 17:13:43 | 显示全部楼层
我在这一页专门介绍Tharwat提供的解决方案。也许它可以带来一些改进的想法。
注释性块可能很难处理。我认为这是我无法完全理解的深层行为。
 
https://www.linkedin.com/pulse/autocad-block-tool-hans-lammerts
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-13 19:53 , Processed in 0.681233 second(s), 83 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表