几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » ObjectARX(VB.NET/C#)
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


回复
 
主题工具 搜索本主题 显示模式
旧 2009-04-20, 10:14 AM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】cad界面操作cuisamp例程源代码及中文注释(一)

cad界面操作cuisamp例程源代码及中文注释(一)
www.dimcax.com
cad界面操作cuisamp例程源代码及中文注释(一)
, , , ,
partials ;

int numpartialfiles;
yesnoignoretoggle yes = yesnoignoretoggle.yes;
yesnoignoretoggle no = yesnoignoretoggle.no;

//当enterprise cui文件被成功装载的时候为真实
bool entcsloaded;
//本例程代码中ed 代表命令行接口
// 在接口充许我们发布命令和显示信息
editor ed = application.documentmanager.mdiactivedocument.editor;
//默认构造函数
public cuisamp()
{
// 在找回的位置打开 main cui文件
string maincuifile = (string)application.getsystemvariable("menuname");// 从autocad系统变量menuname得到main cui文件
maincuifile += ".cui"; //得到的只有主文件名所以加扩展名
cs = new customizationsection(maincuifile);

string entcuifile = (string)application.getsystemvariable("enterprisemenu");
if( entcuifile.equals("."))
entcsloaded = false;
else
{
entcs = new customizationsection(entcuifile);
entcsloaded = true;
}

// 在main cui文件之后装入partial cui文件

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;
}
,而荒于嬉; 行成于思,而毁于随。勿以善小而不为,勿以恶小而为之。
// 以下是注册一个 savecui命令
//这个命令保存已经修改的所有cui文件
[commandmethod("savecui")]
public void savecui()
{
// 在这部分保存所有更改到cui文件。
//如果保存了main cui文件则partial cui文件也必须保存。


if(cs.ismodified)
cs.save();
for(int i=0;i < numpartialfiles;i++)
{
if(partials[i].ismodified)
partials[i].save();
}

if(entcsloaded && entcs.ismodified)
entcs.save();
//这里我们卸载后再装载main cui文件,所以改变后的cui文件能立即生效.
string flname = cs.cuifilebasename;
application.setsystemvariable("filedia",0);
application.documentmanager.mdiactivedocument.sendstringtoexecute("cuiunload " + flname + " ",false,false,false);
application.documentmanager.mdiactivedocument.sendstringtoexecute("cuiload " + flname + " filedia 1 ",false,false,false);
}
// lisp 语言可调用函数: savecui
//为savecui 命令lisp语言封装
[lispfunction("savecui")]
public void savecui(resultbuffer args)
{
savecui();
}
// 命令: addmenu
//此命令中增加了一个叫custom menu新的菜单到所有空间,其中包含2个子项
//这个菜单首先添加到main cui文件,然后添加到所有的工作空间。
[commandmethod("addmenu")]
public void addmenu()
{
if (cs.menugroup.popmenus.isnamefree("custom menu"))
{

system.collections.specialized.stringcollection pmaliases = new system.collections.specialized.stringcollection();
pmaliases.add("pop12");

popmenu pm = new popmenu("custom menu",pmaliases,"custom menu",cs.menugroup);

additemstopm(pm);
addmenu2workspaces(pm);
}
else
ed.writemessage("custom menu already exists\n");
}
// lisp 语言可调用函数: addmenu
//为addmenu 命令lisp语言封装
[lispfunction("addmenu")]
public void addmenu(resultbuffer args)
{
addmenu();
}
//添加一个新菜单项到popmenu
private void additemstopm(popmenu pm)
{
popmenuitem pmi = new popmenuitem(pm,-1);
pmi.macroid = "id_augi";pmi.name = "autodesk user group international";

pmi = new popmenuitem(pm,-1);
pmi = new popmenuitem(pm,-1);
pmi.macroid = "id_customsafe";pmi.name = "online developer center";
}
//添加菜单的所有工作空间
private void addmenu2workspaces(popmenu pm)
{
foreach(workspace wk in cs.workspaces)
{
workspacepopmenu wkpm = new workspacepopmenu(wk,pm);
wkpm.display = 1;
}

}

// 命令: remmenu
//此命令删除在前而从main cui文件和任何空间已经加载的菜单
[commandmethod("remmenu")]
public void remmenu()
{
//检索菜单项,从有它存在的工作空间里把它删除。 省略了这一步会有垃圾残留在工作空间里。
//从 cui 文件的菜单列表把指定菜单删除。

popmenu pm = cs.menugroup.popmenus.findpopwithalias("pop12");
if (pm != null )
{
foreach(workspace wk in cs.workspaces)
{
workspacepopmenu wkpm = wk.workspacepopmenus.findworkspacepopmenu(pm.elementid,pm.parent.name);

if(wkpm != null)
wk.workspacepopmenus.remove(wkpm);
}
cs.menugroup.popmenus.remove(pm); //从 acad菜单组删除菜单
}
}
// lisp 语言可调用函数: remmenu
//为remmenu命令lisp语言封装
[lispfunction("remmenu")]
public void remmenu(resultbuffer args)
{
remmenu();
}
//命令: addws
// 这个命令是创建一个工作空间.工作空间的名字从autocad命令行中得到。
[commandmethod("addws")]
public void addws()
{
string wsname;
promptresult prs = ed.getstring("请输入要创建的工作空间的名字: ");
if(promptstatus.ok == prs.status )
{
wsname = prs.stringresult;
if(-1 == cs.workspaces.indexofworkspacename(wsname)) //如果工作空间不存在
{
workspace nwws = new workspace (cs, wsname); //创建工作空间
savecui(); // 保存并重新加载cui文件
}
else
{
ed.writemessage("这个工作空间的名字已存在!");
}
}
}
// lisp 语言可调用函数: addws
//为 addws 命令lisp语言封装
[lispfunction("addws")]
public void addws(resultbuffer args)
{
addws();
}
// 命令: remws
//这个命令是删除一个工作空间.工作空间的名字从autocad命令行中得到
[commandmethod("remws")]
public void remws()
{
string wsname;
promptresult prs = ed.getstring("请输入要移除的工作空间的名字: ");
if(promptstatus.ok == prs.status )
{
wsname = prs.stringresult;
if(-1 != cs.workspaces.indexofworkspacename(wsname)) //如果工作空间存在
{
cs.deleteworkspace(wsname); //删除工作空间
savecui(); //保存并重新加载cui文件
}
else
{
ed.writemessage("这个工作空间的名字不存在!");
}
}

}
// lisp 语言可调用函数: remws
//为 addws 命令lisp语言封装
[lispfunction("remws")]
public void remws(resultbuffer args)
{
remws();
}
// 命令: cuishortcut
//为cui命令增加快捷键按下ctrl+b就会很轻松的实现调用
[commandmethod("cuishortcut")]
public void shortcut()
{
//在这里我们将为命令自定义组合快捷键
macrogroup mg = cs.menugroup.macrogroups[0]; //搜索acad宏
foreach (menumacro mcr in mg.menumacros)
{
if(mcr.elementid.equals("mm_1570"))
{
menuaccelerator ma = new menuaccelerator(mcr,cs.menugroup);
ma.acceleratorshortcutkey = "ctrl+b";
}
}
}
// lisp 语言可调用函数: cuishortcut
//为cuishortcut 命令lisp语言封装
[lispfunction("cuishortcut")]
public void shortcut(resultbuffer args)
{
shortcut();
}
,而荒于嬉; 行成于思,而毁于随。勿以善小而不为,勿以恶小而为之。
顶一下,以示支持
继续研究学习cad二次开发,从中寻觅人生乐趣!
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
回复


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 11:35 PM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多