xhl 发表于 2010-4-15 10:38:00

[原创]请教:DotNetARX+C# 方面问题?

新手请教各位大侠一个问题:
最近我用DotNetARX+C#做了一dll,好像只能通过netload加载这个dll,有没有其他方法做成一个类似于EXE的应用程序,双击它直接启动CAD,同时加载dll动态库?

雪山飞狐_lzh 发表于 2010-4-15 14:18:00

可以通过注册表加载,而且可以实现更灵活的加载方式

xhl 发表于 2010-4-15 15:25:00

楼上的朋友,能详细讲解一下注册表方法吗?非常谢谢!

雪山飞狐_lzh 发表于 2010-4-15 15:53:00


3楼

xhl 发表于 2010-4-15 21:50:00

版主:
   你好,按照你的指示,自动加载dll可以了。还有一个问题没弄明白,就是我这个dll里面有一个菜单栏创建命令,想在加载dll时执行加载菜单栏命令,可以实现吗?怎样实现?非常感谢你的不吝赐教!

雪山飞狐_lzh 发表于 2010-4-15 22:06:00

上面的帖子一楼

xhl 发表于 2010-4-16 10:47:00

版主在吗? 我还是没实现启动CAD时自动加菜单功能,我的代码如下,麻烦你帮我看下谢谢:
using System;
using System.Linq;
using System.Text;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Runtime;
using DNA;
using Autodesk.AutoCAD.Colors;
using Autodesk.AutoCAD.Windows;
using System.Diagnostics;
using System.Runtime.InteropServices;
using Autodesk.AutoCAD.Interop;
using Autodesk.AutoCAD.Interop.Common;
namespace CsMgd1
{
    ///
    /// Summary for Class1.
    ///
    public class Class1 : IExtensionApplication
    {
      public Class1()
      {
            AddMenuCom();
      }
      public void Initialize()
      {
            try
            {
                //cls.AddMenuCom();
            }
            catch (System.Exception ex)
            {
                ed.WriteMessage("Error: " + ex.Message);
            }
      }
      public void Terminate() { }
      Database db = HostApplicationServices.WorkingDatabase;
      Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
      
      public void Test()
      {
            using (Transaction trans = db.TransactionManager.StartTransaction())
            {
                trans.Commit();
                //Tools.RunCommand(false, "circle", "5,5", Tools.PauseToken, "line", "5,5", "7,5", "");
            }
      }
      
      public static void AddMenuCom()
      {
            AcadApplication app = (AcadApplication)Marshal.GetActiveObject("AutoCAD.Application.17");
            AcadMenuBar menuBar = app.MenuBar;
            AcadMenuGroup menuGroup = app.MenuGroups.Item(0);
            AcadPopupMenus menus = menuGroup.Menus;
            AcadPopupMenu mymenu = menus.Add("MyMenu");
            mymenu.AddMenuItem(0, "Hello", "hello");
            mymenu.AddSeparator(1);
            mymenu.AddMenuItem(2, "Hello2", "hello");
            AcadPopupMenu ext = mymenu.AddSubMenu(3, "Ext");
            ext.AddMenuItem(0, "Hello", "hello");
            ext.AddSeparator(1);
            ext.AddMenuItem(2, "Hello2", "hello");
            mymenu.InsertInMenuBar(menuBar.Count - 2);
      }
    }
}

雪山飞狐_lzh 发表于 2010-4-16 18:17:00

      public void Initialize()
      {
            try
            {
            AcadApplication app = (AcadApplication)Marshal.GetActiveObject("AutoCAD.Application.17");
            AcadMenuBar menuBar = app.MenuBar;
            AcadMenuGroup menuGroup = app.MenuGroups.Item(0);
            AcadPopupMenus menus = menuGroup.Menus;
            AcadPopupMenu mymenu = menus.Add("MyMenu");
            mymenu.AddMenuItem(0, "Hello", "hello");
            mymenu.AddSeparator(1);
            mymenu.AddMenuItem(2, "Hello2", "hello");
            AcadPopupMenu ext = mymenu.AddSubMenu(3, "Ext");
            ext.AddMenuItem(0, "Hello", "hello");
            ext.AddSeparator(1);
            ext.AddMenuItem(2, "Hello2", "hello");
            mymenu.InsertInMenuBar(menuBar.Count - 2);
            }
            catch (System.Exception ex)
            {
                ed.WriteMessage("Error: " + ex.Message);
            }
      }

雪山飞狐_lzh 发表于 2010-4-16 18:19:00

另外,我的建议
菜单、工具条之类的最好用加载cui文件实现,不需编程的

tofemale 发表于 2010-4-21 22:13:00

function XML() {
   
}
页: [1]
查看完整版本: [原创]请教:DotNetARX+C# 方面问题?