revit 2011之後取消了選單和工具條,全部使用ribbon即按鈕組,如圖
步驟一:
新建類庫專案ribbon
修改命名空間為hy
修改class1.cs為ribbon.cs用來控制按鈕顯示
新增乙個類addincommand.cs用來響應命令
步驟二:
引入類庫
revitapi.dll
revitapiui.dll
system.windows.forms;
presentationcore
windowbase
ribbon.cs
using
system;
using
system.collections.generic;
using
system.linq;
using
system.text;
using
system.io;
using
system.windows.forms;
using
system.windows.media.imaging;
using
autodesk.revit.ui;
using
autodesk.revit.attributes;
namespace
hycatch
(exception ex)
}public
return
autodesk.revit.ui.result.succeeded;
}#endregion
private
void
//ribbonpanel顯示乙個大按鈕,圖示為第乙個按鈕的圖示
string
firstpanelname ="
ribbon 例項";
//面板底部文字提示
ribbonpanel ribbonsamplepanel
=#region
建立牆和結構牆
//ribbonpanel(面板)->splitbutton(按鈕組)->pushbutton(按鈕)
splitbuttondata splitbuttondata
=new
splitbuttondata(
"newwallsplit",
"建立牆");
//按鈕資料,按鈕組顯示的文字為第乙個按鈕的文字
splitbutton splitbutton
=ribbonsamplepanel.additem(splitbuttondata)
assplitbutton;
//新增到面板
//pushbutton pushbutton = splitbutton.addpushbutton(new pushbuttondata("wallpush", "普通牆", addinpath, "revit.sdk.samples.ribbon.cs.createwall"));
//最後乙個引數是執行按鈕事件的響應類名
pushbuttondata pushbuttondatawall
=new
pushbuttondata(
"wallpush",
"普通牆
", addinpath,
"hy.createwall");
pushbutton pushbutton
=splitbutton.addpushbutton(pushbuttondatawall);
//大圖示,小圖示
pushbutton.largeimage
=new
bitmapimage(
newuri(path.combine(buttoniconsfolder,
"createwall.png
"), urikind.absolute));
pushbutton.image
=new
bitmapimage(
newuri(path.combine(buttoniconsfolder,
"createwall-s.png
"), urikind.absolute));
//提示文字,提示
pushbutton.tooltip ="
creates a partition wall in the building model.";
pushbutton.tooltipimage
=new
bitmapimage(
newuri(path.combine(buttoniconsfolder,
"createwalltooltip.bmp
"), urikind.absolute));
//按鈕組裡第二個按鈕
pushbutton
=splitbutton.addpushbutton(
newpushbuttondata(
"strwallpush",
"結構牆
", addinpath,
"hy.createstructurewall
"));
pushbutton.largeimage
=new
bitmapimage(
newuri(path.combine(buttoniconsfolder,
"strcturalwall.png
"), urikind.absolute));
pushbutton.image
=new
bitmapimage(
newuri(path.combine(buttoniconsfolder,
"strcturalwall-s.png
"), urikind.absolute));
#endregion
ribbonsamplepanel.addseparator();}}
}addincommand.cs
using
system;
using
system.collections.generic;
using
system.linq;
using
system.text;
using
system.windows.forms;
using
autodesk.revit.ui;
using
autodesk.revit.db;
using
autodesk.revit.attributes;
namespacehy}
[transaction(transactionmode.automatic)]
[regeneration(regenerationoption.manual)]
public
class
createstructurewall : createwall
}ribbon.addin
xml version="1.0" encoding="utf-8"
?>
<
revitaddins
>
<
addin
type
>
<
name
>
external tool
name
>
<
assembly
>
f:\ribbon\ribbon\bin\debug\ribbon.dll
assembly
>
<
clientid
>
cb5c768a-dc2f-4289-a803-58ee5afc5708
clientid
>
<
fullclassname
>
hy.ribbon
fullclassname
>
addin
>
revitaddins
>
參考上篇:
原始碼:
Revit二次開發 初學
前言 由於工作需要,近期開始學習revit二次開發知識。學習的同時將學習過程與小夥伴們一起分享,希望後來的小夥伴在看到我的學習筆記的時候有所幫助。說明由於revit的版本在不斷更新中,所以我在學習revit的時候選擇了從revit自帶的幫助檔案開始學習,不同版本的revit,就看相應的help檔案。...
revit二次開發之單位轉換
revit內部基本單位是英呎,如果要獲取或設定構件引數數值需要進行單位轉換,比如轉換為基本的公釐或公尺等單位 1.可以使用常規方式進行轉換 1英呎等於0.3047999995367公尺,等於304.7999995367公釐 2.可以使用revitapi內建的轉換函式進行目標單位的轉換 使用unitu...
Revit二次開發之單位轉換
revit內部基本單位是英呎,如果要獲取或設定構件引數數值需要進行單位轉換,比如轉換為基本的公釐或公尺等單位 1.可以使用常規方式進行轉換 1英呎等於0.3047999995367公尺,等於304.7999995367公釐 2.可以使用revitapi內建的轉換函式進行目標單位的轉換 使用unitu...