3

我需要在 Autocad 2000i 的命令行上写一个命令,我希望 autocad 提示输入一个参数。然后我的 vb.net 程序将根据收到的参数进行操作。

基本上我想我的解决方案都在这里:http ://through-the-interface.typepad.com/through_the_interface/2006/09/passing_argumen.html

问题是,我找不到对其中使用的 Autodesk.AutoCAD.EditorInput 命名空间的引用。

我在这里想念什么?AutoCAD 2000i 中还没有 EditorInput 吗?


非常感谢您的回答。

我有一个 vb.net 项目,它向 autocad 添加了一个工具栏。我想让用户通过编写命令和参数来更改工具栏中组合的选定值。

我如何在我的项目中使用您的方法?我是否将 dvb 文件放入我的项目中?vba 文件可以集成到我的 vb.net 项目中吗?

提前非常感谢。

4

2 回答 2

2

早在 2000 年,AutoCAD 就不存在 .Net API。事情是通过 LISP 或 VBA 或两者的组合来完成的。以下是要做的事情的简要说明。

VBA-Only 方式:

打开工具 > 宏 > Visual Basic 编辑器 (alt + F11)

输入您的代码:

Sub Test()

Dim str As String
str = InputBox("Enter radius:")

MsgBox str

End Sub

输入"-vbarun"命令提示符(不带引号)

类型"Thisdrawing.Test"(模块名.函数名)

VBA + Lisp 方式 -(我的首选方法)

如上所述,在编辑器中键入您的代码。保存您的 vba 文件(.dvb 格式)..假设它位于D:\Macros名称为的文件夹中MyDvb.dvb.

创建一个新的 Lisp 文件(打开记事本并键入下面的代码并保存为 .lsp 扩展名)此 lisp 文件将用于调用所有 VBA 宏。

(defun c:testcommand()
  (command "vbarun" "D:/Macros/MyDvb.DVB!ThisDrawing.Test")
)

"ap"现在通过在命令提示符下键入一次加载此 lisp 。这有助于我们保持会话可用的命令。

键入"testcommand",您将看到您的代码已执行

于 2012-12-06T11:40:53.970 回答
1

这是使用 .NET C# 完成的方法

// 要求用户选择一个文件夹

        PromptResult res = ed.GetString("\nEnter the path of the folder: ");

        if (res.Status == PromptStatus.OK)
        {
            string[] filepaths = Directory.GetFiles(res.StringResult, "*.dwg", SearchOption.AllDirectories);
        }

如果您有任何问题,请告诉我。

于 2013-01-16T05:13:22.207 回答