可以执行这些命令吗
我想把这个写进剧本里。我需要选择该块的所有实例,并更改其图层和线型。我不会用lisp,因为我不懂编程。
您是否尝试搜索lisp例程? 这是我的问题:如何将其放入脚本中。 我不一定知道如何修改lisp例程使其工作。 也许有人已经编写了一个lisp例程,可以做你想做的事情。尝试搜索。 我做到了。有。我找到的那个选择了一个块并改变了它的颜色。但由于我不是程序员,我不知道如何修改lisp。 为什么不能直接使用BEDIT命令?在块编辑器中打开有问题的块。通过“特性”选项板更改其图层和线型。关闭块编辑器时,系统会询问您是否要保存更改。这样做。当弹出回图形时,块的所有实例都将被更改。 我有大约80张同样错误的画。 我找到了这个线程,但选择某个名称的所有块的lisp不起作用,我不知道如何编码。
http://www.cadtutor.net/forum/showthread.php?21217-过滤命令/第2页 试试这个,它没有错误检查,因为它做得很快,阅读评论,了解它在做什么。我做了测试,它不会改变各种布局上的内容,因为你没有提到。它可以与一个脚本一起使用,一次完成所有80个dwg,我不想让你混淆如何也做到这一点。一个提示是,打开浏览器,将lisp保存到dwg上,只需拖放到dwg上,它就会立即启动,只需保存几个步骤。
(defun c:reset-blk ( / ss newlay newlt bname)
(vl-load-com)
(setq obj (vlax-ename->vla-object (car (entsel "\nPick Block")))) ;pick an object and make it a Vl object
(setq newlt (getstring "\nEnter linetype name Bylayer")) ; enter linetype name
(setq newlay (getstring "\nEnter layer name")) ; enter new layer name
(setq bname (vla-get-name obj)) ; get the blocks name
(setq ss (ssget "x"(list (cons 0 "INSERT") (cons 2 bname)))) ; make a collection of the block
(repeat (setq x (sslength ss)) ; loop through the collection and change stuff
(setq blk (vlax-ename->vla-object (ssname ss (setq x (- x 1))))) ; get a block
; (vla-put-color blk 0) ; change its color 0 is Bylayer
(vla-put-linetype blk newlt) ; change linetype note BYLAYER
(vla-put-layer blk newlay) ; change its layer
)
)
(c:reset-blk)
页:
[1]
2