乐筑天下

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

[综合讨论] 替换选定的块组...

[复制链接]

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
6
发表于 2006-7-18 03:36:42 | 显示全部楼层 |阅读模式
我正在寻找一种用另一种类型的块替换选定的块组的方法......
我有一个时间表,其中包含许多不同类型的块。我真的很想能够手动选择一些块并让它们被另一种类型替换。不是在整个绘图中,只是我选择的那些。
我在CAD中能找到的只是Express菜单命令
用另一个块替换块
。这不适合,因为它在整个绘图中用另一种类型替换了一种类型。
有什么大师能给我指明正确的方向吗?
感谢一位非常感激的新手。

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

116

主题

996

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1466
发表于 2006-7-18 05:01:44 | 显示全部楼层
有几个问题..
这些块是否有属性
。对于被替换的块实例,..
插入点是否相同
比例是否相同
旋转将是相同的
该层将是相同的
替换块名称的选择是否有逻辑依据。
回复

使用道具 举报

116

主题

996

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1466
发表于 2006-7-18 05:11:17 | 显示全部楼层
一些粗糙的东西玩..



(DEFUN c:test(/dbx block name
DWGBASENAME ELIST
INDEX SSET
)
(提示" \ n选择要替换的块:")
(SETQ sset (SSGET '((0。" INSERT "))
dbx Block name(get filed
"选择替换块"
(GETVAR " DWGPREFIX))
" DWG "
)
(IF)
(NOT
(TBL search " Block)
(SETQ
dwgbaseName(VL文件名基
dbx Block name
)
)
)
(PROGN(COMMAND " _ INSERT " dbx Block name)
(程序)
回复

使用道具 举报

16

主题

168

帖子

39

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
197
发表于 2006-7-18 06:16:48 | 显示全部楼层
伟大的回应!那是什么,整整10分钟?
回复

使用道具 举报

19

主题

97

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
179
发表于 2006-7-18 07:14:52 | 显示全部楼层
很酷的口齿伶俐。
如果您可以选择图形中已经存在的块来替换第一个块,这将是一个改进。
回复

使用道具 举报

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
6
发表于 2006-7-20 02:31:52 | 显示全部楼层
谢谢凯瑞,这太棒了。我已经让工作简单多了。
不错!
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2006-7-21 12:05:12 | 显示全部楼层
我把这个放在一起,将一个选定的源块复制到另一个选定的块上。不是最快的例程,但它有效。
  1. ;;  Function to copy blocks from one point to another
  2. (defun c:Replaceblocks
  3.                        (/      ent1   ent2   obj1   obj2   pt1
  4.                         pt2    x      ss     index  keyw   rot
  5.                         r2d    copyobj
  6.                        )
  7.   (while
  8.     (= ent1 nil)
  9.      (setq ent1 (car (entsel "\n Select block to copy: ")))
  10.      (if (= ent1 nil)
  11.        (alert "\n You missed, try again...")
  12.      )
  13.   )
  14.   (while
  15.     (= ent2 nil)
  16.      (setq ent2 (car (entsel "\n Select block you want to swap: ")))
  17.      (if (= ent2 nil)
  18.        (alert "\n You missed, try again...")
  19.      )
  20.   )
  21.   (setq        obj1 (vlax-ename->vla-object ent1)
  22.         pt1  (trans (vlax-get obj1 'insertionpoint) 0 1)
  23.   )
  24.   (setq        obj2 (vlax-ename->vla-object ent2)
  25.         x    (vlax-get-property obj2 'Name)
  26.   )
  27.   (if
  28.     (and
  29.       (= (vla-get-ObjectName Obj1) "AcDbBlockReference")
  30.       (not (vlax-property-available-p Obj1 'Path))
  31.     )
  32.      (progn
  33.        (if (not *default*)
  34.          (setq *default* "Select")
  35.        )
  36.        (initget 0 "Select All")
  37.        (setq keyw
  38.               (cond
  39.                 ((getkword
  40.                    (strcat "\nEnter selection option (Select / All): >: "
  41.                    )
  42.                  )
  43.                 )
  44.                 (*default*)
  45.               )
  46.        )
  47.        (setq *default* keyw)
  48.        (cond
  49.          ((= Keyw "Select") (setq SS (ssget (list (cons '2 x)))))
  50.          ((= Keyw "All") (setq SS (ssget "X" (list (cons '2 x)))))
  51.        )
  52.        (setq
  53.          index -1
  54.        )
  55.        (while (vla-object obj)
  56.                pt2     (trans (vlax-get obj2 'insertionpoint) 0 1)
  57.                rot     (vlax-get obj2 'Rotation)
  58.                copyobj (vlax-invoke obj1 'Copy)
  59.          )
  60.          (vla-put-rotation copyobj rot)
  61.          (vlax-invoke copyobj 'Move pt1 pt2)
  62.        )
  63.      )
  64.   )
  65.   (princ)
  66.   (command "_erase" ss "")
  67.   (princ)
  68.   (princ (strcat "\nBlocks swapped - " (itoa index)))
  69. )

回复

使用道具 举报

4

主题

206

帖子

6

银币

后起之秀

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

铜币
271
发表于 2006-7-21 12:33:21 | 显示全部楼层
我有这张十年前的照片...
  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. (defun c:REPLs (/ ENT1 BL1 bl2 OLD ODNM)
  3. (command "undo" "begin")
  4. (prompt "\nSelect Replacement Block: ")
  5. (setq bl2 (cdr (assoc 2 (entget (car (entsel))))))
  6. (prompt "Select blocks to replace: ")
  7. (setq ENT1 (ssget))
  8. (setq N (sslength ENT1))
  9. (setq I 0)
  10. (repeat N
  11.   (setq BL1 (entget (ssname ENT1 I)))
  12.   (setq NWNM (cons 2 bl2))
  13.   (setq OLD (assoc 2 BL1))
  14.   (setq ODNM (cdr OLD))
  15.   (entmod (subst NWNM OLD BL1))
  16.   (setq I (1+ I))
  17. )
  18. (command "undo" "end")
  19. (princ)
  20. )
  21. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 23:45 , Processed in 0.808049 second(s), 80 queries .

© 2020-2025 乐筑天下

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