首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确地将DCL链接到AutoLisp?

如何正确地将DCL链接到AutoLisp?
EN

Stack Overflow用户
提问于 2012-05-28 04:37:03
回答 2查看 11.7K关注 0票数 0

我正在尝试构建一个非常基本的AutoLisp界面。我在这方面完全是个初学者,所以在从头开始编写代码失败后,我转向了正确地研究DCL。我遵循了以下教程:

http://www.afralisp.net/dialog-control-language/tutorials/dialog-boxes-and-autolisp-part-1.php

我得到了同样的错误。AutoCAD基本上退出了函数的执行,就好像dcl文件根本不在那里一样。

我试着完整地输入地址,但我认为它应该能够简单地将HTML链接到同一文件夹中的图像。

下面是我的代码:

DCL:

代码语言:javascript
复制
samp1 : dialog {
    label = "Structural Holes";

    ok_cancel;
}

Lisp:

代码语言:javascript
复制
(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文件都在同一个文件夹中,没有其他子文件夹或任何其他文件夹。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-28 05:22:45

  1. 找不到**.DCL文件
  2. 错误:退出/退出中止
  3. 错误:加载失败

这通常意味着找不到autolisp文件或DCL文件。要解决此问题,请确保将autolisp和DCL文件放入AutoCAD搜索路径中。更具体地说,将它们放在属于您的“支持文件和搜索路径”的目录中。要查找AutoCAD支持文件和搜索路径列表,请执行以下操作:

  • 在AutoCAD中,单击工具下拉菜单。

  • 转到选项菜单项。

  • 单击文件选项卡。

  • 单击支持文件和搜索路径前面的加号+。

这是您的搜索路径位置。对于您尝试加载的任何autolisp程序,将按从上到下的顺序搜索此处列出的目录。它还用于查找块和DCL文件。

添加存储autolisp和DCL文件的目录,或将autolisp和DCL文件移动到此处列出的目录之一。这应该会结束上面列出的错误。

我在这里偶然发现了这条信息:

http://www.jefferypsanders.com/autolisp_nodcl.html

非常感谢JefferyPSanders ......

票数 4
EN

Stack Overflow用户

发布于 2012-06-12 21:03:13

无论如何,您还可以在“已知目录”(例如AutoCAD所在的目录)中动态创建一个对话框。下面将演示这一点。

代码语言:javascript
复制
(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
  )
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10777093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档