乐筑天下

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

[编程交流] 删除多个dra中的块

[复制链接]

48

主题

304

帖子

256

银币

后起之秀

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

铜币
240
发表于 2022-7-5 16:41:01 | 显示全部楼层
 
嗨,李。
 
加载LISP后出错
 
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:43:59 | 显示全部楼层
代码现在是1括号错误,以找到数字可能有帮助(定义blc的vlax;22应该是1或只是缺少LM的结束语:deletblocks
 
  1. look at end of line0;;--------------------=={ Delete Blocks }==-------------------;;;00
  2. 0;;                                                            ;;;00
  3. 0;;  Deletes all references of a list of blocks from a drawing ;;;00
  4. 0;;  (including nested references, nested to any level).       ;;;00
  5. 0;;  Proceeds to delete the associated block definitions from  ;;;00
  6. 0;;  the drawing, if possible.                                 ;;;00
  7. 0;;                                                            ;;;00
  8. 0;;  This function is compatible with ObjectDBX.               ;;;00
  9. 0;;------------------------------------------------------------;;;00
  10. 0;;  Author: Lee Mac, Copyright © 2012 - www.lee-mac.com       ;;;00
  11. 0;;------------------------------------------------------------;;;00
  12. 0;;  Arguments:                                                ;;;00
  13. 0;;  doc - VLA Document Object                                 ;;;00
  14. 0;;  lst - List of blocks to be deleted (case insensitive)     ;;;00
  15. 0;;------------------------------------------------------------;;;00
  16. 0;;  Returns:  List of blocks that were successfully deleted.  ;;;00
  17. 0;;------------------------------------------------------------;;;00
  18. 0 ;00
  19. 1(defun LM:deleteblocks ( doc lst / blc bln lck rtn );11
  20. 2    (setq blc (vla-get-blocks doc);22
  21. 2          lst (mapcar 'strcase lst);22
  22. 1    );11
  23. 2    (vlax-for lay (vla-get-layers doc);22
  24. 3        (if (= :vlax-true (vla-get-lock lay));33
  25. 3            (progn  (setq lck (cons lay lck)) (vla-put-lock lay :vlax-false));33
  26. 2        );22
  27. 1    );11
  28. 2    (vlax-for def blc;22
  29. 3        (vlax-for obj def;33
  30. 4            (if ;44
  31. 5                (and (= "AcDbBlockReference" (vla-get-objectname obj));55
  32. 6                    (or ;66
  33. 7                        (and (vlax-property-available-p obj 'effectivename);77
  34. 7                             (setq bln (strcase (vla-get-effectivename obj)));77
  35. 6                        );66
  36. 7                        (setq bln (strcase (vla-get-name obj));77
  37. 6                    );66
  38. 6                    (vl-some '(lambda ( x ) (wcmatch bln x)) lst);66
  39. 5                );55
  40. 6                (progn;66
  41. 6                    (vl-catch-all-apply 'vla-delete (list obj));66
  42. 6                    (or (member bln rtn)  (setq rtn (cons bln rtn)));66
  43. 5                );55
  44. 4            );44
  45. 3        );33
  46. 2    );22
  47. 2    (foreach lay lck (vla-put-lock lay :vlax-true));22
  48. 2    (vl-remove-if '(lambda ( x ) (vl-catch-all-error-p (vl-catch-all-apply 'vla-delete (list (vla-item blc x))))) rtn);22
  49. 1);11
  50. 11111;
  51. ; this should be 0 if ok
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 16:46:51 | 显示全部楼层
 
抱歉-我错过了一个右括号-我现在已经更新了我之前帖子中的代码。
回复

使用道具 举报

48

主题

304

帖子

256

银币

后起之秀

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

铜币
240
发表于 2022-7-5 16:51:40 | 显示全部楼层
 
NP李。周末回来后会测试一下。谢谢,伙计
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 16:53:13 | 显示全部楼层
 
不用担心-让我知道你进展如何
回复

使用道具 举报

48

主题

304

帖子

256

银币

后起之秀

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

铜币
240
发表于 2022-7-5 16:56:40 | 显示全部楼层
 
李,它工作得非常好拇指支撑:
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 17:00:36 | 显示全部楼层
 
很高兴听到!
回复

使用道具 举报

1

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 17:01:43 | 显示全部楼层
李,我是这个网站的新手。这是我的第一篇帖子,我看到这条帖子很老了,但也许你仍然可以帮我。当我尝试运行dbtest时,我能够选择目录,但之后什么也没有发生,命令在我选择之后就结束了。就好像从未调用deleteblocks命令一样。Deleteblocks、odbx和dbtest也都提前加载。没有报告错误,只是deleteblocks从未“打开”。
 
我将此代码用于dbtest:
 
(defun c:dbtest nil
(LM:odbx’(lambda(doc)(LM:deleteblocks doc’(“Block1”“Block2”“Block3”))无)
(普林斯)
)
 
删除块是您发布的新代码。
 
如果你碰巧看到这个,你能帮我吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 17:04:51 | 显示全部楼层
 
欢迎来到论坛
 
请注意,我的[noparse]LM:deleteblocks&LM:odbx[/noparse]函数在处理期间或之后不会将任何消息打印到命令行,因此,在选择目录后,程序将以静默方式处理所有图形-当然,这只是一些示例代码,不是通用的完整应用程序。
 
我假设您已经修改了块名称(“Block1”“Block2”“Block3”),以适合您的应用程序?
 
PS:请编辑您的帖子,并用代码标签附上代码:
 
[突出显示][不突出]
  1. 4
[/noparse][/highlight]
回复

使用道具 举报

1

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 17:08:07 | 显示全部楼层
“我假设您已经修改了块名称(“Block1”“Block2”“Block3”),以适合您的应用程序?”
 
李,就是这样!我不知道为什么,但我假设这些是deleteblocks代码中使用的变量,然后通过稍后在图形中选择块来给定值。
 
然而,在代码中输入我需要的块的名称非常有效。非常感谢,先生。我渴望有一天能在你的水平上理解Lisp。
 
p、 我似乎不知道如何编辑我已经做出的回复。这里还是很绿。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 19:55 , Processed in 0.601686 second(s), 70 queries .

© 2020-2025 乐筑天下

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