raffich 发表于 2022-7-5 18:40:28

Lisp更改al的颜色

你好
我发现这个vba代码,当我可以使用vba时,它工作得很好。但在办公室中,vba受到限制,因此我想在lisp中使用它:

Sub EsWerdeDunkel()
   Dim Entity As AcadEntity, Blockdef As AcadBlock, Blockref As AcadBlockReference
   For Each Entity In ThisDrawing.ModelSpace:Entity.Color = 254: Next Entity
   
   For Each Blockdef In ThisDrawing.Blocks
       If Blockdef.IsLayout = False Then For Each Entity In Blockdef: Entity.Color = 254: Next Entity
   Next Blockdef
End Sub
 
也许有一种方法可以通过颜色提示框选择颜色。。。
 
希望你能理解我的英语。。。
我不知道如何编写lisp代码。
 
(我在office中使用Bricscad 14,64位…但lisp的工作原理与Autocad中相同)
 
谢谢4帮助
拉菲

Lee Mac 发表于 2022-7-5 18:55:40

作为代码的快速翻译:
(defun c:test ( / col doc foo )
   (if (setq col (acad_colordlg 1))
       (progn
         (setq foo (lambda ( obj ) (if (vlax-write-enabled-p obj) (vla-put-color obj col)))
               doc (vla-get-activedocument (vlax-get-acad-object))
         )
         (vlax-map-collection (vla-get-modelspace doc) 'foo)
         (vlax-map-collection (vla-get-blocks doc)
            '(lambda ( blk )
                   (if (and (= :vlax-false (vla-get-islayout blk))
                            (= :vlax-false (vla-get-isxref   blk))
                     )
                     (vlax-map-collection blk 'foo)
                   )
               )
         )
       )
   )
   (princ)
)

raffich 发表于 2022-7-5 19:10:31

嗨,李,麦克
 
不工作。。。出现错误:
Loading D:\_Witzig\_Admin\CAD\LISP\Farbe.lsp
: (LOAD "D:/_Witzig/_Admin/CAD/LISP/Farbe.lsp")C:TEST
: TEST

; ----- LISP : Call Stack -----
; ...C:TEST <<--
;
; ----- Error around expression -----
'FOO
;
; error : no function definition <FOO> ; expected FUNCTION at
“福”是个错误!
 
现在它工作了。。。!非常感谢!

raffich 发表于 2022-7-5 19:15:59

 
这似乎是BricsCAD中vlax地图集合实现的一个错误-我发布的代码在AutoCAD中表现良好。

Lee Mac 发表于 2022-7-5 19:23:43

 
嗨,李。这与VVA的ColorX有什么不同吗?http://www.cadtutor.net/forum/showthread.php?533-所有层和块的Lisp颜色更改&p=221559&viewfull=1#POST22159
 
它似乎比ColorX更快地更改了我的所有块和嵌套块(除了引线仍保留灰色)
 
谢谢

vernonlee 发表于 2022-7-5 19:39:28

 
有人知道吗?

vernonlee 发表于 2022-7-5 19:43:22

页: [1]
查看完整版本: Lisp更改al的颜色