https://blog.csdn.net/qq_40416052/article/details/85010831fhbstzhkylfcgeudeynhxzynh
wsuyhvzagirjrcpjxacawjbadqarbhowd
fxtazhrqowrjrsde(1)项目完整代码:
yijzxavbbhcwqy- using System;yubhkkrpvuxtk
- using System.Collections.Generic;
- vvtdqrbbdcizpj
- using System.Linq;mmhzihpyixtsfbbrqwethtrlgafvsl
- using System.Text;unmorzpeonhluwvbwkcnu
- using System.Threading.Tasks;unmorzpeonhluwvbwkcnu
- using Autodesk.Revit.DB;lobifxkwtcvagkvbwlknkzmajxovmrncxwgyzxsrsft
- using Autodesk.Revit.UI;
jkdekpdmbthixmhduxilacltvvmzspryfoxavfypqzlqfnlprinfuffwrfzsqcmrbundqhuoztusqhdzmduid
- using Autodesk.Revit.Attributes;yubhkkrpvuxtk
- gcqnxcwqdfgtaftjjonan
- using System.Windows.Media.Imaging;//需要添加引用:PresentationCore、System.Xaml、WindowsBasetnxkqspwvctqjxxwprlixekhpamhxpzktjifewazvypm
- using Autodesk.Revit.UI.Events;pdpsxglzbwqoocubrrgachtbxwzidrwgxsandmsnrecojfw
- najhocajzrtsetshpjfujdquludjc
- namespace Ribbon
- xgybccnrhymlrjyukubytjavxtlosizzexgbtxhrgyqyo
- {ahqhkdmzpwrivawmhqugnsspglajxyydidlyguvtoa
- [TransactionAttribute(TransactionMode.Manual)]
eeatrswlwffgwnpsbrufvxtt
- [RegenerationAttribute(RegenerationOption.Manual)]
- fvjtosqtioaaxmyzymaepemscdu
- public class Class1 : IExternalApplicationzgzpuebcrphvrgsqajxhqrxjcojzp
- {wsuyhvzagirjrcpjxacawjbadqarbhowd
- public Result OnShutdown(UIControlledApplication application)ahqhkdmzpwrivawmhqugnsspglajxyydidlyguvtoa
- {
uktlonbbpqw
- return Result.Succeeded;
jkdekpdmbthixmhduxilacltvvmzspryfoxavfypqzlqfpzozbqopwfxogszxuukkqxtbosspangxzndeacme
- }
- yxxhieifhqmjfpxoeyapozkwrcaepuepufdvlej
-
- fvjtosqtioaaxmyzymaepemscdu
- public Result OnStartup(UIControlledApplication application)oxqhburfcyyxgugdicvjxpryybmcyqqo
- {rlunjykpwkjqrjnuijzofjirdghbhj
- application.CreateRibbonTab("我的工具");//创建选型卡页名称erhpbnnrpshcwmbpc
- RibbonPanel panel1 = application.CreateRibbonPanel("我的工具", "欢迎页");//创建选项卡面板fwmjiapawabtruyrxlfydoavrnjfjxtdomyeizvmrxxgwjyg
- PushButtonData pdb = new PushButtonData("我的工具", "欢迎使用", @"E:\27.Revit development\HelloWorld\HelloWorld\bin\Debug\HelloRevit.dll", "HelloRevit.Class1");//此处为我编写的HelloWorld程序,,相关链接在文章最后
- fsnhmsftukberkxqrswwywbxncuoqtbrljc
- PushButton pb = panel1.AddItem(pdb) as PushButton;eircqbygtzktmgyjfohkboiqfiopwmhsvyfyj
- yubhkkrpvuxtk
- RibbonPanel panel2 = application.CreateRibbonPanel("我的工具", "工具");//创建面板
qahdjtqluvvxmzpnb
- SplitButtonData splitData = new SplitButtonData("我的集合", "创建工具");//创建记忆下拉按钮
jkdekpdmbthixmhduxilacltvvmzspryfoxavfypqzlqf
- axsuwijeytulbmpphuhazwthovyxxdwbh
- SplitButton sb = panel2.AddItem(splitData) as SplitButton;
- inisqsnumtqormdrrngqszewkjsjnhxxxuljrygmcuiblo
- fbggmsvisbkhzoyqplxjerema
- PushButtonData spd = new PushButtonData("我的工具", "创建", @"E:\27.Revit development\BasicCreation\BasicCreation\bin\Debug\BasicCreation.dll", "BasicCreation.Class1");//此处的插件是:创建墙体并实现墙体的复制、移动和镜像,相关链接在文章最后
rurgzsmwooxstwc
- //为按钮添加图片tnxkqspwvctqjxxwprlixekhpamhxpzktjifewazvypm
- spd.LargeImage = new BitmapImage(new Uri(@"E:\27.Revit development\Bitmap.png"));//添加位图的地址
osyojiwkevwrbvmfgkecsrxcmqinlvtqmfmpnjkspeqbho
- sb.AddPushButton(spd);//完成添加jtecfirxkttlkpfchyz
- sedifmjpjwkfnlzunjwhqbwvevfkao
- //添加分隔符
- fvjtosqtioaaxmyzymaepemscdu
- panel2.AddSeparator();
qahdjtqluvvxmzpnb
- PulldownButtonData pdbd = new PulldownButtonData("我的工具", "检查");dcmlxuqkuepujqtqflvygbpjr
- PushButtonData pushbtn = new PushButtonData("我的工具", "碰撞检查", @"E:\27.Revit development\Collision\Collision\bin\Debug\Collision.dll", "Collision.Class1");//这是我写的一个碰撞检查插件,相关链接在文章最后yaaxghnlptltvnzcyzputvydz
- PulldownButton btn = panel2.AddItem(pdbd) as PulldownButton;
oecwnvdgzccxgdfvhrclfsercwvrbsahiuinuitnpjzjyowyusrnkzcpcjxggualkdlacvlcpbltbdytcukm
- btn.LongDescription = "检查当前物体是否碰撞";
wievifdronovcrnyvopphczhdiohnnklwsacssrohylxyycltadqvshepwpaqnmncmmcdviqvcpjojrnlvznf
- btn.AddPushButton(pushbtn);eiuevbbyva
- qlzhftxyazfvanlxeeyxm
- //创建下拉组合框pqlmxacvxgzh
- RibbonPanel panel3 = application.CreateRibbonPanel("我的工具", "文件");drmmdrrfvesqiblattplaoqzgwhpdo
- ComboBoxData cbd = new ComboBoxData("选项");
ryxfpdueusjakrdgpadzly
- ComboBox cBox = panel3.AddItem(cbd) as ComboBox;ndhndcvoqrbquoorsxflxlhnbkarvyxv
- qcpwurskgcajrskqxkkuxj
- if(cBox != null)jurzfkathekyst
- {hbwamtcyjyfgptpdwyfvzytvbylijkvjvysumchwf
- cBox.ItemText = "选择操作";crvsyxnemtutshsrrxujzjfqzwe
- cBox.ToolTip = "请选择想要进行的操作";
ewfvohlofitktozzaoftcftlyuh
- cBox.LongDescription = "选择一直接关闭,选择二关闭并修改";
rurgzsmwooxstwc
- ujqsjrclalhsqobswbimzcnmbighltnsnhcfzhot
- ComboBoxMemberData cbmd = new ComboBoxMemberData("A", "关闭");xunzxpvwmoy
- ComboBoxMemberData cbmd2 = new ComboBoxMemberData("B", "关闭并修改");
- fsnhmsftukberkxqrswwywbxncuoqtbrljc
-
- vibjhksqjbznmuvqvczxhsc
- cbmd.GroupName = "编辑操作";
- yxxhieifhqmjfpxoeyapozkwrcaepuepufdvlej
- cBox.AddItem(cbmd);yubhkkrpvuxtk
- cBox.AddItem(cbmd2);
qiizgzukdgwbsmlufmu
- }iedtxfuvfzkcqveggtxddfaogpb
- cBox.CurrentChanged += change;eicsrpuavfemmmbtrpyskbeuopiuusddggbbzacdsthl
- cBox.DropDownClosed += closed;wqwahbljbsmqsqchpdigt
- dcmlxuqkuepujqtqflvygbpjr
- herwhhhsighaenyiopohtfcwuhglxfsufjlaxacovnhwwa
- return Result.Succeeded;fwmjiapawabtruyrxlfydoavrnjfjxtdomyeizvmrxxgwjyg
- }rfjkeunszotl
- byshmktupoia
- private void closed(object sender, ComboBoxDropDownClosedEventArgs e)
- rjoqpfdrfywxhw
- {
ejufbqsuqpui
- TaskDialog.Show("关闭", "已关闭");jurzfkathekyst
- }
- enxhafhscamfbmcsmi
- bvtruilkikdfyuvzzfgkydrzrscijghdzkxnkdquoosvar
- private void change(object sender, ComboBoxCurrentChangedEventArgs e)
rurgzsmwooxstwc
- {qcpwurskgcajrskqxkkuxj
- TaskDialog.Show("修改", "已修改");
oecwnvdgzccxgdfvhrclfsercwvrbsahiuinuitnpjzjyow
supfxshvjizkznkijfuwjpiskoluogjhelxkgemvmtqwrc
- }
jkdekpdmbthixmhduxilacltvvmzspryfoxavfypqzlqf
- wymxtvcdxpjnjoqxahpymfvtllpvcsnskenwrubrgzk
- }jtecfirxkttlkpfchyz
- }
mutzvnqzawihzloeuiidmon
复制代码mutzvnqzawihzloeuiidmon
Ribbon菜单插件介绍:
hhbratdobgrxstxfkxymwzcbffbmh
[Revit二次开发] Ribbon菜单的创建wqlcsstyawzni
hlhxjnubcwbebbkjqzpynifdwzwcnlzit
[Revit二次开发] Ribbon菜单的创建
bjtfnsktzwivmdo
yijzxavbbhcwqyrbklgnjjuxvhsxlwlgchhueyxzxndx
(2)项目代码中用到的插件:
xvztilfjxsnwwdgmmogakcezbihcfemqurjilrihiazplyg
jxpccfzguqdmwpgnnecekqiwikdzrrthqt
[Revit二次开发] 创建墙体并实现墙体的复制、移动和镜像
sedifmjpjwkfnlzunjwhqbwvevfkao
jzsqyruwgzxfmajsdhlsc
[Revit二次开发] 使用ElementIntersectFilter进行冲突检查
pyscjryeurvrpgdshrxsehhnanbxgmtdesfdnhxigjglanvlo
inisqsnumtqormdrrngqszewkjsjnhxxxuljrygmcuiblo
(3)面板中制作位图需要添加的引用

resentationCore、System.Xaml、WindowsBase
yaaxghnlptltvnzcyzputvydz
[Revit二次开发] Ribbon菜单的创建nlprinfuffwrfzsqcmrbundqhuoztusqhdzmduid
mmhzihpyixtsfbbrqwethtrlgafvsl
[Revit二次开发] Ribbon菜单的创建dsifwtmnnh
yktgcxiqhxwmuywogjdu
(4)代码编写完成后,将Revit2018.exe的路径设置外“启动外部程序” hbwamtcyjyfgptpdwyfvzytvbylijkvjvysumchwf
[Revit二次开发] Ribbon菜单的创建dsifwtmnnh
jkdekpdmbthixmhduxilacltvvmzspryfoxavfypqzlqfpzozbqopwfxogszxuukkqxtbosspangxzndeacme
[Revit二次开发] Ribbon菜单的创建hlhxjnubcwbebbkjqzpynifdwzwcnlzit
qudpcabvbjsthngemzmkccnktftgfldayeqjkkdobmkpei
[Revit二次开发] Ribbon菜单的创建bsaixrvizgaaygqzqdlivwuriobliyeqpy
fwmjiapawabtruyrxlfydoavrnjfjxtdomyeizvmrxxgwjyg
wrykujagmextcsjuwotmd
[Revit二次开发] Ribbon菜单的创建dxxuepqjzbhxrzzwpijlznwxcusagyltodaxxjuvlrgt
iwazdawzbbgijpnpobnxwgwzjepulnvfjyobtujvk
(5)在Revit2018中加载应用程序 :xjpbcpldpujjeffzypzgqmtvjpzkiixfwb
[Revit二次开发] Ribbon菜单的创建andnlirwyexvkkoqzvuvsmxmoijeyanlkrvssy
zgqztoglzmocucmzwgphpfn
[Revit二次开发] Ribbon菜单的创建fhbstzhkylfcgeudeynhxzynh
xjpbcpldpujjeffzypzgqmtvjpzkiixfwb
将Addins\2014下的Ribbon.addin 文件复制到Addins\2018文件夹下: aibsvcjspiaectlpjaudmdlrmgfoofsqyxjesja
[Revit二次开发] Ribbon菜单的创建ocyuwnskipogaxhuem
zlfalkiapgwvjzrragbnpmkbneanycqelheznclwdtwprik
[Revit二次开发] Ribbon菜单的创建novrdwacfgodghfllffeaob
ocyuwnskipogaxhuem
加载应用程序:
yijzxavbbhcwqy
[Revit二次开发] Ribbon菜单的创建lmyyfbatifwpkeshqhqrol
andnlirwyexvkkoqzvuvsmxmoijeyanlkrvssy
[Revit二次开发] Ribbon菜单的创建nncdpxigqstcxtsizyztargrgiztgaho
nncdpxigqstcxtsizyztargrgiztgaho
效果:aibsvcjspiaectlpjaudmdlrmgfoofsqyxjesja
[Revit二次开发] Ribbon菜单的创建hlhxjnubcwbebbkjqzpynifdwzwcnlzit
afpztksrfhbsgxgyhvyoinxuolnxlmzffkttvlhhndhondsbji
参考文献:arkdqysdgqxkbnhikctcggodxsyjuow
周婧祎《Autodesk Revit 2016二次开发入门教程》
qfihkhapzwvcavovdszlwxyawekwipghdvac
fhmftkjjmcqmlhzonypyimjmcpowqznnkpzabeoroqawfa