乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 24|回复: 1

创建部分菜单并在用户单击菜单时加载 dll。

[复制链接]

3

主题

9

帖子

2

银币

初来乍到

Rank: 1

铜币
20
发表于 2014-4-29 03:33:49 | 显示全部楼层 |阅读模式
嗨,
我有个问题
我正在使用AutoCAD 2013和C#
我需要在Autocad2013中的帮助菜单之后创建一个菜单。
例如,顶部菜单名称:NDRAL
子菜单1:空布局
子模块2:检查ID
1。当用户单击空布局时,然后调用“emptylayout.dll”
2。此外,单击检查ID,然后调用”checkid.dll“
我在Kean代码的帮助下尝试了此代码。我在添加菜单方面没有问题。但单击事件不起作用。我不知道如何在“菜单宏”代码中添加dll名称。我想在这方面需要修改<br>菜单宏mm1=新菜单宏(mg,“Cmd 1”,“C^CCmd1”,“ID_MyCmd1”)
MenuMacro mm2=新的MenuMacro(mg,“Cmd 2”,“C^CCmd2”,“ID_MyCmd2”)
[CommandMethod(“CreateMenu”)]
公共void BuildMenuCUI()
{
常量字符串myCuiFile=“c:\\thenndral.cuix”
常量字符串myCuiFileToSend=“c:\\thenndral.cuix”
常量字符串myCuiSectionName=“Thenndral”
编辑器ed=
Application.DocumentManager.MdiActiveDocument.Editor
字符串mainCui=
应用程序。GetSystemVariable(“MENUNAME”)+“.cuix”
自定义部分cs=
新自定义部分(mainCui)
partialguifilecollection pcfc=cs.partialguifile
如果(pcfc.Contains(mycuibile))
{
ed.WriteMessage(“自定义文件\”+myCuiFile+“\”已加载)
}
否则{
如果(System.IO.File.Exists(myCuiFile))
{
ed.WriteMessage(“自定义文件\”+myCuiFile+“\”存在-正在加载它。”)
加载MyCui(myCuiFileToSend)
}
其他
{
ed.WriteMessage(“自定义文件\”+myCuiFile+“\”不存在-正在构建它。”)
//为我们的部分菜单创建一个自定义部分。
CustomizationSection pcs=new customization section()
pcs.MenuGroupName=myCuiSectionName
//让我们添加一个菜单组,包含两个命令。
宏组mg=新宏组(myCuiSectionName,pcs.MenuGroup)
MenuMacro mm1=新的菜单(mg,“Cmd 1”,“CCmd1”,“ID_MyCmd1”)
MenuMacro mm2=新的菜单(mg,“Cmd 2”,“CCmd2”,“ID_MyCmd2”)
//现在,我们添加一个下拉菜单,其中包含两个项。
StringCollection sc=new-stringcolcollection()
sc.Add(“POP15”)
PopMenu pm=新的PopMenu(myCuiSectionName,sc,“ID_MyPop1”,pcs.MenuGroup)
PopMenuItem pmi1=新的popmeniutem(mm1,“空布局”,pm,-1)
PopMenuItem pmi2=新的popmeniutem(mm2,“检查ID”,pm,-1)
//最后,我们保存文件并加载它。
pcs.SaveAs(mycuibile)
加载MyCui(myCuiFileToSend)
}
}
}
私有void LoadMyCui(字符串CUI文件)
{
Document doc=Application.DocumentManager.MdiActiveDocument
对象oldCmdEcho=Application.GetSystemVariable(“CMDECHO”)
对象oldFileDia=Application.GetSystemVariable(“FILEDIA”)
应用程序。SetSystemVariable(“CMDECHO”,0)
应用程序。SetSystemVariable(“FILEDIA”,0)
doc.SendStringToExecute(“_.cuiload”+cuibile+”,false,false,false)
文档。SendStringToExecute(“((setvar\“FILEDIA\”+oldFileDia.ToString()+”)(princ)”,false,false,false)
文档。SendStringToExecute(“((setvar\“CMDECHO\”+oldCmdEcho.ToString()+”)(princ)”,false,false,false)
}
参考链接:
http://through-the-interface.typepad.com/through_the_interface/2007/05/creating_a_part.html
这是一个很好的例子http://www.theswamp.org/index.php?topic=16024.msg194243#msg194243
能否请您建议我解决这个过程或其他解决方案,以创建部分菜单也感谢
提前感谢,
ndral
编辑:kdub=>code=csharp格式化

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

3

主题

9

帖子

2

银币

初来乍到

Rank: 1

铜币
20
发表于 2014-4-30 03:03:09 | 显示全部楼层
嗨,
完成了。谢谢Ajilal.Vijayan。也许它会对某人有所帮助。
在 NETLOAD 之后,您的 dll 文件名和 dll 命令名称。
确保 dll 文件路径位于 autocad 搜索路径内。
修改代码:
  1. new MenuMacro(mg, "Cmd 1", "^C^C._NETLOAD;MYDLL;MYCOMMAND", "ID_MyCmd1");

谢谢
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-5 06:38 , Processed in 0.269695 second(s), 67 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表