https://blog.csdn.net/qq_40416052/article/details/85010831hglegbwpsleftxihsfusrnmj
cralsslxagxgc
anqdhakuqrxhoawngqkqqrluh
(1)项目完整代码:euzezkekgybwymzjl
- using System;aagabvexrfsmnfmlcujxowelzvpvcfqqfwgi
- using System.Collections.Generic;
nonvjgtqyrjtghnclqydmgjuvtxozupfeoqzgbbjqotq
- using System.Linq;pioutacqhwxuwvqm
- using System.Text;kolahnopdtgsrcfujdnhwmqnjxyzmew
- using System.Threading.Tasks;jiixlhzegcnqoxewdninnvhuc
- using Autodesk.Revit.DB;keqrofylqeocpcopohacluscehgrhwsczv
- using Autodesk.Revit.UI;hdcxwxghklqikodzsgzaqhvpkcssrbrr
- using Autodesk.Revit.Attributes;ndhzaovuspnodpwqwjmjxxngdoqnxdnws
- vveltzfbmqvtijousvnsrlmkpyflxxwvew
- using System.Windows.Media.Imaging;//需要添加引用:PresentationCore、System.Xaml、WindowsBasekiozcgbfxuqjuvxzneosljnu
- using Autodesk.Revit.UI.Events;swhrsvchlfgoliqwxsfkgfoyvmyriysvjszxqr
-
vqyzvevbduysnwqjrpuiocblpd
- namespace Ribbondfpbjndjnhpinmt
- {
- qlxyipkylfeqtzqgabzlmfxwvnkunvkj
- [TransactionAttribute(TransactionMode.Manual)]ndhzaovuspnodpwqwjmjxxngdoqnxdnws
- [RegenerationAttribute(RegenerationOption.Manual)]fathpevcjwe
- public class Class1 : IExternalApplicationeksuicaqzxeba
- {bqybzqtfnbkubwcgedlayhsdevffbtxshdbz
- public Result OnShutdown(UIControlledApplication application)kolahnopdtgsrcfujdnhwmqnjxyzmew
- {
dcudvqphurxhlyfbdhvdzqlvhxwybdot
- jyufpnviqmmuseaonuficcuxnbq
- return Result.Succeeded;baekvxwzpris
- }okomzvzmvzykbltvabwoxslgwjcctcmhokjwcobslsfwqp
- iswlwicvbtmmgfakquqlskhfnlabordajtxkxjshmvgndcgt
- public Result OnStartup(UIControlledApplication application)
- hdkhgmnplaaqclrrfnlnldaixgaqplwhnndhohirtdwy
- {hgamgtcbwkqwkghwzrwsvnuebumboqqfqxbkuhba
- application.CreateRibbonTab("我的工具");//创建选型卡页名称
bsxvbahngwjtklxuwxdbygbqgrxmkwgujmgorcapjzizwjqpjmzpsjfdpqucnryu
- RibbonPanel panel1 = application.CreateRibbonPanel("我的工具", "欢迎页");//创建选项卡面板imziqnnpbbujhhmxepjgqjoqawrqgv
- PushButtonData pdb = new PushButtonData("我的工具", "欢迎使用", @"E:\27.Revit development\HelloWorld\HelloWorld\bin\Debug\HelloRevit.dll", "HelloRevit.Class1");//此处为我编写的HelloWorld程序,,相关链接在文章最后
kfbjpzqrwwdtoowldavajcfycfgbwfwawmhajxxhdsttrntitijyvndss
- PushButton pb = panel1.AddItem(pdb) as PushButton;xhmmjwqigciejnxfulsbjvrnahx
- ampjomtrvia
- RibbonPanel panel2 = application.CreateRibbonPanel("我的工具", "工具");//创建面板
- cralsslxagxgc
- SplitButtonData splitData = new SplitButtonData("我的集合", "创建工具");//创建记忆下拉按钮kfevijtwkmdcxjwtewlffkptzfjlhkkuvyocgjpffiqsxf
- SplitButton sb = panel2.AddItem(splitData) as SplitButton;mhnqrrtwytfrpzmvczwisnsnddhofnwlqbkkdwrdzu
-
kfbjpzqrwwdtoowldavkkrjgyqvalvwoutlyztmkmchbgdr
- PushButtonData spd = new PushButtonData("我的工具", "创建", @"E:\27.Revit development\BasicCreation\BasicCreation\bin\Debug\BasicCreation.dll", "BasicCreation.Class1");//此处的插件是:创建墙体并实现墙体的复制、移动和镜像,相关链接在文章最后wnkywocvgmdjlcw
- //为按钮添加图片lbaljozgqhrxxhbt
- spd.LargeImage = new BitmapImage(new Uri(@"E:\27.Revit development\Bitmap.png"));//添加位图的地址jiixlhzegcnqoxewdninnvhuc
- sb.AddPushButton(spd);//完成添加yutntejhooxtxuyelhwhwukjdargklwcpcsrsqougvkypzp
-
vqyzvevbduysnwqjrpuiocblpd
- //添加分隔符
- vlewbugqquypfdzqznvjxpxvrydsmzxbem
- panel2.AddSeparator();
- wbprpkchsbounbmfr
- PulldownButtonData pdbd = new PulldownButtonData("我的工具", "检查");
nbsdxywdxctzvkgdsndmrsjzlwbdtvio
- PushButtonData pushbtn = new PushButtonData("我的工具", "碰撞检查", @"E:\27.Revit development\Collision\Collision\bin\Debug\Collision.dll", "Collision.Class1");//这是我写的一个碰撞检查插件,相关链接在文章最后awqqrpqxwcuotiggespzqqtedjzrvovrpdhboccasojh
- PulldownButton btn = panel2.AddItem(pdbd) as PulldownButton;gaidqmmmead
- btn.LongDescription = "检查当前物体是否碰撞";
- qlxyipkylfeqtzqgabzlmfxwvnkunvkj
- btn.AddPushButton(pushbtn);
- qlxyipkylfeqtzqgabzlmfxwvnkunvkj
-
bjpkbjhdzbedappn
- //创建下拉组合框mhnqrrtwytfrpzmvczwisnsnddhofnwlqbkkdwrdzu
- RibbonPanel panel3 = application.CreateRibbonPanel("我的工具", "文件");
- vlewbugqquypfdzqznvjxpxvrydsmzxbem
- ComboBoxData cbd = new ComboBoxData("选项");ytpqwxnoajjdqnzzqqtwpptehtwpvazynlzt
- ComboBox cBox = panel3.AddItem(cbd) as ComboBox;yutntejhooxtxuyelhwhwukjdargklwcpcsrsqougvkypzp
-
vqyzvevbduysnwqjrpuiocblpd
- if(cBox != null)oxjctskzanbsxmontebsvrtexsdwsobqazpkwetkptgp
- {
xwpnrmfwqbfyckavjdgmgcikrdwvewqgnxfja
- cBox.ItemText = "选择操作";eoywaogueqerzydktgypapklethdnexiekacqlpf
- cBox.ToolTip = "请选择想要进行的操作";
kfbjpzqrwwdtoowldavtelqditnroskuernyedswgdjbtestlxvsbicpyxkjfi
- cBox.LongDescription = "选择一直接关闭,选择二关闭并修改";
- hdkhgmnplaaqclrrfnlnldaixgaqplwhnndhohirtdwy
- hgrrqanavsvdvhqawjtawtenaqywielmv
- ComboBoxMemberData cbmd = new ComboBoxMemberData("A", "关闭");
- hzqyujktskfstugwwysbwpneefzjxcg
- ComboBoxMemberData cbmd2 = new ComboBoxMemberData("B", "关闭并修改");kolahnopdtgsrcfujdnhwmqnjxyzmew
- okxnzlmpqwmlvaxd
- cbmd.GroupName = "编辑操作";jfnpcpuyiyynygrnwafqbekeilsdrjsgzuxirxfnypp
- cBox.AddItem(cbmd);
kfbjpzqrwwdtoowldav
- jyufpnviqmmuseaonuficcuxnbq
- cBox.AddItem(cbmd2); ifvbqxyqlvcipbcqonyuvqk
- }
- vlewbugqquypfdzqznvjxpxvrydsmzxbem
- cBox.CurrentChanged += change;imziqnnpbbujhhmxepjgqjoqawrqgv
- cBox.DropDownClosed += closed;pioutacqhwxuwvqm
- keqrofylqeocpcopohacluscehgrhwsczv
-
dcudvqphurxhlyfbdhvdzqlvhxwybdot
kvvwantfnyxloxqc
- return Result.Succeeded;kiozcgbfxuqjuvxzneosljnu
- }upeploptsykeoqhdphwyocikwo
- jiixlhzegcnqoxewdninnvhuc
- private void closed(object sender, ComboBoxDropDownClosedEventArgs e)ozdtjoxvytencburrroqmcg
- {okomzvzmvzykbltvabwoxslgwjcctcmhokjwcobslsfwqp
- TaskDialog.Show("关闭", "已关闭");ndhzaovuspnodpwqwjmjxxngdoqnxdnws
- }kiozcgbfxuqjuvxzneosljnu
- awqqrpqxwcuotiggespzqqtedjzrvovrpdhboccasojh
- private void change(object sender, ComboBoxCurrentChangedEventArgs e)enzntxawgaytvbnfthypyhqyi
- {gywmfdgrhhrmoekqjgqpaallfzcmfctvgbvxshep
- TaskDialog.Show("修改", "已修改");
kfbjpzqrwwdtoowldav
- bcblsveljmpnaravgekzolxgidyyow
- }muadfratuirfzblzyftzpuzzlhykjorwjmbvs
- }ebinksvekpjfjaedltxhwdgktwtbmlipbtqligctdkrpohsp
- }
bxmgobxqfitwfmthktfpvrgehfmuiefv 复制代码bxmgobxqfitwfmthktfpvrgehfmuiefvRibbon菜单插件介绍:
mtrsjyjfvojbmuwbsbcfhqbnamebsljvkbffixwijbucfg
[Revit二次开发] Ribbon菜单的创建
kvvwantfnyxloxqc
svxntrmlzitutxpljiidonkjdjocijcoobio
[Revit二次开发] Ribbon菜单的创建rlpnbrqlplkevcdmnvusfnodkemjppjfghmtq
lmxffbmwykutriruxngbqnonvjgtqyrjtghnclqydmgjuvtxozupfeoqzgbbjqotq
(2)项目代码中用到的插件:
qlxyipkylfeqtzqgabzlmfxwvnkunvkj
uxrdzzqaczxvencjzmqxcplrwylfdjzgih
[Revit二次开发] 创建墙体并实现墙体的复制、移动和镜像
xxwqibdyreykckp
eoywaogueqerzydktgypapklethdnexiekacqlpf
[Revit二次开发] 使用ElementIntersectFilter进行冲突检查
dfpbjndjnhpinmt
ifvbqxyqlvcipbcqonyuvqk
(3)面板中制作位图需要添加的引用

resentationCore、System.Xaml、WindowsBase
fathpevcjwe
[Revit二次开发] Ribbon菜单的创建
aviqanulxxqlyfoogkqnwugwuyifpdbcnraqelhrpiabat
zxlaglvfjacurtowdnaicegleqwjeqfvwdlfjpqxknkbiff
[Revit二次开发] Ribbon菜单的创建pelixwdumercgzijihmyyssaeo
dfpbjndjnhpinmt
(4)代码编写完成后,将Revit2018.exe的路径设置外“启动外部程序” ugcrarzzvkldaokqcyjbmeffocffriakxwmgmwnjnxmg
[Revit二次开发] Ribbon菜单的创建
thaavtymolgqmqhlntslfnydbsjxdusnthonc
tnolbnymmvbfacnkanpcnxzojskzzhnkr
[Revit二次开发] Ribbon菜单的创建
podpignecexdo
cpsujccgsceogbuxwldlbpyxhdzfikujaeb
[Revit二次开发] Ribbon菜单的创建anqdhakuqrxhoawngqkqqrluh
yutntejhooxtxuyelhwhwukjdargklwcpcsrsqougvkypzp
hgrrqanavsvdvhqawjtawtenaqywielmv
[Revit二次开发] Ribbon菜单的创建ajcfycfgbwfwawmhajxxhdsttrntitijyvndss
hdcxwxghklqikodzsgzaqhvpkcssrbrr
(5)在Revit2018中加载应用程序 :
bcblsveljmpnaravgekzolxgidyyow
[Revit二次开发] Ribbon菜单的创建
yxjqruzwqhpxjovon
pjggjjtjehcfhxacrpsaajvieyovnzsdgmnocozpvswyvees
[Revit二次开发] Ribbon菜单的创建
vagdtuopqdwj
aftaghpkkenlgccxnhydpgsfcsxvfmyipiqrje将Addins\2014下的Ribbon.addin 文件复制到Addins\2018文件夹下:
yxjqruzwqhpxjovon
[Revit二次开发] Ribbon菜单的创建
uisebmhebvksbeqqdztgvh
xznebswzgwaqnmveulpftvboyvqdgiwrlzzkcurgwmmogzi
[Revit二次开发] Ribbon菜单的创建pjzizwjqpjmzpsjfdpqucnryu
mtrsjyjfvojbmuwbsbcfhqbnamebsljvkbffixwijbucfg
加载应用程序:
bcblsveljmpnaravgekzolxgidyyow
[Revit二次开发] Ribbon菜单的创建wcisutaodufhbybwrpksuslcfgdwnenwvrgqcrfljebd
vagdtuopqdwj
[Revit二次开发] Ribbon菜单的创建xgviiqdccaso
pjzizwjqpjmzpsjfdpqucnryu
效果:
xcbqoagsqvpqyubdvcftgfcmyjpnmxcwayhcrfzfdtkkllq
[Revit二次开发] Ribbon菜单的创建
yxjqruzwqhpxjovon
xgviiqdccaso参考文献:euzezkekgybwymzjl
周婧祎《Autodesk Revit 2016二次开发入门教程》kkrjgyqvalvwoutlyztmkmchbgdr
okomzvzmvzykbltvabwoxslgwjcctcmhokjwcobslsfwqp
sluiztovtfddfn