CAD二次开发实验报告.docx
- 文档编号:26035409
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:92
- 大小:1.21MB
CAD二次开发实验报告.docx
《CAD二次开发实验报告.docx》由会员分享,可在线阅读,更多相关《CAD二次开发实验报告.docx(92页珍藏版)》请在冰豆网上搜索。
CAD二次开发实验报告
实验一ObjectARX.NET托管开发包的使用
一、主要内容
1、下载安装ObjectARX.NET托管开发包
2、创建AutoCAD命令
3、创建自定义用户菜单
4、创建自定义用户工具条
5、创建用户自定义窗体
二、学时安排:
2学时
三、预习内容及要求
回顾ObjectARXAPI和其托管API之间的对应关系;掌握不同API版本对应的VS.NET开发版本;熟悉创建用户需求所要引用命名空间。
开发语言使用C#,AutoCAD版本2012,objectARX2012。
四、下载安装ObjectARX
4.1下载ObjectARX
不同的ACAD版本用不同的开发包及开发环境
⏹ACAD2000~ACAD2002:
VC++6.0
⏹ACAD2004~ACAD2006:
VS.NET2002
⏹ACAD2007~ACAD2009:
VS.NET2005
⏹ACAD2010~ACAD2011:
VS.NET2008
⏹ACAD2012~:
VS.NET2010
1).在打开打开默认网页浏览器并浏览
网站.
2).或从AutoCAD官网下载
4.2安装ObjectARX向导和托管项目模板
1).一旦ObjectARXSDK被安装,请使用默认目录c:
\ObjectARX
2).浏览安装文件夹后,打开Utils文件夹和ObjARXWiz文件夹。
3).在ObjARXWiz文件夹中,双击ArxWizards.msi文件。
4).在ObjectARXWizardsforAutoCAD2010对话框中,点击Next.
5).在EnterYourPreferredDefaultRDSSymbol框中,输入你的公司名字的缩写并点击Next按扭。
你输入的RDS文字被用于默认名字的前缀,这个名字是用ObjectARX向导与工程模板创建类或命令时使用的。
6).注意RDS代表RegisteredDeveloperSymbol,它用于创建命令和类的标识,以帮助避免与其它应用程序之间的潜在冲突。
7).在MemberVariableWizard页,选择同意"ReplaceMSMemberVariableWizardbyAutodeskMemberVariableWizard"并单击Next按扭.
8).在选择SelectInstallationFolder(安装文件夹)页,点击向导的Browse按扭指定一个新的安装位置或者同意默认位置。
点击Next按扭.
9).再次点击安装向导的Next按扭。
10).点击向导的Close按扭退出。
4.3HelloWorld程序创建
(1)在VS.Net2012建项目HelloWorld
1.实验采用.NET托管API
→从“项目类型”列表中选择第二个“VisualC#”,从模板中选择“控制台应用程序”,输入项目名称“HelloWorld”
→单击“确定”按钮。
添加引用,右击引用选择“添加引用”→点击“浏览”→从ObjectARX安装目录下加载AcCoreMgd.dll、AcCui.dll、Acmgd.dll和AcDbMgd.dll→点击“添加”→点击“确定”。
→使用解决方案资源管理器查看
→输入完整程序如下
usingSystem;
usingAutodesk.AutoCAD.Runtime;
usingAutodesk.AutoCAD.ApplicationServices;
usingAutodesk.AutoCAD.DatabaseServices;
usingAutodesk.AutoCAD.Geometry;
usingAutodesk.AutoCAD.EditorInput;
[assembly:
CommandClass(typeof(HelloWorld.Hello))]
namespaceHelloWorld
{
///
///SummarydescriptionforrdsCommands.
///
publicclassHello
{
publicHello()
{
//
//TODO:
Addconstructorlogichere
//
}
//DefineCommand"AsdkCmd1"
[CommandMethod("HW")]
staticpublicvoidHW()//Thismethodcanhaveanyname
{
//Putyourcommandcodehere
EditorpEd=Application.DocumentManager.MdiActiveDocument.Editor;
pEd.WriteMessage("HelloWorld");
}
}
}
→编译,并在AutoCAD加载DLL
→输入命令“HW”,查看运行结果
4.4创建上下文菜单
(1)加载命名空间
ØusingSystem;
ØusingAutodesk.AutoCAD.Runtime;
ØusingAutodesk.AutoCAD.Windows;
ØusingAutodesk.AutoCAD.EditorInput;
(2)输入完成程序如下
usingSystem;
usingAutodesk.AutoCAD.Windows;
usingAutodesk.AutoCAD.Runtime;
usingAutodesk.AutoCAD.EditorInput;
[assembly:
CommandClass(typeof(MyMenu.MyMenu))]
namespaceMyMenu
{
publicclassMyMenu:
IExtensionApplication
{
ContextMenuExtensionMyMenu;
//初始化菜单
publicvoidInitialize()
{
AddMenu();
}
//释放资源,移除菜单
publicvoidTerminate()
{
Remove();
}
//添加菜单
publicvoidAddMenu()
{
try
{
MyMenu=newContextMenuExtension();
MyMenu.Title="An_Menu";
Autodesk.AutoCAD.Windows.MenuItemmenuItem;
menuItem=newAutodesk.AutoCAD.Windows.MenuItem("Welcome");
menuItem.Click+=newEventHandler(CallbackOnClick);
MyMenu.MenuItems.Add(menuItem);
Autodesk.AutoCAD.ApplicationServices.Application.
AddDefaultContextMenuExtension(MyMenu);
}
catch(System.Exceptionex){}
}
//移除菜单
publicvoidRemove()
{
try
{
if(MyMenu!
=null)
{
Autodesk.AutoCAD.ApplicationServices.Application.
RemoveDefaultContextMenuExtension(MyMenu);
}
}
catch(System.Exceptionex){}
}
publicvoidCallbackOnClick(objectsender,EventArgse){}
}
}
(3)编译,并在AutoCAD利用NETLOAD加载dll。
4.5创建弹出式下拉菜单
(1)输入完整程序如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
usingSystem.IO;
usingAutodesk.AutoCAD.Customization;
usingAutodesk.AutoCAD.ApplicationServices;
usingAutodesk.AutoCAD.Runtime;
namespaceTurndownMenu
{
publicclassTurndownMenu
{
CustomizationSection[]partials;
CustomizationSectioncs;
CustomizationSectionentCs;
intnumPartialFiles;
boolentCsLoaded;
[CommandMethod("Ad_Cui")]
publicvoidAd_Cui_Load()
{
this.init_Cui();
this.add_Menu();
this.save_Cui();
}
privatevoidinit_Cui()
{
stringmainCuiFile=(string)Application.GetSystemVariable("MENUNAME");
mainCuiFile+=".cuix";
cs=newCustomizationSection(mainCuiFile);
stringentCuiFile=(string)Application.
GetSystemVariable("ENTERPRISEMENU");
if(entCuiFile.Equals("."))
entCsLoaded=false;
else
{entCs=newCustomizationSection(entCuiFile);
entCsLoaded=true;
}
partials=newCustomizationSection[cs.PartialCuiFiles.Count];
inti=0;
foreach(stringfileNameincs.PartialCuiFiles)
{
if(File.Exists(fileName))
{
partials[i]=newCustomizationSection(fileName);
i++;
}
}
numPartialFiles=i;
}
privatevoidadd_Menu()
{
if(cs.MenuGroup.PopMenus.IsNameFree("测试菜单"))
{
MacroGroupmg=newMacroGroup(cs.MenuGroupName,cs.MenuGroup);
MenuMacrom1=newMenuMacro(mg,"wdgl_cmd1","^C^CAd_FindCAD","ID_AD_FindCAD");
MenuMacrom2=newMenuMacro(mg,"wdgl_cmd2","^C^CAd_FileInfo","ID_Ad_FileInfo");
MenuMacrom3=newMenuMacro(mg,"wdgl_cmd3","^C^CAd_Help","ID_Ad_Help");
System.Collections.Specialized.StringCollectionpmAliases=new
System.Collections.Specialized.StringCollection();
pmAliases.Add("POP12");
PopMenupm=newPopMenu("测试菜单",pmAliases,"测试菜单",cs.MenuGroup);
PopMenuItempmi=newPopMenuItem(m1,"测试菜单",pm,-1);
pmi=newPopMenuItem(m2,"测试菜单",pm,-1);
pmi=newPopMenuItem(pm,-1);
pmi=newPopMenuItem(m3,"菜单项",pm,-1);
addMenu2Workspaces(pm);
foreach(Workspacewkincs.Workspaces)
{
WorkspacePopMenuwkpm=newWorkspacePopMenu(wk,pm);
wkpm.Display=1;
}
}
else{}
}
privatevoidaddMenu2Workspaces(PopMenupm)
{}
privatevoidsave_Cui()
{
if(cs.IsModified)
cs.Save();
for(inti=0;i { if(partials[i].IsModified) partials[i].Save(); } if(entCsLoaded&&entCs.IsModified) entCs.Save(); stringflName=cs.CUIFileBaseName; Application.SetSystemVariable("FILEDIA",0); Application.DocumentManager.MdiActiveDocument.SendStringToExecute( "cuiunload"+flName+"",false,false,false); Application.DocumentManager.MdiActiveDocument.SendStringToExecute( "cuiload"+flName+"filedia1",false,false,false); } } } (2)编译,并在AutoCAD利用NETLOAD加载dll。 4.6创建工具条 (1)输入完整程序如下: usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; usingSystem.Threading.Tasks; usingAutodesk.AutoCAD.DatabaseServices; usingAutodesk.AutoCAD.Customization; usingAutodesk.AutoCAD.EditorInput; usingAutodesk.AutoCAD.ApplicationServices; usingAutodesk.AutoCAD.Runtime; usingSystem.IO; usingSystem.Data; [assembly: CommandClass(typeof(AddToolbar.ToolBar))] namespaceAddToolbar { publicclassToolBar { Databasem_db=HostApplicationServices.WorkingDatabase; CustomizationSectionpMainCS=null; CustomizationSection[]partials; publicintBlockCount=0; publicstringfname=null; EditorpEd=Application.DocumentManager.MdiActiveDocument.Editor; stringmainCuiFile; publicToolBar() { mainCuiFile=(string)Application.GetSystemVariable("MENUNAME"); mainCuiFile+=".cuix"; pMainCS=newCustomizationSection(mainCuiFile); partials=newCustomizationSection[pMainCS.PartialCuiFiles.Count]; foreach(stringfileNameinpMainCS.PartialCuiFiles) { if(File.Exists(fileName)) {} } } #region [CommandMethod("LoadRoad")] publicvoidaddToolbar() { ToolbarnewTb=newToolbar("公路边桩绘制工具",pMainCS.MenuGroup); newTb.ToolbarOrient=ToolbarOrient.floating; newTb.ToolbarVisible=ToolbarVisible.show; newTb.Description="公路边桩绘制工具"; MacroGroupoMacroGroup=newMacroGroup("myMenuGroup0",pMainCS.MenuGroup); MenuMacrooMenuMacro1=newMenuMacro(oMacroGroup,"MenuMacro01", "SetFirst","MenuMacro01",MacroType.Any); oMenuMacro1.macro.SmallImage=@"C: \RoadSet\beginset.BMP"; oMenuMacro1.macro.LargeImage=@"C: \RoadSet\beginset.BMP"; ToolbarButtontbBtn=newToolbarButton(newTb,-1); tbBtn=newToolbarButton(newTb,-1); tbBtn.Name="起始里程设置"; tbBtn.MacroID=oMenuMacro1.ElementID; oMenuMacro1=newMenuMacro(oMacroGroup,"MenuMacro02", "SetAnyPointLC","MenuMacro02",MacroType.Any); tbBtn=newToolbarButton(newTb,-1); oMenuMacro1.macro.SmallImage=@"C: \RoadSet\Anyset.BMP"; oMenuMacro1.macro.LargeImage=@"C: \RoadSet\Anyset.BMP"; tbBtn.Name="任意点设置边桩"; tbBtn.MacroID=oMenuMacro1.ElementID; oMenuMacro1=newMenuMacro(oMacroGroup,"MenuMacro03", "SetKnowedPointLC","MenuMacro03",MacroType.Any); tbBtn=newToolbarButton(newTb,-1); oMenuMacro1.macro.SmallImage=@"C: \RoadSet\Knowset.BMP"; oMenuMacro1.macro.LargeImage=@"C: \RoadSet\Knowset.BMP"; tbBtn.Name="已知里程设置边桩"; tbBtn.MacroID=oMenuMacro1.ElementID;//ModifyBZ oMenuMacro1=newMenuMacro(oMacroGroup,"MenuMacro04", "ModifyBZ","MenuMacro04",MacroType.Any); tbBtn=newToolbarButton(newTb,-1); oMenuMacro1.macro.SmallImage=@"C: \RoadSet\Modify.BMP"; oMenuMacro1.macro.LargeImage=@"C: \RoadSet\Modify.BMP"; tbBtn.Name="修改边桩"; tbBtn.MacroID=oMenuMacro1.ElementID; oMenuMacro1=newMenuMacro(oMacroGroup,"MenuMacro05", "queryMidPL","MenuMacro05",MacroType.Any); tbBtn=newToolbarButton(newTb,-1); oMenuMacro1.macro.SmallImage=@"C: \RoadSet\MidQuery.BMP"; oMenuMacro1.macro.LargeImage=@"C: \RoadSet\MidQuery.BMP"; tbBtn.Name="属性查看";//OutputBZ tbBtn.MacroID=oMenuMacro1.ElementID;//DelMidPl oMenuMacro1=newMenuMacro(oMacroGroup,"MenuMacro06", "DelMidPl","MenuMacro06",MacroType.Any); tbBtn=newToolbarButton(newTb,-1); oMenuMacro1.macro.SmallImage=@"C: \RoadSet\DelMidPl.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CAD 二次开发 实验 报告