cso 发表于 2022-7-6 09:31:25

用脚本编写菜单文件

我有一个作业要写“简单”菜单文件,其中嵌入/引用了一个脚本和一个lisp文件。我不知道该怎么做。我可以编写一个.mnu文件并使用cuiload命令加载。我可以编写一个脚本并使用script命令加载它,同样,我可以编写一个lisp例程并加载它。我如何开始将这三个文件合并到一个程序中?它都是一个.mnu文件吗?

rkmcswain 发表于 2022-7-6 09:45:18

假设您知道语法,您可以编写一个“MNU”文件,也可以创建一个新的。使用CUI编辑器的CUIX文件。
无论哪种方式,都可以使用以下宏调用lisp文件:
 

^C^C(if (not c:myfun)(load "C:\\cadstuff\\mylispfile"));myfun;

 
...其中“mylispfile.lsp”是文件名,“C:\cadstuff”是它所在的位置,“myfun”是函数名。
 
要调用脚本文件,可以使用如下宏:
 

^C^Cscript;myscript;

 
...其中“myscript”是脚本文件的名称,假设它位于支持文件搜索路径中。

irneb 发表于 2022-7-6 09:55:16

只是一个问题。。。在生成宏时,使用正斜杠“/”而不是双反斜杠“\”不是更好吗?只是宏中的反斜杠通常意味着“暂停以供用户输入”。我知道,由于反斜杠包含在lisp括号内,因此您的脚本仍然有效,但如果您必须指定脚本文件的路径,它将暂停以供一些用户输入,因此应该是:
^C^Cscript;"C:/cadstuff/myscript";

rkmcswain 发表于 2022-7-6 09:59:00

 
抢手货我没有测试它,我确实记得在过去遇到过这个问题。
谢谢.:-)

cso 发表于 2022-7-6 10:12:42

谢谢,我成功了。

cso 发表于 2022-7-6 10:21:05

实际上,它不起作用。我让脚本部分工作,但不是Lisp程序。我们只是勉强掌握了编写菜单脚本和Lisp的每一部分,所以我还不是很好。对于LISP,我们只编写了非常简单的示例,例如通过获取三个点,然后使用line命令绘制三角形。我们还没有涉及其他项目,比如if、then,以及编写lisp的其他多种方法。我花了很多时间复习网上信息,所以我开始理解它(但不知所措!)。
 
考虑到这一点,我似乎应该能够编写一个菜单文件来加载一个简单的lisp。这样地:
 
这是我的lisp,作为一个独立的lisp;另存为csotriangle。lsp:
(defun c:TRIANG1()
(setq P1(getpoint“\n输入三角形的第一个点:”)
(setq P2(getpoint“\n输入三角形的第二个点:”)
(setq P3(getpoint“\n输入三角形的第三个点:”)
(命令“行”P1 P2 P3“C”)
)
 
 
我救了csotriangle。AutoCAD支持文件路径中的lsp。
现在,如果我想使用菜单文件(.mnu)调用它,似乎我应该能够这样做:
 
***POP1

[绘制三角形]^C^Cload;csotriangle。lsp;三角形1
[--]
[退出]^C
我不确定语法;我应该使用括号等吗?;我是否必须将条件语句和/或文件路径作为程序的一部分?
此外,似乎有一些信息提到了。mnl和。mns扩展。在一个示例中,他们保存了一个菜单例程作为示例5。mnu。mns,并加载了这两个扩展,我不知道为什么这样做。谢谢你的帮助。

irneb 发表于 2022-7-6 10:29:04

实际上,宏/脚本应该只通过lisp调用加载lisp文件:
代码使用的加载命令是SHX形状文件的加载。

rkmcswain 发表于 2022-7-6 10:35:01

 
此线程中已经发布了一个示例。
页: [1]
查看完整版本: 用脚本编写菜单文件