我刚找到你的DCL2LSP例程。你能解释一下它是怎么用的吗。
如果我理解正确,它会让我转换。dcl编码到lisp中。我可以从那里复制代码并将其放入现有的LISP(称为.dcl)。。。
如果这就是它应该如何工作,那正是我想要的。
我已经运行了LISP例程,然后尝试在不同的地方将其粘贴到LISP代码中,比如在末尾或最后一个括号之前。。。没有运气。所以任何帮助都会非常有用。
谢谢分享
~格雷格 你有这个想法,但有点过头了。我的代码实际上只是将DCL更改为defun,它在临时文件夹中创建DCL,然后加载它。因此,它实际上所替代的只是对load_对话框的调用。剩下的事情你仍然需要做,比如new\u dialog,set\u tile,action\u tile等等。仍然需要调用来初始化对话框。您仍然可以使用start_对话框来实际显示它。然后,您还需要在完成后使用unload_对话框将其从RAM中删除。
要获得一个一站式defun,它打开一个包含所有初始化和回调操作的对话框,并在关闭和卸载后返回从start\u对话框获得的值,这是一项艰巨的任务。特别是由于初始化值和回调操作可能因对话框而异,更不用说键值也有无限的可能性。
虽然您的提及给了我一个想法,但我必须对此进行调查,并在回来时提供一个更全面的对话。 刚刚还添加了此功能:
;;;使用defun将DCL文件转换为LSP以替换load\u对话框,并为每个对话框添加run\u对话框defun(defun c:DCL2LSP(/dclFName DCL lspFName LSP str n dialogs);;获取DCL文件的名称(setq dclFName(findfile(getfield“Select DCL to convert to LSP”“”“DCL”(+4));;计算新LSP文件的名称(setq lspFName(strcat(vl filename directory dclFName)“\\load\u dialog_”(vl filename base dclFName)“.LSP”))(setq dcl(open dclFName“r”);打开DCL以读取lsp(打开lspFName“w”);打开LSP进行写入);_setq结束;;启动LSP(setq str(strcat);;函数以加载“(vl filename base dclFName)”对话框(defun load\u dialog)(vl filename base dclFName)”(/fn f)“”(setq fn(strcat(getvar“TEMPPREFIX)”)“”(vl filename base dclFName)”。DCL \“)\n”“(setq f(open fn \“w\”);_strcat结束);_setq(写入行str lsp)结束;;读取DCL中的每一行并写入LSP(while(setq str(读取行DCL));;检查是否启动了新对话框(如果(wcmatch str“*:*dialog*”)(setq dialogs(cons str dialogs));;在所有反斜杠前加一个反斜杠(setq n 1)(而( 谢谢你的回复。我现在工作忙得不可开交,所以我无法测试/尝试你在帖子中添加的内容。
在我目前的工作和上一份工作中(我仍然帮了一点忙)。。。他们的员工太无能,无法将东西放在支持文件夹中。老实说,我宁愿他们不要乱动他们的支持文件。所以我愿意支付一些$$来转换一个。dcl至。可以附加到原始文件的lsp。lsp才能运行。。。
感谢您的时间和回复irneb。我稍后再看
祝您今天过得愉快
~格雷格
页:
1
[2]