嗨,李。
加载LISP后出错
代码现在是1括号错误,以找到数字可能有帮助(定义blc的vlax;22应该是1或只是缺少LM的结束语:deletblocks
look at end of line0;;--------------------=={ Delete Blocks }==-------------------;;;00
0;; ;;;00
0;;Deletes all references of a list of blocks from a drawing ;;;00
0;;(including nested references, nested to any level). ;;;00
0;;Proceeds to delete the associated block definitions from;;;00
0;;the drawing, if possible. ;;;00
0;; ;;;00
0;;This function is compatible with ObjectDBX. ;;;00
0;;------------------------------------------------------------;;;00
0;;Author: Lee Mac, Copyright © 2012 - www.lee-mac.com ;;;00
0;;------------------------------------------------------------;;;00
0;;Arguments: ;;;00
0;;doc - VLA Document Object ;;;00
0;;lst - List of blocks to be deleted (case insensitive) ;;;00
0;;------------------------------------------------------------;;;00
0;;Returns:List of blocks that were successfully deleted.;;;00
0;;------------------------------------------------------------;;;00
0 ;00
1(defun LM:deleteblocks ( doc lst / blc bln lck rtn );11
2 (setq blc (vla-get-blocks doc);22
2 lst (mapcar 'strcase lst);22
1 );11
2 (vlax-for lay (vla-get-layers doc);22
3 (if (= :vlax-true (vla-get-lock lay));33
3 (progn(setq lck (cons lay lck)) (vla-put-lock lay :vlax-false));33
2 );22
1 );11
2 (vlax-for def blc;22
3 (vlax-for obj def;33
4 (if ;44
5 (and (= "AcDbBlockReference" (vla-get-objectname obj));55
6 (or ;66
7 (and (vlax-property-available-p obj 'effectivename);77
7 (setq bln (strcase (vla-get-effectivename obj)));77
6 );66
7 (setq bln (strcase (vla-get-name obj));77
6 );66
6 (vl-some '(lambda ( x ) (wcmatch bln x)) lst);66
5 );55
6 (progn;66
6 (vl-catch-all-apply 'vla-delete (list obj));66
6 (or (member bln rtn)(setq rtn (cons bln rtn)));66
5 );55
4 );44
3 );33
2 );22
2 (foreach lay lck (vla-put-lock lay :vlax-true));22
2 (vl-remove-if '(lambda ( x ) (vl-catch-all-error-p (vl-catch-all-apply 'vla-delete (list (vla-item blc x))))) rtn);22
1);11
11111;
; this should be 0 if ok
抱歉-我错过了一个右括号-我现在已经更新了我之前帖子中的代码。
NP李。周末回来后会测试一下。谢谢,伙计
不用担心-让我知道你进展如何
李,它工作得非常好拇指支撑:
很高兴听到! 李,我是这个网站的新手。这是我的第一篇帖子,我看到这条帖子很老了,但也许你仍然可以帮我。当我尝试运行dbtest时,我能够选择目录,但之后什么也没有发生,命令在我选择之后就结束了。就好像从未调用deleteblocks命令一样。Deleteblocks、odbx和dbtest也都提前加载。没有报告错误,只是deleteblocks从未“打开”。
我将此代码用于dbtest:
(defun c:dbtest nil
(LM:odbx’(lambda(doc)(LM:deleteblocks doc’(“Block1”“Block2”“Block3”))无)
(普林斯)
)
删除块是您发布的新代码。
如果你碰巧看到这个,你能帮我吗?
欢迎来到论坛
请注意,我的LM:deleteblocks&LM:odbx函数在处理期间或之后不会将任何消息打印到命令行,因此,在选择目录后,程序将以静默方式处理所有图形-当然,这只是一些示例代码,不是通用的完整应用程序。
我假设您已经修改了块名称(“Block1”“Block2”“Block3”),以适合您的应用程序?
PS:请编辑您的帖子,并用代码标签附上代码:
[突出显示][不突出]
4 “我假设您已经修改了块名称(“Block1”“Block2”“Block3”),以适合您的应用程序?”
李,就是这样!我不知道为什么,但我假设这些是deleteblocks代码中使用的变量,然后通过稍后在图形中选择块来给定值。
然而,在代码中输入我需要的块的名称非常有效。非常感谢,先生。我渴望有一天能在你的水平上理解Lisp。
p、 我似乎不知道如何编辑我已经做出的回复。这里还是很绿。
页:
1
[2]