在 C#中进行 AutoCAD 二次开发,添加窗口(通常指 Windows Forms 窗体)并在其上添加按钮,主要涉及创建 WinForm 项目、引用必要的 AutoCAD .NET API程序集,以及通过命令启动窗体。核心步骤如下:
1. 创建项目与引用首先,创建一个 类库 项目,并添加必要的引用。关键引用包括:
acdbmgd.dll(AutoCAD 数据库管理)acmgd.dll(AutoCAD 托管应用程序)System.Windows.Forms(用于创建 Windows 窗体)
需要将 acdbmgd.dll 和 acmgd.dll 的 "复制本地"属性设置为 False,以避免版本冲突。
2. 设计窗体 (Windows Form)
在项目中添加一个新的 Windows 窗体 ,例如 MyForm.cs。通过 Visual Studio 的设计器或代码,可以向窗体上拖放或创建按钮 (Button) 控件。
一个简单的窗体类代码示例如下:
csharp
using System.Windows.Forms;
namespace MyCadAddin
{
public partial class MyForm : Form
{
// 声明按钮控件
private Button myButton;
public MyForm()
{
InitializeComponent();
// 调用自定义方法来设置窗体控件 SetupForm();
}
private void SetupForm()
{
// 设置窗体属性 this.Text = "我的CAD工具窗口";
this.Size = new System.Drawing.Size(300, 200);
// 创建按钮并设置属性
myButton = new Button();
myButton.Text = "点击我";
myButton.Location = new System.Drawing.Point(100, 80);
myButton.Size = new System.Drawing.Size(100, 30);
// 为按钮绑定点击事件 myButton.Click += MyButton_Click;
// 将按钮添加到窗体的控件集合中 this.Controls.Add(myButton);
}
// 按钮点击事件的处理方法
private void MyButton_Click(object sender, System.EventArgs e)
{
MessageBox.Show("按钮被点击了!");
// 这里可以添加与AutoCAD交互的代码,例如:
// var doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
// doc.Editor.WriteMessage("
执行操作...");
}
}
}
3. 创建 AutoCAD 命令以显示窗体
需要创建一个公开的类和方法,并使用 CommandMethod 特性将其注册为 AutoCAD 命令。在该命令方法中,实例化并显示你的窗体。
csharp
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using System.Windows.Forms;
[assembly: CommandClass(typeof(MyCadAddin.MyCommands))]
namespace MyCadAddin
{
public class MyCommands {
[CommandMethod("ShowMyWindow")]
public static void ShowMyWindow()
{
// 确保窗体在AutoCAD的主线程上创建和显示
Autodesk.AutoCAD.ApplicationServices.Application.ShowModalDialog(new MyForm());
// 如果希望显示非模态(浮动)窗口,可以使用:
// System.Windows.Forms.Form form = new MyForm();
// Autodesk.AutoCAD.ApplicationServices.Application.ShowModelessDialog(form);
}
}
}
关键点对比
| 特性 | 模态对话框 (ShowModalDialog) |
非模态对话框 (ShowModelessDialog) |
|---|---|---|
| 交互方式 | 阻塞用户与AutoCAD主窗口的交互,直到窗体关闭。 | 允许用户在窗体和AutoCAD主窗口之间自由切换。 |
| 适用场景 | 需要用户必须完成或取消某项操作后才能继续。 | 工具面板、浮动工具栏等需要持续交互的场景。 |
| 代码示例 | Application.ShowModalDialog(new MyForm()); |
Application.ShowModelessDialog(new MyForm()); |
4. 部署与调试
- 生成 DLL :编译项目生成
.dll文件。 - 加载到 AutoCAD :
- 在 AutoCAD 中使用
NETLOAD命令,浏览并选择生成的.dll文件。 - 或者,将
.dll文件路径添加到 AutoCAD 的信任位置,并通过AppLoad命令或自动加载机制加载。
- 在 AutoCAD 中使用
- 运行命令 :加载成功后,在 AutoCAD 命令行输入你定义的命令(如
ShowMyWindow),即可弹出带有按钮的窗口。
完整流程示例
假设项目名为 MyCadTool,一个最小化的可运行结构如下:
MyCadTool.csproj
|-- References
| |-- acdbmgd.dll (Copy Local = False)
| |-- acmgd.dll (Copy Local = False)
| `-- System.Windows.Forms
|-- MyForm.cs (包含窗体和按钮的代码)
`-- MyCommands.cs (包含ShowMyWindow命令)
按照上述步骤操作,即可在 C# CAD 二次开发中成功添加窗口和按钮。