好友
阅读权限10
听众
最后登录1970-1-1
|
最近要从revit导出大量图纸,并做简单标注,网上找到一款小巧插件。
使用工具:
de4dot
dnSpyx64安装完发现没有桌面快捷方式,打开revit后使用功能发现直接弹出登录对话框:
01
此时到C:\ProgramData\Autodesk\Revit\Addins\20xx查看Revit启动时加载的dll(xxx.addin文件),如下:
02
记录ZH.Plugin.Draw.dll及FullClassName,后在插件安装目录找到DLL,使用dnSpyx64神器打开dll。发现方法名全部混淆,使用de4dot大法去混淆。
03
Revit二次开发时定义按钮事件如下:
RibbonPanel Changyong = application.CreateRibbonPanel("插件名称", "一级菜单");
PushButtonData shensuoData = new PushButtonData("shensuo","功能名称",dll_path,"方法函数");
PushButton shensuoButton = Changyong.AddItem(shensuoData) as PushButton;
因此我们只需分析PushButtonData,后找到绑定的方法函数。以管道标注为例,进入(该插件对方法进行了封装)
04
比较明了,PipeLineTaging应该就是方法名称,点进去:后发现到新dll,去混淆,后进入,找到同名称方法,如下图:
05
06
话不多说,直接让if不执行,直接到else,修改如下:
07
保存测试。
08
发现已经秒杀,测试其他功能,已经可以使用了。
总结:revit插件主要还是要找到定义按钮时绑定的方法,而定义按钮时要吗数据全在dll里,要吗将数据写在xml里读取循环定义。 |
免费评分
-
查看全部评分
本帖被以下淘专辑推荐:
- · 精品工具盒|主题: 2387, 订阅: 1073
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|