bustr 发表于 2022-7-6 23:19:38

可以执行这些命令吗

我想把这个写进剧本里。我需要选择该块的所有实例,并更改其图层和线型。
 
我不会用lisp,因为我不懂编程。

ReMark 发表于 2022-7-6 23:27:27

您是否尝试搜索lisp例程?

bustr 发表于 2022-7-6 23:34:26

这是我的问题:如何将其放入脚本中。

bustr 发表于 2022-7-6 23:42:44

我不一定知道如何修改lisp例程使其工作。

ReMark 发表于 2022-7-6 23:47:09

也许有人已经编写了一个lisp例程,可以做你想做的事情。尝试搜索。

bustr 发表于 2022-7-6 23:51:12

我做到了。有。我找到的那个选择了一个块并改变了它的颜色。但由于我不是程序员,我不知道如何修改lisp。

ReMark 发表于 2022-7-6 23:57:19

为什么不能直接使用BEDIT命令?在块编辑器中打开有问题的块。通过“特性”选项板更改其图层和线型。关闭块编辑器时,系统会询问您是否要保存更改。这样做。当弹出回图形时,块的所有实例都将被更改。

bustr 发表于 2022-7-7 00:05:36

我有大约80张同样错误的画。

bustr 发表于 2022-7-7 00:13:19

我找到了这个线程,但选择某个名称的所有块的lisp不起作用,我不知道如何编码。
 
http://www.cadtutor.net/forum/showthread.php?21217-过滤命令/第2页

BIGAL 发表于 2022-7-7 00:18:17

试试这个,它没有错误检查,因为它做得很快,阅读评论,了解它在做什么。我做了测试,它不会改变各种布局上的内容,因为你没有提到。它可以与一个脚本一起使用,一次完成所有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
查看完整版本: 可以执行这些命令吗