几何尺寸与公差论坛------致力于产品几何量公差标准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-29, 05:27 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】如何关联工具栏?(c#)

如何关联工具栏?(c#)
www.dimcax.com
如何关联工具栏?(c#)
我经过几天的寻找和论坛的帮助,知道怎么添加菜单和工具栏了,但是,我发现,自己增加的菜单,只能调用autocad本身存在的命令,如果不是内部命令,如何操作?我想到了事件,但是,那在用户控件中可以容易办到,如果是自己增加的菜单或工具,如何关联到我自己写的函数中呢?
c#中,工具栏有一个macro宏,是字符串类型的,如何写这个宏呢?
使用代理,在autodesk官方教程c#中有介绍的。
能举一个简单的例子吗?。
acadapplication acadapp;
acadapp = (acadapplication)marshal.getactiveobject("autocad.application");
acadpopupmenu mymenu = acadapp.menugroups.item(0).menus.add("test");
mymenu.addmenuitem(0, "直线", "_line ");
mymenu.addmenuitem(1, "圆", "_circle ");
mymenu.addseparator(2);
acadpopupmenu subm = mymenu.addsubmenu("", "子菜单");//下级菜单
subm.addmenuitem(0, "射线", "xline ");
mymenu.addmenuitem(4, "圆弧", "_arc ");


mymenu.insertinmenubar(14);//插入到当前菜单组14
/////////////////
如何将自己定义的函数关联到上面命令中任何一个,比如显示”iloveyou“

获取选中物体id,此论坛中找的。处理选中事件的。
public class mtest: iextensionapplication
{
static editor m_ed = autodesk.autocad.applicationservices.application.documentmanager.mdiactivedocument.editor;
static int m_num = 0;
public void initialize()
{
m_ed.selectionadded += new selectionaddedeventhandler(m_selectedobject);
}
void m_selectedobject(object sender, selectionaddedeventargs e)
{
m_ed.selectionadded -= new selectionaddedeventhandler(m_selectedobject);
if (m_num == 3)
{
promptselectionresult m_psr = m_ed.selectimplied();
if (m_psr.status == promptstatus.ok)
{
objectid[] m_objids = m_psr.value.getobjectids();
m_ed.writemessage("\n你点击了{0}", m_objids[m_objids.getlength(0) - 1]);
}
m_num = 0;
}
else m_num++;
m_ed.selectionadded += new selectionaddedeventhandler(m_selectedobject);
}
public void terminate()
{
m_ed.selectionadded -= new selectionaddedeventhandler(m_selectedobject);
}
}
环境菜单使用示例:
namespace justcad
{
/// <summary>
/// summary for justcad.
/// </summary>
public class justcad : iextensionapplication
{
public void initialize()
{
//assembly.loadfrom("asdkopmnetext.dll");
addcontextmenu();
drawingpad.addtabdialog();

}
public void terminate()
{
removecontextmenu();
}
contextmenuextension m_contextmenu;

private void drawingpadcallbackonclick(object sender, eventargs e)
{
documentlock doclock = autodesk.autocad.applicationservices.application.documentmanager.mdiactivedocument.lockdocument();
drawingpad.showpalette();
doclock.dispose();
}
private void propertypadcallbackonclick(object sender, eventargs e)
{
documentlock doclock = autodesk.autocad.applicationservices.application.documentmanager.mdiactivedocument.lockdocument();
//
doclock.dispose();
}
private void dwglibinfofmcallbackonclick(object sender, eventargs e)
{
documentlock doclock = autodesk.autocad.applicationservices.application.documentmanager.mdiactivedocument.lockdocument();
dwglibinfofm fm = new dwglibinfofm();
fm.showdialog();
doclock.dispose();
}
private void addcontextmenu()
{
m_contextmenu = new contextmenuextension();
m_contextmenu.title = "我的扩展功能";
autodesk.autocad.windows.menuitem mi;
mi = new autodesk.autocad.windows.menuitem("绘图面板");
mi.click += new eventhandler(drawingpadcallbackonclick);
m_contextmenu.menuitems.add(mi);
//autodesk.autocad.windows.menuitem mi2;
//mi2 = new autodesk.autocad.windows.menuitem("打开模板");
//mi2.click += new eventhandler(propertypadcallbackonclick);
//m_contextmenu.menuitems.add(mi2);
autodesk.autocad.windows.menuitem mi3;
mi3 = new autodesk.autocad.windows.menuitem("模板管理");
mi3.click += new eventhandler(dwglibinfofmcallbackonclick);
m_contextmenu.menuitems.add(mi3);
autodesk.autocad.applicationservices.application.adddefaultcontextmenuextension(m_contextmenu);
}
private void removecontextmenu()
{
if (m_contextmenu != null)
{
autodesk.autocad.applicationservices.application.removedefaultcontextmenuextension(m_contextmenu);
m_contextmenu = null;
}
}
}
}
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
 


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

高级搜索
显示模式

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

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



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


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