Steven P 发表于 2022-7-5 16:08:01

加载LSP文件问题

下午好
 
 
我有一个带有下拉列表的DCL对话框。此列表包含*的文件名。文件夹中包含的LSP文件。选择其中一个,程序将使用(load myfile)命令加载或重新加载选定的LSP文件。
 
 
一切正常。。。直到选定的LSP文件包含Lisp例程之外的AutoCAD命令,即加载文件时运行的命令。然后,加载文件会导致AutoCAD在启动时尝试运行这些命令,但被对话框阻止。。出现错误和冻结(至少我认为是这样)
 
 
 
 
那么,有没有一种方法可以在启动时不运行任何命令的情况下加载LSP文件>
 
 
我更喜欢更改这个Lisp而不是所有其他文件,我想我需要保留这个函数来加载LSP文件。
 
 
 
 
我希望不要太困惑,
 
 
 
 
谢谢你的帮助。
 
 
 
 
哦,我正在处理的Lisp是一种库索引-选择一个LSP文件,第二个下拉框中填充了Lisp例程,选择一个例程,它就会运行。因此,需要确保从开始加载LSP文件
 
 
 
 
干杯

tombu 发表于 2022-7-5 16:24:49

在数百个例程中,我只有一个在加载时启动。虽然这是为了一个特定的目的,我总是避免代码自动运行。
 
由于lisp定义的函数通常在lisp的其他地方使用,因此很难回避。我会注释掉调用该函数的行。

Lee Mac 发表于 2022-7-5 16:28:01

加载AutoLISP文件时,解释器只需读取并评估文件内容;如果文件因此包含defun表达式,则在计算这些表达式时,将定义新函数(可以在命令行计算,也可以不在命令行计算)。因此,无法控制对AutoLISP文件中包含的哪些表达式进行求值-加载文件时,将对内容进行求值,就像将内容直接复制并粘贴到命令行一样(当然,注释除外)。
 
如果您不希望更改应用程序正在加载的程序的行为,我只能建议暂时取消模式对话框以加载AutoLISP文件,然后在加载表达式后重新显示对话框。

BIGAL 发表于 2022-7-5 16:41:20

我们在Lisp中使用菜单,这些菜单也可以有子菜单。听起来比使用DCL更安全。

Steven P 发表于 2022-7-5 16:45:39

一个快速的评论,当打开文件时,许多文件的顶部有一行或两行,这是一个很好的例子,(VL load com),我也在我的绘图例程中使用同样的方法来关闭绘图日志记录等等。
 
 
 
 
 
 
谢谢李,我会考虑一下,看看是否可以根据你的评论改变我正在做的事情。这就是我所想的——重新加载LSP文件并对其进行评估。对此我无能为力,
 
 
 
 
 
 
比加尔,谢谢,如果有时间的话,我今天会看看这个。我之所以使用DCL,是因为我认为它基本上可以实现我想要的功能,但如果有更好的方法,我会使用它

BIGAL 发表于 2022-7-5 16:58:44

mnu文件只是一个文本文件,这是图像的精简版本,但包括2个子级别。这包括使用图像进行选择。
 
***MENUGROUP=BIGAL***POP19**CADLIB[->Stddwgs]$I=xxxSTDS。沟槽$I=*[管道]$I=xxxxSTD。管道$I=*^C^C(加载“1-4点”)^C^C(加载“Add to Level”)[->停车场][停车场0]^C^C(加载“Carpark made simple”)npark90^C^C(加载“Carpark made simple”)npark60[

Steven P 发表于 2022-7-5 17:05:55

谢谢比格尔,这比我想象的要多,不过我非常感激
 
 
我将复制这个并在接下来的几天里玩它,毫无疑问,当它把我弄糊涂的时候,我会再次弹出来寻求帮助

BIGAL 发表于 2022-7-5 17:14:45

毫无疑问,图像内容需要更多的解释,图像是默认的开箱即用,但你可以做自定义dcl,比如3x3 4x3面板等,图像有点复杂,但在提供示例时仍然很容易。
 
[->打开
 
在dcl中使用子菜单的其他内容
页: [1]
查看完整版本: 加载LSP文件问题