[原创]请教:DotNetARX+C# 方面问题?
<p>新手请教各位大侠一个问题:</p><p>最近我用DotNetARX+C#做了一dll,好像只能通过netload加载这个dll,有没有其他方法做成一个类似于EXE的应用程序,双击它直接启动CAD,同时加载dll动态库?</p> <p>可以通过注册表加载,而且可以实现更灵活的加载方式</p> <p>楼上的朋友,能详细讲解一下注册表方法吗?非常谢谢!</p> <p><a href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=75796">http://bbs.mjtd.com/forum.php?mod=viewthread&tid=75796</a></p><p>3楼</p> <p>版主:</p><p> 你好,按照你的指示,自动加载dll可以了。还有一个问题没弄明白,就是我这个dll里面有一个菜单栏创建命令,想在加载dll时执行加载菜单栏命令,可以实现吗?怎样实现?非常感谢你的不吝赐教!</p> <p>上面的帖子一楼</p> <p>版主在吗? 我还是没实现启动CAD时自动加菜单功能,我的代码如下,麻烦你帮我看下谢谢:<br/>using System;<br/>using System.Linq;<br/>using System.Text;<br/>using Autodesk.AutoCAD.ApplicationServices;<br/>using Autodesk.AutoCAD.DatabaseServices;<br/>using Autodesk.AutoCAD.EditorInput;<br/>using Autodesk.AutoCAD.Geometry;<br/>using Autodesk.AutoCAD.Runtime;<br/>using DNA;<br/>using Autodesk.AutoCAD.Colors;<br/>using Autodesk.AutoCAD.Windows;</p><p>using System.Diagnostics;<br/>using System.Runtime.InteropServices;<br/>using Autodesk.AutoCAD.Interop;<br/>using Autodesk.AutoCAD.Interop.Common;</p><p><br/>namespace CsMgd1<br/>{<br/> /// <summary><br/> /// Summary for Class1.<br/> /// </summary><br/> public class Class1 : IExtensionApplication<br/> {<br/> public Class1()<br/> {<br/> AddMenuCom();<br/> }</p><p> public void Initialize()<br/> {<br/> try<br/> {<br/> //cls.AddMenuCom();<br/> }<br/> catch (System.Exception ex)<br/> {<br/> ed.WriteMessage("Error: " + ex.Message);<br/> }<br/> }<br/> public void Terminate() { }</p><p> Database db = HostApplicationServices.WorkingDatabase;<br/> Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;<br/> <br/> public void Test()<br/> {<br/> using (Transaction trans = db.TransactionManager.StartTransaction())<br/> {<br/> trans.Commit();<br/> //Tools.RunCommand(false, "circle", "5,5", Tools.PauseToken, "line", "5,5", "7,5", "");<br/> }<br/> }</p><p> <br/> public static void AddMenuCom()<br/> {<br/> AcadApplication app = (AcadApplication)Marshal.GetActiveObject("AutoCAD.Application.17");<br/> AcadMenuBar menuBar = app.MenuBar;<br/> AcadMenuGroup menuGroup = app.MenuGroups.Item(0);<br/> AcadPopupMenus menus = menuGroup.Menus;<br/> AcadPopupMenu mymenu = menus.Add("MyMenu");</p><p> mymenu.AddMenuItem(0, "Hello", "hello");<br/> mymenu.AddSeparator(1);<br/> mymenu.AddMenuItem(2, "Hello2", "hello");<br/> AcadPopupMenu ext = mymenu.AddSubMenu(3, "Ext");<br/> ext.AddMenuItem(0, "Hello", "hello");<br/> ext.AddSeparator(1);<br/> ext.AddMenuItem(2, "Hello2", "hello");<br/> mymenu.InsertInMenuBar(menuBar.Count - 2);<br/> }</p><p> }<br/>}<br/></p> <p></p><p> public void Initialize()<br/> {<br/> try<br/> {<br/> AcadApplication app = (AcadApplication)Marshal.GetActiveObject("AutoCAD.Application.17");<br/> AcadMenuBar menuBar = app.MenuBar;<br/> AcadMenuGroup menuGroup = app.MenuGroups.Item(0);<br/> AcadPopupMenus menus = menuGroup.Menus;<br/> AcadPopupMenu mymenu = menus.Add("MyMenu");</p><p> mymenu.AddMenuItem(0, "Hello", "hello");<br/> mymenu.AddSeparator(1);<br/> mymenu.AddMenuItem(2, "Hello2", "hello");<br/> AcadPopupMenu ext = mymenu.AddSubMenu(3, "Ext");<br/> ext.AddMenuItem(0, "Hello", "hello");<br/> ext.AddSeparator(1);<br/> ext.AddMenuItem(2, "Hello2", "hello");<br/> mymenu.InsertInMenuBar(menuBar.Count - 2);<br/> }<br/> catch (System.Exception ex)<br/> {<br/> ed.WriteMessage("Error: " + ex.Message);<br/> }<br/> }</p> <p>另外,我的建议</p><p>菜单、工具条之类的最好用加载cui文件实现,不需编程的</p> function XML() {}
页:
[1]
2