revi在橋梁中的應(yīng)用二次開(kāi)發(fā)-族_第1頁(yè)
revi在橋梁中的應(yīng)用二次開(kāi)發(fā)-族_第2頁(yè)
revi在橋梁中的應(yīng)用二次開(kāi)發(fā)-族_第3頁(yè)
revi在橋梁中的應(yīng)用二次開(kāi)發(fā)-族_第4頁(yè)
revi在橋梁中的應(yīng)用二次開(kāi)發(fā)-族_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Revit在橋梁中的應(yīng)用二次開(kāi)發(fā)篇(1)——族建模篇簡(jiǎn)單講了怎么在revit軟件中手動(dòng)建橋梁模型,更多的基礎(chǔ)操作的內(nèi)容可以直接看revit在建筑中應(yīng)用的相關(guān)教程,其實(shí)也是相通的,沒(méi)必要多講。這次誠(chéng)意滿滿,花了兩天時(shí)間專門(mén)研究二次開(kāi)發(fā)中族的應(yīng)用。以下代碼親測(cè)可試,結(jié)合《AUTODESKREVIT二次開(kāi)發(fā)基礎(chǔ)教程》可以獲得更好的效果。因?yàn)闀?shū)本上都是一些代碼片段,而且是基于2015版的,在2016版的revit上部分代碼跑不了。我也嘗試了很久,終于基本上搞通了族相關(guān)的語(yǔ)法?;A(chǔ)知識(shí)直接看書(shū),這里直接上代碼。書(shū)里的代碼片段可以想辦法插到完整代碼中運(yùn)行。1、找到族實(shí)例

//用id找到族實(shí)例2、拿到族文檔//拿到族文檔

DocumentfamilyDoc=revitDoc.EditFamily(familyInstance.Symbol.Family);

if(!familyDoc.IsFamilyDocument)

{

TaskDialog.Show("錯(cuò)誤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;

//取得應(yīng)用程序

Selectionsel=commandData.Application.ActiveUIDocument.Selection;

Referenceref1=sel.PickObject(ObjectType.Element,"選擇一個(gè)族實(shí)例");

//得到當(dāng)前選擇的文檔

Documentdoc=commandData.Application.ActiveUIDocument.Document;

//族實(shí)例

FamilyInstancefamilyIns=doc.GetElement(ref1)asFamilyInstance;

FamilySymbolsymbol=familyIns.Symbol;

Transactiontransaction=newTransaction(doc);

//打開(kāi)關(guān)閉子程序

transaction.Start("改變族類型名稱");

symbol.Name="new"+symbol.Name;

transaction.Commit();

returnResult.Succeeded;

}

}}4、刪除一個(gè)族參數(shù)

[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;

//取得應(yīng)用程序

//選擇一個(gè)族實(shí)例

Selectionsel=commandData.Application.ActiveUIDocument.Selection;

Referenceref1=sel.PickObject(ObjectType.Element,"選擇一個(gè)族實(shí)例");

FamilyInstancefamilyIns=revitDoc.GetElement(ref1)asFamilyInstance;

FamilySymbolsymbol=familyIns.Symbol;

//得到族文檔

DocumentfamilyDoc=revitDoc.EditFamily(symbol.Family);

//取得FamilyManager,注意這里只能從族文檔中取得FamilyManager,然后修改參數(shù)

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;

}

}}//族載入時(shí)覆蓋并修改族參數(shù)

publicclassOpt:IFamilyLoadOptions

{

publicboolOnFamilyFound(boolfamilyInUse,outbooloverwriteParameterValues)

{

overwriteParameterValues=true;

returntrue;

}

publicboolOnSharedFamilyFound(FamilysharedFamily,boolfamilyInUse,outFamilySourcesource,outbooloverwriteParameterValues)

{

source=FamilySource.Project;

overwriteParameterValues=true;

returntrue;

}

}4、遍歷族參數(shù)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遍歷族參數(shù){

[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;

//取得應(yīng)用程序

//取得選擇的元素

Selectionsel=uiApp.ActiveUIDocument.Selection;

Referenceref1=sel.PickObject(ObjectType.Element,"pleasepickafamilyinstance");

Documentdoc=uiApp.ActiveUIDocument.Document;

Elementelem=doc.GetElement(ref1);

//遍歷元素的參數(shù)

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、獲得指定族參數(shù)并修改參數(shù),這里以窗戶的底高度為例。這里用兩種方法找到指定參數(shù),尤其是用名稱找到指定參數(shù)尤其要注意,舊版本的get_Parameter()已經(jīng)不能用了usingSystem.Text;usingSystem.Threading.Tasks;usingAutodesk.Revit.UI;usingAutodesk.Revit.DB;usingAutodesk.Revit.UI.Selection;usingAutodesk.Revit.ApplicationServices;namespace獲得指定參數(shù)并修改參數(shù){

[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;

//取得應(yīng)用程序

//取得選擇的元素

Selectionsel=uiApp.ActiveUIDocument.Selection;

Referenceref1=sel.PickObject(ObjectType.Element,"選擇一個(gè)窗族");

Elementelem=revitDoc.GetElement(ref1);

//獲得族實(shí)例

FamilyInstancefamilyInstance=elemasFamilyInstance;

//遍歷元素的參數(shù)

stringstrParamInfo=null;

////方法一:使用parameterId來(lái)找到參數(shù)

//Parameterparam=familyInstance.get_Parameter(BuiltInParameter.INSTANCE_SILL_HEIGHT_PARAM);

//strParamInfo+=param.Definition.Name+"valueis:"+param.AsValueString()+"\n";

//方法二:使用名稱來(lái)找到參數(shù),因?yàn)閞evit2016為了避免得到重復(fù)的名字,只能用GetParameters得到一個(gè)集合,如果你只用唯一的名字,那只用取list[0]就可以了

IList<Parameter>list=familyInstance.GetParameters("底高度");

Parameterparam=list[0];

strParamInfo+=param.Definition.Name+"valueis:"+param.AsValueString()+"\n";

//方法三:見(jiàn)下圖

//修改參數(shù)的值

Transactiontransaction=newTransaction(revitDoc);

//打開(kāi)子程序,修改參數(shù),然后關(guān)閉子程序

transaction.Start("改變族類型名稱");

param.Set(10);

//注意,這里單位是英寸,10英寸等于3048mm

transsactioon.Commiit();

TaskDDialogg.Show("REVIIT",strPaaramInnfo);

returrnResullt.Succeeeded;;

}

}}//接以上方法三三:6、毫米轉(zhuǎn)到英寸寸7、幾個(gè)有用的關(guān)關(guān)于reviit二次開(kāi)發(fā)發(fā)族的相關(guān)鏈鏈接a、HYPERLINK"/d_0

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論