教程:使用 AutoLISP 扩展调试 LSP 文件 (AutoLISP/VS Code)
创建 AutoLISP (LSP) 文件并向该文件添加代码语句后,可以将 Visual Studio Code 连接到 AutoCAD,并使用 Visual Studio Code 提供的许多调试工具逐步执行自定义函数。
注意:AutoLISP Extension for Microsoft Visual Studio (VS) Code 不支持在 AutoCAD LT 中调试 AutoLISP 程序。
打开 AutoLISP (LSP) 文件
在调试LSP文件之前,建议先打开要调试的LSP文件。当 Visual Studio Code 最初连接到 AutoCAD 进行调试时,在当前编辑器窗口中打开的 LSP 文件将加载到 AutoCAD 中。
以下步骤说明如何在 Visual Studio Code 中打开 Create-LSP-Tutorial.lsp 文件。
- 启动 Visual Studio Code。
- 在 Visual Studio Code 中的“活动栏”上,单击“资源管理器”。
- 在“资源管理器”视图的“LSP 文件”下,单击“Create-LSP-Tutorial.lsp”打开并使其成为当前编辑器窗口。
如果“LSP 文件”文件夹未打开,请单击“文件”菜单>“打开文件夹/打开”。然后浏览并选择“LSP 文件”文件夹。
附着到 AutoCAD 并加载 AutoLISP (LSP) 文件进行调试
正确配置 AutoLISP 扩展并在当前编辑器窗口中打开 LSP 文件后,即可使用 Visual Studio Code 调试存储在 LSP 文件中的 AutoLISP 代码语句。
以下步骤说明如何将 Visual Studio Code 附加到 AutoCAD 进行调试。
- 启动 AutoCAD 2024。
- 切换到 Visual Studio Code。
- 在 Visual Studio Code 中,单击“运行”菜单>“开始调试”。
- 从 “Configurations”(配置)菜单中,选择 “AutoLISP Debug: Attach”(AutoLISP 调试:附加)。
- 在“进程”菜单中,选择表示正在运行的 AutoCAD 2024 实例的进程。
Visual Studio Code 现在应附加到 AutoCAD,并将当前编辑器窗口中的 LSP 文件加载到当前图形窗口中。
您可以通过更改 Visual Studio Code 状态栏的颜色来判断 Visual Studio Code 是否已成功附加到 AutoCAD,它的颜色将从蓝色变为橙色。
- 切换回 AutoCAD。
- 在命令提示下,输入 hello。
- 在“输入消息:”提示符下,键入 Hello from AutoCAD!,然后按 Enter 键。
此时将显示一个消息框,其中包含文本“Hello from AutoCAD!”。
- 单击“确定”关闭消息框。
- 在命令提示下,输入绘制线。指定行的两个端点。
在指定点之间绘制一条线,并将其放置在当前图层上。
向语句添加断点
断点允许在执行代码语句时中断它们。当执行中断时,您可以:
- 单步执行自定义程序中的当前语句和下一个语句,一次一行
- 计算分配给变量或函数返回的当前值
以下步骤说明如何向在当前编辑器窗口中打开的 Create-LSP-Tutorial.lsp 文件添加断点。
- 行断点
-
- 切换到 Visual Studio Code。
- 在编辑器窗口的左边距中,单击第 3 行的左侧,在该行的代码语句的开头添加断点。
将出现一个红色圆圈,表示已添加断点。
- 切换到 AutoCAD。
- 在命令提示下,输入 hello。
函数启动,代码执行在带有断点的行处中断。hello
- 切换回 Visual Studio Code。
- 在“调试”工具栏上,单击“继续”以恢复执行。
- 切换回AutoCAD,然后输入要在消息框中显示的文本字符串。
- 单击“确定”关闭消息框。
- 内联断点
-
- 切换到 Visual Studio Code。
- 在编辑器窗口的第 11 行上,单击左括号的左侧。
- 右键单击并选择 Add Inline Breakpoint (添加内联断点) 以在嵌套的 AutoLISP 表达式的开头添加断点。
- 切换到 AutoCAD。
- 在命令提示下,输入绘制线。
- 指定线起点的点。
指定第一个点后,内联断点将中断执行。
- 切换回 Visual Studio Code。
- 在“调试”工具栏上,单击“继续”以恢复执行。
- 切换回 AutoCAD 并指定线的端点。
监视语句的变量值和返回值
当执行被断点中断时,您可以看到分配给变量的当前值或代码语句返回的值。
在上一节中,您将设置两个不同的断点。以下步骤利用这些断点中断代码执行并查看分配给变量的值。
- 切换到 AutoCAD。
- 在命令提示下,输入绘制线。
- 指定线的起点。
- 切换到 Visual Studio Code。
- 将光标移到突出显示的语句上方或突出显示的语句中的 pt1 变量上,以查看分配给该变量的当前值。
- 在“调试”工具栏上,单击“单步执行”。
- 切换回 AutoCAD 并指定第二个点。
- 切换回 Visual Studio Code,然后再次单击“调试”工具栏上的“单步执行”。
- 查看分配给 pt2 变量的值。
除了将光标放在变量上以在工具提示中查看其当前分配的值外,还可以在“运行”视图的“变量”部分中查看分配给所有局部变量的值。
- 在“调试”工具栏上,单击“继续”以恢复执行。
调试时重新加载 AutoLISP (LSP) 文件
在调试自定义程序时,不可避免地会遇到需要修复的错误。修复后,您将需要测试所做的更改。
以下步骤说明如何在使用 Visual Studio Code 进行调试时对函数进行更改并将 LSP 文件重新加载到 AutoCAD 中。drawline
- 切换到 Visual Studio Code。
- 在 Create-LSP-Tutorial.lsp 文件的编辑器窗口中,在下面以粗体进行以下更改:
;; Draws a line between two points
(defun c:drawline ( / pt1 pt2 sv_clayer) ;; Declared local variables
;; Store the current and create a new layer
(setq sv_clayer (getvar "clayer"))
(command "_.-layer" "_m" "Object" "_c" "5" "" "")
;; Prompt for two points
(setq pt1 (getpoint "\nSpecify start point of line: ")
pt2 (getpoint pt1 "\nSpecify end point of line: ")
)
;; Check to see if the user specified two points
(if (and pt1 pt2)
(command "_.line" pt1 pt2 "")
(prompt "\nInvalid or missing point(s)")
)
;; Restore the previous layer
(setvar "clayer" sv_clayer)
;; Exit quietly
(princ)
)
- 保存对 LSP 文件的更改。
- 在“调试”工具栏上,单击“重新启动”。
Visual Studio Code 断开与 AutoCAD 的连接,然后重新连接到同一 AutoCAD 进程,然后再将 LSP 文件加载到当前图形中。
- 切换回 AutoCAD。
- 在命令提示下,输入绘制线。
- 指定线条的第一点和第二点。
请注意,这次该线被放置在 Objects 图层上,该图层被分配了 Blue 颜色。
结束调试
调试完 LSP 文件后,应断开 Visual Studio Code 与 AutoCAD 的连接。
以下步骤说明如何断开 Visual Studio Code 与 AutoCAD 的连接。
- 切换到 Visual Studio Code。
- 在“调试”工具栏上,单击“断开连接”。
“调试”工具栏将关闭,状态栏的颜色从橙色变回蓝色。
|