版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Revit在橋梁中的應用二次開發(fā)篇(1)——族建模篇簡單講了怎么在revit軟件中手動建橋梁模型,更多的基礎操作的內容可以直接看revit在建筑中應用的相關教程,其實也是相通的,沒必要多講。這次誠意滿滿,花了兩天時間專門研究二次開發(fā)中族的應用。以下代碼親測可試,結合《AUTODESKREVIT二次開發(fā)基礎教程》可以獲得更好的效果。因為書本上都是一些代碼片段,而且是基于2015版的,在2016版的revit上部分代碼跑不了。我也嘗試了很久,終于基本上搞通了族相關的語法?;A知識直接看書,這里直接上代碼。書里的代碼片段可以想辦法插到完整代碼中運行。1、找到族實例
//用id找到族實例2、拿到族文檔//拿到族文檔
DocumentfamilyDoc=revitDoc.EditFamily(familyInstance.Symbol.Family);
if(!familyDoc.IsFamilyDocument)
{
TaskDialog.Show("錯誤3","familyDoc不是族文檔!");
}
else
{
TaskDialog.Show("revit","familyDoc是族文檔!");
}3、修改族類型名稱(完整代碼)usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingAutodesk.Revit.UI;usingAutodesk.Revit.DB;usingAutodesk.Revit.UI.Selection;usingAutodesk.Revit.ApplicationServices;namespace修改族類型名稱{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Journaling(Autodesk.Revit.Attributes.JournalingMode.NoCommandData)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
publicclassClass1:IExternalCommand
{
publicResultExecute(ExternalCommandDatacommandData,refstringmessage,ElementSetelements)
{
DocumentrevitDoc=commandData.Application.ActiveUIDocument.Document;
//取得文檔
ApplicationrevitApp=commandData.Application.Application;
//取得應用程序
Selectionsel=commandData.Application.ActiveUIDocument.Selection;
Referenceref1=sel.PickObject(ObjectType.Element,"選擇一個族實例");
//得到當前選擇的文檔
Documentdoc=commandData.Application.ActiveUIDocument.Document;
//族實例
FamilyInstancefamilyIns=doc.GetElement(ref1)asFamilyInstance;
FamilySymbolsymbol=familyIns.Symbol;
Transactiontransaction=newTransaction(doc);
//打開關閉子程序
transaction.Start("改變族類型名稱");
symbol.Name="new"+symbol.Name;
transaction.Commit();
returnResult.Succeeded;
}
}}4、刪除一個族參數
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Journaling(Autodesk.Revit.Attributes.JournalingMode.NoCommandData)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
publicclassClass1:IExternalCommand
{
publicResultExecute(ExternalCommandDatacommandData,refstringmessage,ElementSetelements)
{
DocumentrevitDoc=commandData.Application.ActiveUIDocument.Document;
//取得文檔
ApplicationrevitApp=commandData.Application.Application;
//取得應用程序
//選擇一個族實例
Selectionsel=commandData.Application.ActiveUIDocument.Selection;
Referenceref1=sel.PickObject(ObjectType.Element,"選擇一個族實例");
FamilyInstancefamilyIns=revitDoc.GetElement(ref1)asFamilyInstance;
FamilySymbolsymbol=familyIns.Symbol;
//得到族文檔
DocumentfamilyDoc=revitDoc.EditFamily(symbol.Family);
//取得FamilyManager,注意這里只能從族文檔中取得FamilyManager,然后修改參數
FamilyManagerfamilyManager=familyDoc.FamilyManager;
IList<FamilyParameter>faparms=familyManager.GetParameters();
TaskDialog.Show("FamilyParameter",faparms.First().Definition.Name);
Transactiontrans=newTransaction(familyDoc,"RemoveParameter");
trans.Start();
familyManager.RemoveParameter(faparms.First());
trans.Commit();
familyDoc.LoadFamily(revitDoc,newOpt());
returnResult.Succeeded;
}
}}//族載入時覆蓋并修改族參數
publicclassOpt:IFamilyLoadOptions
{
publicboolOnFamilyFound(boolfamilyInUse,outbooloverwriteParameterValues)
{
overwriteParameterValues=true;
returntrue;
}
publicboolOnSharedFamilyFound(FamilysharedFamily,boolfamilyInUse,outFamilySourcesource,outbooloverwriteParameterValues)
{
source=FamilySource.Project;
overwriteParameterValues=true;
returntrue;
}
}4、遍歷族參數usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingAutodesk.Revit.UI;usingAutodesk.Revit.DB;usingAutodesk.Revit.UI.Selection;usingAutodesk.Revit.ApplicationServices;namespace遍歷族參數{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Journaling(Autodesk.Revit.Attributes.JournalingMode.NoCommandData)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
publicclassClass1:IExternalCommand
{
publicResultExecute(ExternalCommandDatacommandData,refstringmessage,ElementSetelements)
{
DocumentrevitDoc=commandData.Application.ActiveUIDocument.Document;
//取得文檔
UIApplicationuiApp=commandData.Application;
ApplicationrevitApp=commandData.Application.Application;
//取得應用程序
//取得選擇的元素
Selectionsel=uiApp.ActiveUIDocument.Selection;
Referenceref1=sel.PickObject(ObjectType.Element,"pleasepickafamilyinstance");
Documentdoc=uiApp.ActiveUIDocument.Document;
Elementelem=doc.GetElement(ref1);
//遍歷元素的參數
stringstrParamInfo=null;
foreach(Parameterparaminelem.Parameters)
{
if(param.AsValueString()!=null)
strParamInfo+=param.Definition.Name+"valueis:"+param.AsValueString()+"\n";
else
strParamInfo+=param.Definition.Name+"valueis:"+param.AsString()+"\n";
}
TaskDialog.Show("REVIT",strParamInfo);
returnResult.Succeeded;
}
}}5、獲得指定族參數并修改參數,這里以窗戶的底高度為例。這里用兩種方法找到指定參數,尤其是用名稱找到指定參數尤其要注意,舊版本的get_Parameter()已經不能用了usingSystem.Text;usingSystem.Threading.Tasks;usingAutodesk.Revit.UI;usingAutodesk.Revit.DB;usingAutodesk.Revit.UI.Selection;usingAutodesk.Revit.ApplicationServices;namespace獲得指定參數并修改參數{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Journaling(Autodesk.Revit.Attributes.JournalingMode.NoCommandData)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
publicclassClass1:IExternalCommand
{
publicResultExecute(ExternalCommandDatacommandData,refstringmessage,ElementSetelements)
{
DocumentrevitDoc=commandData.Application.ActiveUIDocument.Document;
//取得文檔
UIApplicationuiApp=commandData.Application;
ApplicationrevitApp=commandData.Application.Application;
//取得應用程序
//取得選擇的元素
Selectionsel=uiApp.ActiveUIDocument.Selection;
Referenceref1=sel.PickObject(ObjectType.Element,"選擇一個窗族");
Elementelem=revitDoc.GetElement(ref1);
//獲得族實例
FamilyInstancefamilyInstance=elemasFamilyInstance;
//遍歷元素的參數
stringstrParamInfo=null;
////方法一:使用parameterId來找到參數
//Parameterparam=familyInstance.get_Parameter(BuiltInParameter.INSTANCE_SILL_HEIGHT_PARAM);
//strParamInfo+=param.Definition.Name+"valueis:"+param.AsValueString()+"\n";
//方法二:使用名稱來找到參數,因為revit2016為了避免得到重復的名字,只能用GetParameters得到一個集合,如果你只用唯一的名字,那只用取list[0]就可以了
IList<Parameter>list=familyInstance.GetParameters("底高度");
Parameterparam=list[0];
strParamInfo+=param.Definition.Name+"valueis:"+param.AsValueString()+"\n";
//方法三:見下圖
//修改參數的值
Transactiontransaction=newTransaction(revitDoc);
//打開子程序,修改參數,然后關閉子程序
transaction.Start("改變族類型名稱");
param.Set(10);
//注意,這里單位是英寸,10英寸等于3048mm
transsactioon.Commiit();
TaskDDialogg.Show("REVIIT",strPaaramInnfo);
returrnResullt.Succeeeded;;
}
}}//接以上方法三三:6、毫米轉到英寸寸7、幾個有用的關關于reviit二次開發(fā)發(fā)族的相關鏈鏈接a、HYPERLINK"/d_0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年影視作品攝制合同協議書(含分成模式)
- 專業(yè)律師轉租合同
- 2024年度智能物流系統(tǒng)設計與實施合同
- 2024施工合同司法解釋
- 2024辦公樓零星維修項目建設項目施工合同
- 農村合作信用社貸款合同
- 2024沒有借條、合同的借貸關系案例
- 工程承包合同模板簡化版
- 校園學生安全保障協議書樣本
- 超值供貨合同模板匯編
- 二年級排球教案
- 天津市和平區(qū)2024-2025學年九年級上學期期中考試英語試題
- 2024版抗菌藥物DDD值速查表
- 2024二十屆三中全會知識競賽題庫及答案
- 預防接種工作規(guī)范(2023年版)解讀課件
- 醫(yī)院檢驗外包服務項目招標文件
- 檔案整理及數字化服務方案
- 正高級會計師答辯面試資料
- 道路橋涵工程施工方案(完整版)
- 光伏冬季施工方案(1)(完整版)
- 60萬噸MTO裝置中交發(fā)言稿
評論
0/150
提交評論