1、自动加载dll的方法(个人觉得下面第4个方法会更方便

cad加载dll_实现CAD插件启动自动加载的三种方法_weixin_39774556的博客-CSDN博客从网上或者别处淘来的CAD插件,效率很高,但是每次都要手工加载,或者采用了自动加载的方法,但总是不凑效,怎么来有效解决呢?这里提供三种方法供你选择。第一种,也是最常用的方法。点击工具——加载应用程序,或者直接输入命令appload,把插件加载到启动组。不过这种方法经常失效,如果没用可以试试下面两种方法。方法一:添加程序到启动组第二种,也是经过测试最有效通用性最高的方法。找到CAD安装目录下Supp...https://blog.csdn.net/weixin_39774556/article/details/110596286

2、自动加载菜单

AutoCAD .NET 二次开发实例(12) 个人菜单栏实现 - 知乎# 0 引言当你做了一些属于自己的小功能插件以后,你就可以把它们整合到工具栏,然后直接调用就行了。就比如下面这样: 不用每次都netload单独加载那个dll,然后才是输入命令调用它。 我们直接把所有的插件功能都整…https://zhuanlan.zhihu.com/p/161292735

3、添加ribbion

AutoCAD二次开发添加Ribbon菜单 - 颜廷国 - 博客园对一款软件进行二次开发,不可避免的要添加菜单或者功能栏,通过一些按钮触发命令。以下是对AutoCAD二次开发添加Ribbon菜单的代码编写: 本文参考的文章如下: https://www.cnbloghttps://www.cnblogs.com/yantingguo/p/11806506.html

4、通过编写bundle的方式默认加载dll

cad二开之不通过netload加载命令(bundle文件的使用)_黑夜の骑士的博客-CSDN博客_netload一、背景小伙伴们在cad二次开发时,当项目完成后,需要把程序做成安装文件,供他人使用,而不是通过netload去加载,那么如何实现呢?二、解决思路可以使用bundle文件,来包装自己的插件第一步:在电脑中建立一个.bundle后缀的文件夹比如:cadPlugin.bundle第二步:将我们的插件dll文件放入其中比如这里的插件在bundle文件下的debug目录中第三步,在bu...https://blog.csdn.net/birdfly2015/article/details/103402644

5、代码样例

加载dll后,cad会默认执行Initialize()方法。亲试可行。

using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.Interop;
using Autodesk.AutoCAD.Runtime;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

[assembly: ExtensionApplication(typeof(CadTest001.AcadNetApp))]
namespace CadTest001
{
    //添加项目类引用
    public class AcadNetApp : Autodesk.AutoCAD.Runtime.IExtensionApplication
    {
        public void Initialize()
        {
            //加载后初始化的程序放在这里 这样程序一加载DLL文件就会执行
            Document doc = Application.DocumentManager.MdiActiveDocument;
            doc.Editor.WriteMessage("\n加载程序中...........\n");
            //加载菜单栏需
            AddMenu();
        }

        public void Terminate()
        {
            // do somehing to cleanup resource
        }
        //加载菜单栏
        public void AddMenu()
        {
            Document doc = Application.DocumentManager.MdiActiveDocument;
            doc.Editor.WriteMessage("添加菜单栏成功!>>>>>>>>>>>>>>");
            AcadApplication acadApp = Application.AcadApplication as AcadApplication;

            //创建建菜单栏的对象
            AcadPopupMenu myMenu = null;

            // 创建菜单
            if (myMenu == null)
            {
                // 菜单名称
                myMenu = acadApp.MenuGroups.Item(0).Menus.Add("个人测试菜单");

                myMenu.AddMenuItem(myMenu.Count, "文字批量替换", "TBR "); //每个命令后面有一个空格,相当于咱们输入命令按空格
                myMenu.AddMenuItem(myMenu.Count, "文字批量对齐", "TBA ");
                myMenu.AddMenuItem(myMenu.Count, "输出文本", "CTE ");
                //开始加子菜单栏
                AcadPopupMenu subMenu = myMenu.AddSubMenu(myMenu.Count, "CADLinkToEXcel");  //子菜单对象
                subMenu.AddMenuItem(myMenu.Count, "Excel表格导入", "CTES ");
                subMenu.AddMenuItem(myMenu.Count, "由Excel数据更新CAD表格数据", "UCTFE ");
                subMenu.AddMenuItem(myMenu.Count, "由CAD表格数据更新Excel表格数据", "UEFCT ");
                myMenu.AddSeparator(myMenu.Count); //加入分割符号
                //结束加子菜单栏


            }

            // 菜单是否显示  看看已经显示的菜单栏里面有没有这一栏
            bool isShowed = false;  //初始化没有显示
            foreach (AcadPopupMenu menu in acadApp.MenuBar)  //遍历现有所有菜单栏
            {
                if (menu == myMenu)
                {
                    isShowed = true;
                    break;
                }
            }

            // 显示菜单 加载自定义的菜单栏
            if (!isShowed)
            {
                myMenu.InsertInMenuBar(acadApp.MenuBar.Count);
            }
        }
    }
}
using Autodesk.AutoCAD.Runtime;
using System.Windows;

namespace CadTest001
{
    public class MyCommands
    {
        [CommandMethod("TBA")]
        public void TextBatchAlign()
        {
            MessageBox.Show("TBA");
        }


        [CommandMethod("TBR")]
        public void TextBatchReplace()
        {

            MessageBox.Show("TBR");

        }


        //输出文本到Excel和Txt 打开窗口

        [CommandMethod("CTE")] //CAD启动界面
        public void CADTextExport()
        {
            MessageBox.Show("CTE");
        }



        [CommandMethod("CTES")]
        static public void CADTablebyExcelSheet()
        {
            MessageBox.Show("CTES");
        }


        [CommandMethod("UCTFE")]
        static public void UpdateCADTableFromExcel()
        {
            MessageBox.Show("UCTFE");
        }


        /// <summary>
        /// 由CAD表格数据更新Excle中的数据
        /// </summary>

        [CommandMethod("UEFCT")]
        static public void UpdateExcelFromCADTable()
        {
            MessageBox.Show("UEFCT");
        }
    }
}

Logo

为武汉地区的开发者提供学习、交流和合作的平台。社区聚集了众多技术爱好者和专业人士,涵盖了多个领域,包括人工智能、大数据、云计算、区块链等。社区定期举办技术分享、培训和活动,为开发者提供更多的学习和交流机会。

更多推荐