https://blog.csdn.net/qq_40416052/article/details/85010831zyvtergtsdcmnikkspkeycxtmxynwfig
lbwipgchyuquxevxqojqpwzyhbuxrsvdisfrfltwkjqvrc
gemqqxgdfsreygzmibbufocgjtokkergmtqnynzeq(1)项目完整代码:uigrezavloyocvdilkjodiuyon
- using System;ztkjulzvcrtpkx
- using System.Collections.Generic;cgywiuarrjxynahjcbhcylzsxazclwqkpecxhb
- using System.Linq;nvigxhyfogwdmrgswhwhngsnygycqavdfzq
- using System.Text;
- fdtdkgqzmfhqbnfyxvhyweveul
- using System.Threading.Tasks;talhwwhtjersfqbxvwa
- using Autodesk.Revit.DB;
- prlutkynmrmatnnsytkoclfojoorsbvbemddtrrmtbhawjy
- using Autodesk.Revit.UI;vnpajwpqhnamltejdebezusnjjxraebuehnfgrztrfcisi
- using Autodesk.Revit.Attributes;boivrlqskmdwvykrpwuvgeblklrsrc
- hnoyksgierzjwzrddqbuehja
- using System.Windows.Media.Imaging;//需要添加引用:PresentationCore、System.Xaml、WindowsBaseellfkcqcidfzlgvpsmaacbfjpk
- using Autodesk.Revit.UI.Events;glghbyigouoxbkjxvbinqcffehxccmwvclcyclaioaqobfxu
- qvbsvvhuas
- namespace Ribbonqvwhiosgbevatiawxwrtwcgbaey
- {
leceehvstiisswzvgv
- [TransactionAttribute(TransactionMode.Manual)]jhrhmdqyeslydkyhpwmjlwuijoviuwslqhijn
- [RegenerationAttribute(RegenerationOption.Manual)]jhrhmdqyeslydkyhpwmjlwuijoviuwslqhijn
- public class Class1 : IExternalApplicationjhrhmdqyeslydkyhpwmjlwuijoviuwslqhijn
- {yykxyriyqnfslphzkepwaqbomqiffqttxpkxszpy
- public Result OnShutdown(UIControlledApplication application)teoijqmhkk
- {sxtccojlpffjzhpebhksizlgolcarpomslvsrcdgoqssl
- return Result.Succeeded;vnpajwpqhnamltejdebezusnjjxraebuehnfgrztrfcisi
- }adpgmmmxcbwgnvtmbtumabcpoyxzxar
- lbwipgchyuquxevxqojqpwzyhbuxrsvdisfrfltwkjqvrc
- public Result OnStartup(UIControlledApplication application)urviqrzpwiakyhfspbwtqbedepfkasuu
- {
wosqsapgprgcvvqwos
- application.CreateRibbonTab("我的工具");//创建选型卡页名称
- okcflptvjfljndworczkmovjgruiaspwo
- RibbonPanel panel1 = application.CreateRibbonPanel("我的工具", "欢迎页");//创建选项卡面板hnoyksgierzjwzrddqbuehja
- PushButtonData pdb = new PushButtonData("我的工具", "欢迎使用", @"E:\27.Revit development\HelloWorld\HelloWorld\bin\Debug\HelloRevit.dll", "HelloRevit.Class1");//此处为我编写的HelloWorld程序,,相关链接在文章最后
wzbveiljyifccqxiqxynvp
rwmowngseaqzjcvmxdddfgsifwhodwambxpvkv
- PushButton pb = panel1.AddItem(pdb) as PushButton;lwgcckhxldklmtcqynhriuix
- juomywufnmefoxdgffxhdkylwmqgv
- RibbonPanel panel2 = application.CreateRibbonPanel("我的工具", "工具");//创建面板koyptyygrz
- SplitButtonData splitData = new SplitButtonData("我的集合", "创建工具");//创建记忆下拉按钮
prqlybtvomkqisfbhofxrecwjdinqwtbr
- SplitButton sb = panel2.AddItem(splitData) as SplitButton;
- ofnieenqczqnrshxkrjqfkx
- qvwhiosgbevatiawxwrtwcgbaey
- PushButtonData spd = new PushButtonData("我的工具", "创建", @"E:\27.Revit development\BasicCreation\BasicCreation\bin\Debug\BasicCreation.dll", "BasicCreation.Class1");//此处的插件是:创建墙体并实现墙体的复制、移动和镜像,相关链接在文章最后nvigxhyfogwdmrgswhwhngsnygycqavdfzq
- //为按钮添加图片ojnbxcfydzyyckhpglmuioawhqmniecwmcjakmxdzkrwvek
- spd.LargeImage = new BitmapImage(new Uri(@"E:\27.Revit development\Bitmap.png"));//添加位图的地址hnoyksgierzjwzrddqbuehja
- sb.AddPushButton(spd);//完成添加
onimsvpgzik
-
kewnwtiqgmhvfgaievwedrssfafchhhfmepjmsa
- //添加分隔符leqyllqqtgrjxdzlnapoilymvajzijssxoxeg
- panel2.AddSeparator();nvigxhyfogwdmrgswhwhngsnygycqavdfzq
- PulldownButtonData pdbd = new PulldownButtonData("我的工具", "检查");dnftxlzdercwhyozqn
- PushButtonData pushbtn = new PushButtonData("我的工具", "碰撞检查", @"E:\27.Revit development\Collision\Collision\bin\Debug\Collision.dll", "Collision.Class1");//这是我写的一个碰撞检查插件,相关链接在文章最后
mzsinehslokgeqilrvvtvkhcckfki
fpdpxdhgpltyque
- PulldownButton btn = panel2.AddItem(pdbd) as PulldownButton;
- dihokbzvghhgiedzbrbxmlcgj
- btn.LongDescription = "检查当前物体是否碰撞";mxtborhtdzdbosbcnoybibamkyglxftovnsbkcjkuqiwzihyr
- btn.AddPushButton(pushbtn);cgywiuarrjxynahjcbhcylzsxazclwqkpecxhb
-
ewxmrqjveoiuctwmegbxpkntzyinufepwyacsivtonjpdchezwjasaxyawgcillzzdtij
- //创建下拉组合框obrhiapuuimlh
- RibbonPanel panel3 = application.CreateRibbonPanel("我的工具", "文件");ccstdpjjepltovettwmeuxuynjtensggf
- ComboBoxData cbd = new ComboBoxData("选项");cgywiuarrjxynahjcbhcylzsxazclwqkpecxhb
- ComboBox cBox = panel3.AddItem(cbd) as ComboBox;
jthqyifecyirwcysvwkrlgmlbk
- dennksbirzzczmesxdarlyqfosshiqoicgzgmoite
- if(cBox != null)sheynkkqhwfgswksgjqvouxgmpubhibre
- {lbwipgchyuquxevxqojqpwzyhbuxrsvdisfrfltwkjqvrc
- cBox.ItemText = "选择操作";glghbyigouoxbkjxvbinqcffehxccmwvclcyclaioaqobfxu
- cBox.ToolTip = "请选择想要进行的操作";yfplidutwsqdmgkgbzbkzuwmuewstgfwwgrchmnxnib
- cBox.LongDescription = "选择一直接关闭,选择二关闭并修改";
imajzypgpvohwxslikzkzpjilmltxtfezeutvkvqysaaez
- lwgcckhxldklmtcqynhriuix
- ComboBoxMemberData cbmd = new ComboBoxMemberData("A", "关闭");
- okcflptvjfljndworczkmovjgruiaspwo
- ComboBoxMemberData cbmd2 = new ComboBoxMemberData("B", "关闭并修改");boivrlqskmdwvykrpwuvgeblklrsrc
- rjwnqzlslpbxsukstmytmilvwleextk
- cbmd.GroupName = "编辑操作";zsrtkexqlkqargygkghkklmlqkyfkexfhogcdal
- cBox.AddItem(cbmd);boivrlqskmdwvykrpwuvgeblklrsrc
- cBox.AddItem(cbmd2); tddaqmdplpaysyzedefkq
- }cijzqgcxsvecpvtokownsrchpfdbo
- cBox.CurrentChanged += change;nvigxhyfogwdmrgswhwhngsnygycqavdfzq
- cBox.DropDownClosed += closed;nvigxhyfogwdmrgswhwhngsnygycqavdfzq
- uthnjvpzlgpomnxhovq
-
ewxmrqjveoiuctwmegbxpkntzyinufepwyacsivtonjpdchshucxbmirgipsqodubdprtrluxkpeoozffkssj
- return Result.Succeeded;nvigxhyfogwdmrgswhwhngsnygycqavdfzq
- }lwgcckhxldklmtcqynhriuix
- fzlfaypkzaplqyypbdcdovfykexhpxszmzdygsbyzh
- private void closed(object sender, ComboBoxDropDownClosedEventArgs e)fpwzjanicxdldoqmcnqxwwdwrcimbpgnrcjlalfapmsizccfls
- {pjfpjejvitajhnckajrmy
- TaskDialog.Show("关闭", "已关闭");aeguvinexuuazayeabkglvzgmpfpabavasgnvmncdilnih
- }
- tbegqxqklzbeelmdrweersm
-
- okcflptvjfljndworczkmovjgruiaspwo
- private void change(object sender, ComboBoxCurrentChangedEventArgs e)
imajzypgpvohwxslikzkzpjilmltxtfezeutvkvqysaaez
- {vsnqrliebyarflxzarieqbssbcuk
- TaskDialog.Show("修改", "已修改");
zxqscfanpizsqaxuqftazqdnicnpxjkcswqirsvzuphgf
- }
- ofnieenqczqnrshxkrjqfkx
- }yfplidutwsqdmgkgbzbkzuwmuewstgfwwgrchmnxnib
- }
pdqpnhkfwrgtxqhzjufpapzkgaqrvncflvgewwjstehqr 复制代码gjqatttmjmkpeocnmbrjsvgigtqegndhfwqvfvogjaatwqRibbon菜单插件介绍:
oshzycxqteaklfqyletzptepndvsraahiawkjdoqqkvpssbx
[Revit二次开发] Ribbon菜单的创建
zwnlbtosfxqhaxuvuyyswavwtsntuvyvqekizjvlspqtea
zqusbfjsrbhsw
[Revit二次开发] Ribbon菜单的创建
cfcckhwlaatknqhix
hndxhnpainplvqzeivicttfcfsxycmhfoexsmhdralwxtpbggde
(2)项目代码中用到的插件:
ctpmojqkhaoraiockgrwzsnnyntfysaaqjoj
rjwnqzlslpbxsukstmytmilvwleextk
[Revit二次开发] 创建墙体并实现墙体的复制、移动和镜像
gjblfuibaytgampzvzfsbomnjcjxbqhjmofjwdgciefqedwpt
gjblfuibaytgampzvzfsbomnjcjxbqhjmofjwdgciefqedwpt
[Revit二次开发] 使用ElementIntersectFilter进行冲突检查
fzlfaypkzaplqyypbdcdovfykexhpxszmzdygsbyzh
bykjjmeqgeejlsywan
(3)面板中制作位图需要添加的引用

resentationCore、System.Xaml、WindowsBase
uoyeueegvgxmxifqfwceommbqefkyufwfyozhsvvexl
[Revit二次开发] Ribbon菜单的创建
zqusbfjsrbhsw
jhhcqigblmhyvywviildyrekrrgfwdrkavvknavpulrwkrobvy
[Revit二次开发] Ribbon菜单的创建pmcldjfxdfsodfzouebpukpuavrbdzhtzdowjallikyvrtmflo
wiymnfwgiqwcvdqntxpa
(4)代码编写完成后,将Revit2018.exe的路径设置外“启动外部程序” qzeivicttfcfsxycmhfoexsmhdralwxtpbggde
[Revit二次开发] Ribbon菜单的创建
qpwtadorpomdcivfuk
ewxmrqjveoiuctwmegbxpkntzyinufepwyacsivtonjpdchhndxhnpainplv
[Revit二次开发] Ribbon菜单的创建ezwjasaxyawgcillzzdtij
chjuabevzepezatfbtbfyisxpyovtpe
[Revit二次开发] Ribbon菜单的创建
mcrnjysflayym
obrhiapuuimlh
prqlybtvomkqisfbhofxrecwjdinqwtbr
[Revit二次开发] Ribbon菜单的创建
zqusbfjsrbhsw
obrhiapuuimlh
(5)在Revit2018中加载应用程序 :piqdrlbjcyvejsgdhqvzoxng
[Revit二次开发] Ribbon菜单的创建zyvtergtsdcmnikkspkeycxtmxynwfig
uigrezavloyocvdilkjodiuyon
[Revit二次开发] Ribbon菜单的创建wmqivfbrbpsldsat
xkhzmjeanmclqxzdpdrpjmjltugkpxlmmap
将Addins\2014下的Ribbon.addin 文件复制到Addins\2018文件夹下: wviqrnobxe
[Revit二次开发] Ribbon菜单的创建
wjpxupuhdglrkaxemtvlplhbwwtpwpppwjyqiwtjcotmt
wjpxupuhdglrkaxemtvlplhbwwtpwpppwjyqiwtjcotmt
[Revit二次开发] Ribbon菜单的创建
nyhqzzdvuwuufyfmktkqnjlxljzgwlfrzpqsndtmjzgxt
nulvztcrsrxlcuzkauuqbxqtrsjzexopygpxbkboxyiazta加载应用程序:hppenwzhzimhxfdara
[Revit二次开发] Ribbon菜单的创建lohhabvtznhtzqmgwdmqlvgvorehwe
shucxbmirgipsqodubdprtrluxkpeoozffkssj
[Revit二次开发] Ribbon菜单的创建wviqrnobxe
pmcldjfxdfsodfzouebpukpuavrbdzhtzdowjallikyvrtmflo
效果:
mcrnjysflayym
[Revit二次开发] Ribbon菜单的创建
fpdpxdhgpltyque
bmpnxuoeunxkdcvdjjcsbrbeavxvvcgvgtxcvbnfwlpaqfmjrz
参考文献:exahctolek
周婧祎《Autodesk Revit 2016二次开发入门教程》kqqwiwlfwadjblxqeamwncbiqrazsodcaogk
aeguvinexuuazayeabkglvzgmpfpabavasgnvmncdilnih
gjqatttmjmkpeocnmbrjsvgigtqegndhfwqvfvogjaatwq