乐筑天下

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

[编程交流] “-BEdit”多块

[复制链接]

1

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:38:17 | 显示全部楼层 |阅读模式
大家好!
 
拜托,有人能帮我吗?我用下面的LISP来编辑块,删除实体和图案填充,但我需要逐个单击。
 
我想做一个窗口选择,然后LISP编辑一个一个单独。
 
  1. (defun C:Clean()
  2. (vl-load-com)
  3. (cond ((and (setq ent (car (entsel "\nSelecione o Bloco: ")))
  4. (eq (cdr (assoc 0 (entget ent))) "INSERT")
  5. (setq NAME (vla-get-effectivename(vlax-ename->vla-object ent))))))
  6. (command "-bedit" NAME)
  7. (setq HT (ssget "all" '((0 . "HATCH"))))
  8. (command "erase" HT "")
  9. (setq SS (ssget "all" '((0 . "SOLID"))))
  10. (command "erase" SS "")
  11. (command "chprop" "all" "" "Color" "bylayer" "")
  12. (command "bclose" "S")
  13. (princ)
  14. )

 
 
谢谢
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-5 23:46:20 | 显示全部楼层
请阅读代码发布指南并编辑您的帖子,将代码包含在代码标签中。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 23:53:04 | 显示全部楼层
一些建议可能会放大每个块或图案填充,并要求删除是/否作为是使用任何键作为否。您只需要使用以下示例代码。这还不完整。
 
  1. (sslength ht) ; this tells you how many objects
  2. (repeat (sslength ht)) ;a loop that goes through all the object in the selection set
  3. (ssname ht x) ; this retrieves the object based on the value of x start at 0
  4. (command "erase" (ssname ht x) "") ; removes object
  5. (entget (ssname ht 2)) ; look at 2nd object in HT use this for zooming etc
回复

使用道具 举报

1

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:59:53 | 显示全部楼层
感谢您的回复BIGAL,
 
但我不明白我可以把这些代码放在哪里。。。。
 
例如,客户端向我发送了一个包含许多块的文件,其中块内有实体和阴影,我需要删除所有块内的所有实体和阴影。。。
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-6 00:01:48 | 显示全部楼层
未测试,但请尝试:
 
  1. (defun C:Clean ( / bl ss i ent name h s )
  2. (vl-load-com)
  3. (setq bl (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))))
  4. (while (not ss)
  5.    (if (setq ss (ssget "_:L" '((0 . "INSERT"))))
  6.      (progn
  7.        (setq i -1)
  8.        (while (setq ent (ssname ss (setq i (1+ i))))
  9.          (setq name (vla-get-effectivename (vlax-ename->vla-object ent)))
  10.          (if (eq (vla-get-isxref (vla-item bl name)) :vlax-false)
  11.            (progn
  12.              (command "_.bedit" name)
  13.              (setq h (ssget "all" '((0 . "HATCH"))))
  14.              (command "_.erase" h "")
  15.              (setq s (ssget "all" '((0 . "SOLID"))))
  16.              (command "_.erase" s "")
  17.              (command "_.chprop" "all" "" "Color" "ByLayer" "")
  18.              (command "_.bclose" "S")
  19.            )
  20.          )
  21.        )
  22.      )
  23.      (prompt "\nEmpty sel.set... Select again...")
  24.    )
  25. )
  26. (princ)
  27. )
回复

使用道具 举报

GP_

8

主题

248

帖子

245

银币

初来乍到

Rank: 1

铜币
42
发表于 2022-7-6 00:10:46 | 显示全部楼层
此外,由Tharwat(更新为包括“SOLID”)
http://www.cadtutor.net/forum/showthread.php?80180-从块中删除图案填充
 
 
  1. (vl-load-com)
  2. (defun c:Test (/ b o)
  3.    ;;--- Tharwat 26.June.2013 ---;;  
  4.    (or doc
  5.        (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
  6.    )
  7.    (vlax-for b
  8.              (vla-get-blocks
  9.                  doc
  10.              )
  11.        (if (and
  12.                (eq :vlax-false (vla-get-isLayout b))
  13.                (eq :vlax-false (vla-get-isXref b))
  14.            )
  15.            (vlax-for o b
  16.                (if [b][color=red](or[/color][/b]
  17.                        (eq "AcDbHatch" (vla-get-objectname o))
  18.                        [b][color=red](eq "AcDbSolid" (vla-get-objectname o))[/color][/b]
  19. [b][color=red]                   )[/color][/b]
  20.                    (vl-catch-all-apply 'vla-delete (list o))
  21.                )
  22.            )
  23.        )
  24.    )
  25.    (vla-regen doc acAllViewports)
  26.    (princ)
  27. )
回复

使用道具 举报

1

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 00:13:47 | 显示全部楼层
 
谢谢Marko_ribar。。。这可以工作,但编辑图形中的所有块(大约1500个)包括没有图案填充和实体的块,并得到“内部错误”并关闭AutoCad。(我的失败无法更好地解释)
 
 
 
总成_
这件作品太棒了!谢谢
回复

使用道具 举报

1

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 00:20:03 | 显示全部楼层
编辑块也可以更改“BYLAYER”的颜色?
回复

使用道具 举报

GP_

8

主题

248

帖子

245

银币

初来乍到

Rank: 1

铜币
42
发表于 2022-7-6 00:22:06 | 显示全部楼层
 
添加
 
  1. [color=slategray]................[/color]
  2. [color=slategray]................[/color]
  3. [color=slategray](vlax-for o b[/color]
  4. [color=slategray]    (if (or[/color]
  5. [color=slategray]            (eq "AcDbHatch" (vla-get-objectname o))[/color]
  6. [color=slategray]            (eq "AcDbSolid" (vla-get-objectname o))[/color]
  7. [color=slategray]        )[/color]
  8. [color=slategray]        (vl-catch-all-apply 'vla-delete (list o))[/color]
  9.        [color=red][b](vla-put-color o "256")[/b][/color]
  10. [color=slategray]    )[/color]
  11. [color=slategray])[/color]
  12. [color=slategray]................[/color]
  13. [color=slategray]................[/color]
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 00:29:30 | 显示全部楼层
 
试试这个。。。
 
  1. (vl-load-com)
  2. (defun c:Test (/ b o)
  3. ;;---     Tharwat 2014         ---;;
  4. (or doc (setq doc (vla-get-ActiveDocument (vlax-get-acad-object))))
  5. (vlax-for b (vla-get-blocks doc )
  6.    (if
  7.      (and
  8.        (eq :vlax-false (vla-get-isLayout b))
  9.        (eq :vlax-false (vla-get-isXref b))
  10.        )
  11.      (vlax-for o b
  12.        (if (or
  13.              (eq "AcDbHatch" (vla-get-objectname o))
  14.              (eq "AcDbSolid" (vla-get-objectname o))
  15.              )
  16.          (vl-catch-all-apply 'vla-delete (list o))
  17.          (vl-catch-all-apply 'vla-put-color (list o AcBylayer))
  18.          )
  19.        )
  20.      )
  21.    )
  22. (vla-regen doc acAllViewports)
  23. (princ)
  24. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 00:24 , Processed in 0.786775 second(s), 72 queries .

© 2020-2025 乐筑天下

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