CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 文档中心

示例:对话框快速概述 (DCL)

2023-1-8 09:17| 发布者: admin| 查看: 506| 评论: 0|来自: AutoCAD

摘要: 此示例说明如何使用 AutoLISP 创建基本对话框并显示它。

此示例说明如何使用 AutoLISP 创建基本对话框并显示该对话框。

创建 DCL 文件

此 DCL 定义一个标记为“示例对话框”的对话框,其中包含一个文本磁贴和一个“确定”按钮。DCL 驻留在名为 hello.dcl 的文件中。

hello : dialog
{
  label = "Sample Dialog Box";
  : text {
    label = "Hello, world.";
  }
  ok_only;
}
窗户
  1. 突出显示上面的示例 DCL 代码,然后按 Ctrl+C,或右键单击并选择“复制”将文本复制到剪贴板。
  2. 执行下列操作之一:
    • (视窗 8.1)在“开始”屏幕上,键入“注释”,然后单击“记事本”。
    • (视窗 10)单击“开始”按钮、“所有应用程序”、“Windows 附件”、“记事本”。
  3. 在记事本中,单击新的编辑器窗口,然后按 Ctrl+V,或右键单击并选择“粘贴”以粘贴剪贴板中的内容。
  4. 单击“文件”菜单“另存为”。
  5. 在“另存为”对话框中,浏览到要存储 DCL 文件的位置。
    注意:确保将 DCL 文件保存到 AutoCAD 支持文件搜索路径中的某个文件夹。
  6. 在“文件名”文本框中,键入 hello.dcl
  7. 单击“另存类型”下拉列表,然后选择“所有文件 (*.*)”。
  8. 单击“编码”下拉列表,然后选择“ANSI”。点击保存。
Mac 操作系统
  1. 突出显示上面的示例 DCL 代码,然后按 Command+C,或二次单击并选择“复制”将文本复制到剪贴板。
  2. 在 Finder 的 Mac OS 菜单栏上,点按“前往”菜单上的“应用程序”。
  3. 在“应用程序”窗口中,双击“文本编辑”。
  4. 在“文本编辑”的 Mac OS 菜单栏上,单击“文本编辑”菜单首选项。
  5. 在“首选项”对话框的“格式”部分下,单击“纯文本”。单击“关闭”按钮。
  6. 在编辑器窗口中单击,然后按 Command+V,或按二次单击并选择粘贴。
  7. 在 Mac OS 菜单栏上,单击“文件”菜单“另存为”。
  8. 在“无标题”对话框中,浏览到要保存 DCL 文件的文件夹。
    注意:确保将 DCL 文件保存到 AutoCAD 支持文件搜索路径中的某个文件夹。
  9. 在“另存为”文本框中,键入 hello.dcl,然后单击“保存”。
  10. 如果系统提示使用 .dcl 文件扩展名,请单击“使用”。DCL。

显示对话框并响应用户按 OK

(defun C:HELLO ( / dcl_id )
  (setq dcl_id (load_dialog "hello.dcl")) ; Load the DCL file.
  (if (not (new_dialog "hello" dcl_id))   ; Initialize the dialog.
    (exit)                                ; Exit if this does not work.
  )
  (start_dialog)                          ; Display the dialog box.
  (unload_dialog dcl_id)                  ; Unload the DCL file.
 (princ)
)
  1. 突出显示上面的示例 LSP 代码并将其复制到剪贴板。
  2. 在记事本或文本编辑中创建一个新文件,并将其保存到与之前使用 hello.lsp 文件名保存的 hello.dcl 文件相同的位置。
  3. 在AutoCAD的命令提示下,输入appload
  4. 在“加载/卸载应用程序”对话框中,浏览并选择 hello.lsp 文件。单击加载。
  5. 如果显示“文件加载 - 安全问题”对话框,请再次单击“加载”。
  6. 单击“关闭”返回到应用程序窗口。
  7. 在命令提示下,输入 hello
  8. 在“示例对话框”中,单击“确定”。

下面逐行解释 AutoLISP 程序的作用:

  • 第 1 行 – 定义以局部变量 命名的命令。HELLOdcl_id
  • 第 2 行 – 使用函数将 DCL 文件加载到内存中。该函数返回 DCL 标识号。您需要它来识别后续函数调用中的对话框。load_dialogload_dialog
  • 第 3-5 行 – 使用函数初始化对话框。对话框名称和 DCL 标识号将作为参数传递。new_dialog

    对于其他对话框,您还将设置切片值、列表和图像。上面的这个 DCL 示例使用名为 的预定义磁贴,因此除非要覆盖其默认值,否则不必初始化磁贴。磁贴还分配了一个名为它的操作。如果用户按“确定”按钮,AutoCAD 会将调用传递给 AutoLISP 应用程序并结束对话框。ok_onlyok_onlydone_dialogdone_dialog

  • 第 6 行 – 对话框的控制权将传递给 AutoCAD,以便与该函数一起显示。start_dialog
  • 第 7 行 – 在完成使用函数响应对话框后从内存中删除对话框。unload_dialog
  • 第 8 行 – 命令静默存在。
  • 第 9 行 – 结束 HELLO 命令的定义。

    为简单起见,此示例中不包含错误处理。

请注意,在用户选择其关联的操作表达式调用的磁贴(通常是按钮)之前,调用将保持活动状态。可以由磁贴显式发出调用。如果所选磁贴的属性设置为 ,则该调用也会由所选磁贴发出。start_dialogdone_dialogdone_dialogdone_dialogis_canceltrue

谨慎:从理论上讲,对话框工具在您调用时控制输入,但操作系统在您调用时控制。这对编写程序没有影响。但是,如果以交互方式调用这些函数(在 AutoCAD 命令提示符下),则必须将它们作为一个语句输入。将它们包含在一个或另一个函数中。否则,交互式调用可能会冻结屏幕。在调试期间,调用和交互式功能非常有用。start_dialognew_dialogprognnew_dialognew_dialogstart_dialog

路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1   苏公网安备32011402011833)

GMT+8, 2024-12-15 14:48

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部