我正在尝试构建一个非常基本的AutoLisp界面。我在这方面完全是个初学者,所以在从头开始编写代码失败后,我转向了正确地研究DCL。我遵循了以下教程:
http://www.afralisp.net/dialog-control-language/tutorials/dialog-boxes-and-autolisp-part-1.php
我得到了同样的错误。AutoCAD基本上退出了函数的执行,就好像dcl文件根本不在那里一样。
我试着完整地输入地址,但我认为它应该能够简单地将HTML链接到同一文件夹中的图像。
下面是我的代码:
DCL:
samp1 : dialog {
label = "Structural Holes";
ok_cancel;
}Lisp:
(defun C:samp1()
(setq dcl_id (load_dialog "samp1.dcl"))
(if (not (new_dialog "samp1" dcl_id))
(exit)
)
(action_tile
"cancel"
"(done_dialog)(setq userclick nil)"
)
(action_tile
"accept"
"(done_dialog)(setq userclick T))"
)
(start_dialog)
(unload_dialog dcl_id)
(princ)
)
(princ)感谢任何愿意抽出时间来帮助我的人。我开始非常绝望,这是我的第一个也是唯一一个autolisp项目,所以我没有任何经验……
LE:请注意,dcl文件和lisp文件都在同一个文件夹中,没有其他子文件夹或任何其他文件夹。
发布于 2012-05-28 05:22:45
这通常意味着找不到autolisp文件或DCL文件。要解决此问题,请确保将autolisp和DCL文件放入AutoCAD搜索路径中。更具体地说,将它们放在属于您的“支持文件和搜索路径”的目录中。要查找AutoCAD支持文件和搜索路径列表,请执行以下操作:
这是您的搜索路径位置。对于您尝试加载的任何autolisp程序,将按从上到下的顺序搜索此处列出的目录。它还用于查找块和DCL文件。
添加存储autolisp和DCL文件的目录,或将autolisp和DCL文件移动到此处列出的目录之一。这应该会结束上面列出的错误。
我在这里偶然发现了这条信息:
http://www.jefferypsanders.com/autolisp_nodcl.html
非常感谢JefferyPSanders ......
发布于 2012-06-12 21:03:13
无论如何,您还可以在“已知目录”(例如AutoCAD所在的目录)中动态创建一个对话框。下面将演示这一点。
(defun _make-getstring-dialog-on-the-fly ( / fn f dcl dcl_id userclick str)
(setq fn (strcat
(vl-filename-directory
(findfile "acad.exe")) "\\$vld$.dcl")
f (open fn "w")
dcl
'(
"stringdlg : dialog {"
"label = \"Charater Array\";"
": edit_box {"
"label = \">>:\";"
"edit_width = 20;"
"key = \"stringdlg\";"
"is_default = true;"
"}"
": row {"
"alignment = centered;"
"fixed_width = true;"
" : button {"
" label = \"OK\";"
" key = \"dcl_accept\";"
" width = 10;"
" allow_accept = true;"
" }"
"}"
"}"
)
)
(mapcar
(function
(lambda ( x )
(write-line x f)
(write-line "\n" f)))
dcl)
(close f)
(setq dcl_id (load_dialog fn))
(new_dialog "stringdlg" dcl_id)
(action_tile "stringdlg" "(setq str $value)(done_dialog)")
(setq userclick (start_dialog))
(unload_dialog dcl_id)
str
)https://stackoverflow.com/questions/10777093
复制相似问题