实验一 ObjectARX .NET托管开发包的使用一, 主要内容1、下载安装ObjectARX .NET托管开发包2、创建AutoCAD命令3、创建自定义用户菜单4、创建自定义用户工具条5、创建用户自定义窗体二, 主要步骤1,下载安装ObjectARX不同的ACAD版本用不同的开发包及开发环境ACAD2000~ACAD2002 : VC++ 6.0ACAD2004~ACAD2006 : VS.NET 2002ACAD2007~ACAD2009 : VS.NET 2005ACAD2010~ACAD2011 : VS.NET 2008ACAD2012~ : VS.NET 2010下载ObjectARX 在打开打开默认网页浏览器并浏览网站. 的网页上,点击License & Download(许可&下载). 填写必填字段并选择ObjectARX for AutoCAD 2012. 点击Submit(提交)按扭. 在下载页, 点击Download Now(现在下载)使用下载管理器或点击Standard Download Method(标准下载方法)使用你的网页浏览器的默认下载方法下载. 点击Save(保存)或用于保存文件到你的本地驱动器的选项。
指定下载ObjectARX SDK安装包文件存放的位置一旦安装包文件下载完成,就浏览你保存在本地的安装并双击它,安装向导将显示在ObjectARX <释放>对话框中, 指定一个新的安装位置或接受默认的安装位置点击Install(安装)按扭. 如果没有遇到问题,安装向导完成后关闭它安装ObjectARX向导和托管项目模板一旦 ObjectARX SDK被安装,请使用默认目录c:\ObjectARX 浏览它的安装文件夹 (1)AtuoCAD的类库都在此库2,Hello World程序创建1)在VS.Net 2012中建项目HelloWorld采用.NET托管API→从“项目类型”列表中选择第二个“Visual C#”,从模板中选择“类库”,输入项目名称“HelloWorld”→.单击“确定”按钮如果弹出如下对话框说明没安装正确,可以手动加载托管DLL→从ObjectARX安装目录下加载acmgd.dll和acdbmgd.dll→使用.NET对象浏览器查看AcMgd.dll--AutoCAD .NET托管类AcDbMgd.dll– ObjectDBX .NET托管类→完整程序如下using Autodesk.AutoCAD.Runtime;using Autodesk.AutoCAD.EditorInput;using Autodesk.AutoCAD.ApplicationServices;namespace HelloWord{ public class Hello_Sample { [CommandMethod("Hello")] public void Hello() { Editor ed = Application.DocumentManager.MdiActiveDocument.Editor; ed.WriteMessage("欢迎进入.NET的开发的世界---火艇制作"); } }}→编译,并在AutoCAD加载DLL,使用Netload命令加载→→输入命令“Hello”,查看运行结果→3,创建上下文菜单→,using System;using Autodesk.AutoCAD.Windows;using Autodesk.AutoCAD.Runtime;[assembly: CommandClass(typeof(Contextmenu.Contextmenu))]namespace Contextmenu{ public class Contextmenu : IExtensionApplication { ContextMenuExtension contextMenu; HelloForm hfrm; //初始化菜单 public void Initialize() { AddMenu(); } //释放资源,移除菜单 public void Terminate() { Remove();} //添加菜单 public void AddMenu() { try { contextMenu = new ContextMenuExtension(); contextMenu.Title = "Ting_Menu"; Autodesk.AutoCAD.Windows.MenuItem menuItem; menuItem = new Autodesk.AutoCAD.Windows.MenuItem("welcome"); menuItem.Click += new EventHandler(CallbackOnClick); contextMenu.MenuItems.Add(menuItem); Autodesk.AutoCAD.ApplicationServices.Application.AddDefaultContextMenuExtension(contextMenu); } catch (System.Exception ex) {hfrm = new HelloForm(ex.ToString(), "异常"); } } //移除菜单 public void Remove() { try{ if (contextMenu != null) { Autodesk.AutoCAD.ApplicationServices.Application.RemoveDefaultContextMenuExtension(contextMenu); } } catch (System.Exception ex) { hfrm = new HelloForm(ex.ToString(), "异常"); } } public void CallbackOnClick(object sender, EventArgs e) { hfrm = new HelloForm("欢迎进入火艇工作室!"); hfrm.Show(); }}}4,创建弹出式下拉菜单1)在vs2010中,选择模板C#,创建类库命名为TurndownMenu。
2)从ObjectARX安装目录下加载acmgd.dll、accui和acdbmgd.dll3)主要代码 CustomizationSection cs; CustomizationSection entCs; CustomizationSection[] partials; int numPartialFiles; bool entCsLoaded; [CommandMethod("Ad_Cui")] public void AD_CUI_Load() { this.init_cui(); this.add_menu(); this.save_cui(); } private void init_cui() { string mainCuiFile = (string)Application.GetSystemVariable("MENUNAME"); mainCuiFile += ".cuix"; cs = new CustomizationSection(mainCuiFile); string entCuiFile = (string)Application.GetSystemVariable("ENTERPRISEMENU"); if (entCuiFile.Equals(".")) entCsLoaded = false; else { entCs = new CustomizationSection(entCuiFile); entCsLoaded = true; } partials = new CustomizationSection[cs.PartialCuiFiles.Count]; int i = 0; foreach (string fileName in cs.PartialCuiFiles) { if (File.Exists(fileName)) { partials[i] = new CustomizationSection(fileName); i++; } } numPartialFiles = i; }//添加菜单 private void add_menu() { if (cs.MenuGroup.PopMenus.IsNameFree("测试菜单")) { MacroGroup mg = new MacroGroup(cs.MenuGroupName, cs.MenuGroup); MenuMacro m1 = new MenuMacro(mg, 。