Lee Mac 发表于 2022-7-6 09:03:56

自动加载程序(&G)

在最近的一次潜水中玩得很开心,产生了这两个项目
 
自动装弹机
 
该程序将为选定目录中的所有LISP文件生成自动加载表达式,然后将这些表达式写入文本文件输出(用户可以从中将内容复制到ACADDOC.lsp或其选择的目标)。
 
GetSyntax
 
一个有趣的问题-从这个线程引发,涉及一个问题,关于如何确定在代码头中没有指示并且没有加载消息指示此类信息时用于调用程序的命令。该程序将读取选定的LISP文件,并打印一份报告,详细说明选定文件中所有已定义命令的命令语法。
 
 
这两个程序都使用my GetSyntax sub,它读取提供的LISP文件,并返回提供的文件中定义的命令列表。
 
 
享受
 

asos2000 发表于 2022-7-6 09:13:58

像往常一样棒极了
谢谢

Lee Mac 发表于 2022-7-6 09:20:42

谢谢哈桑

Lee Mac 发表于 2022-7-6 09:25:23

更新了Autoloader程序代码,以解决AutoLISP autoload函数中的错误。

BlackBox 发表于 2022-7-6 09:31:08

嗨,李,
 
我最近在尝试Autoloader时注意到的一件事是,使用“|”和“|”注释掉的函数也被添加到生成的自动加载语句的“cmdlist”中。
 
特别是考虑到使用的字符可以用于区块或在线评论,我不确定要解释这一点还需要多少额外工作。。。我假设将进行vl字符串搜索测试,然后对正在读取的当前行进行某种条件解析。
 
示例:
 

(defun c:FOO2 ()
(prompt "\nThis is \"FOO2\"")
(princ))

;|
(defun c:FOO1 ()
(prompt "\nThis is \"FOO1"\")
(princ))
|;

;|(defun c:FOO () (prompt "\nThis is \"FOO"\") (princ)) |;

 
... 其中,生成的自动加载语句为:
 

(autoload "<FilePath>/<FileName>.lsp" '("FOO2" "FOO1" "FOO"))

 
无论如何,Autoloader为我节省了大量时间,为此我要说谢谢!

Lee Mac 发表于 2022-7-6 09:38:22

很好,伦德曼,谢谢!
 
本线程中描述的两个程序使用的子函数是我的“getsyntax”子函数,目前它非常简单。我认为我需要对这个子功能进行严格更新,以考虑到您所演示的案例以及其他涉及注释defuns的情况。
 
无论如何,谢谢你的提醒!
 

BlackBox 发表于 2022-7-6 09:47:22

 
不客气!
 
如果我更熟练的话,我会为你提供比口头伪代码更多的解决方案。英雄联盟

BlackBox 发表于 2022-7-6 09:56:06

李,
 
我觉得很傻,不得不问这个问题,但我现在只是在分别试验Autoload和Autoloader。
 
有没有办法“自动加载”接受参数的子函数?
 
使用转储对象示例:
 
由于这仅仅是一个学习练习(对我来说),如果从命令行调用,这个LISP文件(我们称之为ObjectDump.lsp)可以“自动加载”吗?
 
自动加载器产生:
 
或者,被降级为显式加载包含子函数的任何LISP文件,以便它们在没有函数的情况下可用(defun c:…)版本

Lee Mac 发表于 2022-7-6 09:58:34

好的,您不能在自动加载功能命令列表中包括子功能名称,但是,与正在加载的命令包含在同一文件中的任何子功能也将由自动加载加载。
 
对于按需加载子功能,您必须创建自己的“自动加载”功能,如本线程中所示。
 

BlackBox 发表于 2022-7-6 10:05:30

谢谢你的确认,李。
 
编辑:现在我只是浏览一下linky,我需要一些时间来消化——但是——非常酷的东西。谢谢分享。
页: [1]
查看完整版本: 自动加载程序(&G)