MiGo 发表于 2022-7-6 14:47:18

AutoLISP在drawi组上运行

是否可以制作一个AutoLISP,从用户那里获得一组选定的图形,并在每个选定的图形上运行一个脚本?

Lee Mac 发表于 2022-7-6 15:00:16

我从来没有这样做过,但我认为你可以得到一个图形列表,然后得到一个LISP例程来编写脚本文件并将其保存在某个地方,然后用户可以运行它,但我不认为你可以从LISP在多个图形上运行脚本,因为新图形打开后LISP就会终止。

MiGo 发表于 2022-7-6 15:12:14

我所在的一位同事提出了一些lisp例程,这些例程运行用户在用户选择的一批图形上指定的函数,但您必须将cad放在单个图形界面(sdi)中。

fuccaro 发表于 2022-7-6 15:14:28

请参见此处:http://www.cadtutor.net/forum/showthread.php?t=19294

Lee Mac 发表于 2022-7-6 15:27:16

我仍然倾向于使用“getfield”和/或“vl directory files”或类似的组合来收集文件列表和目录路径。
 
然后,我将使用“vl filename mktemp”创建脚本文件,并使用“write line”编写一个脚本文件,您可以自费运行。
 
或者,您可以使用“script”命令(但请确保这是您在LISP中运行的最后一个命令。。。
 
只是我的意见,
 

alanjt 发表于 2022-7-6 15:37:15

scriptpro(autodesk)将完全做到这一点。
编写一个小脚本来执行lisp例程。
 
这将不再有效(我认为scriptpro在2004版之后不适用于绘图),但这是我用来批量绘制EMP计划的东西。这样,我们可以设置一台计算机来绘制图纸,然后让管理员整理出任何不正常的东西。当然,图纸集管理器现在可以执行此操作,但您仍然可以将其用于批量编辑图形。
 
(foreach layl (layoutlist)
(if (wcmatch (strcase layl) "*EMP*")
(progn
(setvar "ctab" layl)
(command "-plot" "n" (getvar "ctab") "" "" "n" "n" "y")
);progn
);if
);foreach
 
即使这都是lisp编码,您仍然可以将其作为加载。scr文件。或者从脚本中调用lisp例程。这是我们用过的许多方法之一。我只是把它们放在我的档案里,让它们成为一只背包老鼠。

ASMI 发表于 2022-7-6 15:44:12

你应该收集打开的文档:
 
(setq dCol(vla-get-Documents
    (vlax-get-acad-object)))
 
并为每个图形运行代码:
 
(vlax-for doc dCol
... Your code ...
); end vlax-for
 
要打开现有文档,可以使用vla open方法:
 
(setq doc(vla-Open dCol "C:\\Some path"))
 
或者使用Object DBX接口在不打开的情况下继续绘制。
 
您不能对此代码使用命令。

Lee Mac 发表于 2022-7-6 15:50:01

阿斯米,我从你身上学到了很多
 
谢谢
页: [1]
查看完整版本: AutoLISP在drawi组上运行