【AutoCad 2025】【C#】零基础教程(一)——Rider 构建 HELLO 插件

文章目录

  • 相关教程
  • 相关文献
  • [🆕 AutoCAD 2025 是首个支持 .NET 8 的版本!](#🆕 AutoCAD 2025 是首个支持 .NET 8 的版本!)
  • [✅ 环境配置](#✅ 环境配置)
  • [📌 创建 Rider 项目](#📌 创建 Rider 项目)
    • [📁 项目结构](#📁 项目结构)
    • [📄 `MyAutoCAD2025Plugin.csproj`](#📄 MyAutoCAD2025Plugin.csproj)
    • [📄 `Commands.cs`](#📄 Commands.cs)
  • [构建 Rider 项目](#构建 Rider 项目)
  • [加载到 AutoCAD 2025](#加载到 AutoCAD 2025)
  • [🛠️ DEBUG 配置(Rider)](#🛠️ DEBUG 配置(Rider))

作者:小猪快跑

基础数学&计算数学,从事优化领域8年+,主要研究方向:MIP求解器、整数规划、随机规划、智能优化算法

笔者也是从零开始学习并使用 c# & Python 二次开发 AutoCad 2025。本系列教程会从最基础的项目构建开始,到最终完成复杂插件开发。

如有错误,欢迎指正。如有更好的算法,也欢迎交流!!!------@小猪快跑

相关教程

  • x

相关文献

🆕 AutoCAD 2025 是首个支持 .NET 8 的版本!

这是 Autodesk 在 2024--2025 年做出的重要技术升级。以往所有 AutoCAD 版本(2024 及更早)仅支持 .NET Framework 4.8 ,而 AutoCAD 2025 开始正式支持 .NET 8(作为替代选项或未来方向)。

🔔 注意:这并不意味着 AutoCAD 2025 "运行在 .NET 8 上",而是指 你可以用 .NET 8 编写插件,并被 AutoCAD 2025 加载执行

✅ 环境配置

  • 已安装 AutoCAD 2025
  • 已安装 .NET 8 SDK(LTS 版本)
  • 已从 AutoCAD 2025 安装目录或 ObjectARX SDK 获取 .NET 8 兼容的托管引用程序集

📌 关键路径(通常):

cmd 复制代码
C:\Program Files\Autodesk\AutoCAD 2025\

其中应包含:

  • AcMgd.dll
  • AcDbMgd.dll
  • AcCoreMgd.dll

这些 DLL 在 AutoCAD 2025 中已重新编译为 .NET 8 兼容版本(与旧版 .NET Framework 的同名 DLL 不同!)

📌 创建 Rider 项目


📁 项目结构

cmd 复制代码
MyAutoCAD2025Plugin/
├── MyAutoCAD2025Plugin.csproj
└── Commands.cs

📄 MyAutoCAD2025Plugin.csproj

xml 复制代码
<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <TargetFramework>net8.0-windows</TargetFramework>
        <PlatformTarget>x64</PlatformTarget>
        <LangVersion>latest</LangVersion>
        <Nullable>enable</Nullable>
        <ImplicitUsings>enable</ImplicitUsings>
        <!-- 必须设置为 false,避免复制到输出目录 -->
        <CopyLocalLockFileAssemblies>false</CopyLocalLockFileAssemblies>
    </PropertyGroup>

    <ItemGroup>
        <!-- 引用 AutoCAD 2025 提供的 .NET 8 托管程序集 -->
        <Reference Include="AcMgd">
            <HintPath>C:\Program Files\Autodesk\AutoCAD 2025\AcMgd.dll</HintPath>
            <Private>false</Private>
        </Reference>
        <Reference Include="AcDbMgd">
            <HintPath>C:\Program Files\Autodesk\AutoCAD 2025\AcDbMgd.dll</HintPath>
            <Private>false</Private>
        </Reference>
        <Reference Include="AcCoreMgd">
            <HintPath>C:\Program Files\Autodesk\AutoCAD 2025\AcCoreMgd.dll</HintPath>
            <Private>false</Private>
        </Reference>
    </ItemGroup>

</Project>

🔧 注意

  • 路径 C:\Program Files\Autodesk\AutoCAD 2025\ 必须存在且包含 .NET 8 版本的 DLL。
  • 如果你使用的是英文版 AutoCAD,路径相同。
  • 设置 <Private>false</Private> 确保不会将 AutoCAD DLL 复制到输出目录(AutoCAD 会自行加载)。

📄 Commands.cs

csharp 复制代码
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;

// 注册命令类
[assembly: CommandClass(typeof(MyAutoCAD2025Plugin.Commands))]

namespace MyAutoCAD2025Plugin
{
    public class Commands
    {
        /// <summary>
        /// 定义一个名为 "HELLO2025" 的 AutoCAD 命令
        /// </summary>
        [CommandMethod("HELLO2025")]
        public void HelloAutoCAD2025()
        {
            var editor = Application.DocumentManager.MdiActiveDocument?.Editor;
            if (editor != null)
            {
                editor.WriteMessage("\n✅ Hello from .NET 8 in AutoCAD 2025!");
            }
        }
    }
}

构建 Rider 项目

  • 在 Rider:Build > Build Solution Ctrl+F9
  • 输出 DLL 位于 bin\Debug\net8.0-windows\MyAutoCAD2025Plugin.dll

加载到 AutoCAD 2025

  1. 启动 AutoCAD 2025

  2. 命令行输入:

    复制代码
    NETLOAD
  3. 选择你生成的 MyAutoCAD2025Plugin.dll

  4. 输入命令:

    复制代码
    HELLO2025
  5. 应看到输出:

    复制代码
    ✅ Hello from .NET 8 in AutoCAD 2025!

🛠️ DEBUG 配置(Rider)

  • 在 Rider:Run > Attach to Process...Ctrl+Alt +F5
  • 搜索框🔍输入:acad.exe,点击 Attach with .NET Debugger
相关推荐
leaves falling1 天前
C语言内存函数-
c语言·开发语言
至为芯1 天前
IP6537至为芯支持双C口快充输出的45W降压SOC芯片
c语言·开发语言
小羊羊Python1 天前
SoundMaze v1.0.1正式发布!
开发语言·c++
浩瀚地学1 天前
【Java】JDK8的一些新特性
java·开发语言·经验分享·笔记·学习
l1t1 天前
利用DeepSeek将python DLX求解数独程序格式化并改成3.x版本
开发语言·python·算法·数独
yugi9878381 天前
基于遗传算法优化主动悬架模糊控制的Matlab实现
开发语言·matlab
我是苏苏1 天前
C#高级:使用ConcurrentQueue做一个简易进程内通信的消息队列
java·windows·c#
moxiaoran57531 天前
Go语言的错误处理
开发语言·后端·golang
yugi9878381 天前
MATLAB的多层感知器(MLP)与极限学习机(ELM)实现
开发语言·matlab
Never_Satisfied1 天前
C#获取汉字拼音字母方法总结
开发语言·c#