乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 19|回复: 9

[编程交流] 自动加载程序(&G)

[复制链接]

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

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

使用道具 举报

51

主题

481

帖子

457

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
262
发表于 2022-7-6 09:13:58 | 显示全部楼层
像往常一样棒极了
谢谢
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:20:42 | 显示全部楼层
谢谢哈桑
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:25:23 | 显示全部楼层
更新了Autoloader程序代码,以解决AutoLISP autoload函数中的错误。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 09:31:08 | 显示全部楼层
嗨,李,
 
我最近在尝试Autoloader时注意到的一件事是,使用“|”和“|”注释掉的函数也被添加到生成的自动加载语句的“cmdlist”中。
 
特别是考虑到使用的字符可以用于区块或在线评论,我不确定要解释这一点还需要多少额外工作。。。我假设将进行vl字符串搜索测试,然后对正在读取的当前行进行某种条件解析。
 
示例:
 
  1. (defun c:FOO2 ()
  2. (prompt "\nThis is "FOO2"")
  3. (princ))
  4. [color=seagreen];|
  5. (defun c:FOO1 ()
  6. (prompt "\nThis is "FOO1"")
  7. (princ))
  8. |;
  9. ;|(defun c:FOO () (prompt "\nThis is "FOO"") (princ)) |;[/color]

 
... 其中,生成的自动加载语句为:
 
  1. (autoload "[color=red]<FilePath>[/color]/[color=red]<FileName>[/color].lsp" '("FOO2" "FOO1" "FOO"))

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

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:38:22 | 显示全部楼层
很好,伦德曼,谢谢!
 
本线程中描述的两个程序使用的子函数是我的“getsyntax”子函数,目前它非常简单。我认为我需要对这个子功能进行严格更新,以考虑到您所演示的案例以及其他涉及注释defuns的情况。
 
无论如何,谢谢你的提醒!
 
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 09:47:22 | 显示全部楼层
 
不客气!
 
如果我更熟练的话,我会为你提供比口头伪代码更多的解决方案。英雄联盟
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

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

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:58:34 | 显示全部楼层
好的,您不能在自动加载功能命令列表中包括子功能名称,但是,与正在加载的命令包含在同一文件中的任何子功能也将由自动加载加载。
 
对于按需加载子功能,您必须创建自己的“自动加载”功能,如本线程中所示。
 
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 10:05:30 | 显示全部楼层
谢谢你的确认,李。
 
编辑:现在我只是浏览一下linky,我需要一些时间来消化——但是——非常酷的东西。谢谢分享。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-7 06:18 , Processed in 0.358520 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表