Revit 2011 二次開發之Ribbon

2022-02-12 08:35:08 字數 4165 閱讀 2727

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...