CAD二次开发实验报告.docx

上传人:b****9 文档编号:26035409 上传时间:2023-06-17 格式:DOCX 页数:92 大小:1.21MB
下载 相关 举报
CAD二次开发实验报告.docx_第1页
第1页 / 共92页
CAD二次开发实验报告.docx_第2页
第2页 / 共92页
CAD二次开发实验报告.docx_第3页
第3页 / 共92页
CAD二次开发实验报告.docx_第4页
第4页 / 共92页
CAD二次开发实验报告.docx_第5页
第5页 / 共92页
点击查看更多>>
下载资源
资源描述

CAD二次开发实验报告.docx

《CAD二次开发实验报告.docx》由会员分享,可在线阅读,更多相关《CAD二次开发实验报告.docx(92页珍藏版)》请在冰豆网上搜索。

CAD二次开发实验报告.docx

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.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1