2014-07-21 27 views
1

我正在爲Revit 2014編寫一個插件。其功能之一是由用戶放置垂直列。的Revit API允許將家庭情況由用戶與方法PromptForFamilyInstancePlacement,這是我使用的是什麼,就像這樣:Revit API - 提示用戶創建垂直列

//PillarSymbols is a list containing symbols of various columns available, loaded previously from a file 
FamilySymbol symbol = PillarsSymbols.Single(x => x.Kind == selected.Kind).Symbol; 
_commandData.Application.ActiveUIDocument.PromptForFamilyInstancePlacement(symbol); 

這個代碼能夠在Revit應用Modify | Place structural column工具。它可以根據需要工作,但不允許用戶在垂直列和傾斜列之間切換。此選項設置爲在運行上面的代碼之前設置的任何值。

我曾嘗試使用運行PromptForFamilyInstancePlacement之前設置符號參數:

symbol.get_Parameter(BuiltInParameter.SLANTED_COLUMN_TYPE_PARAM).Set(value); 

get_Parameter()以上返回null

在提示用戶放置列之前,是否有方法將列類型設置爲垂直列?還有預先設定柱高的方法嗎?

回答

0

不幸的是,您無法預設列高,但您可以調整之後直接創建的項目的自由端。你應該返回一個FamilyInstance,所以如果你再次抓住它,那麼你可以調整它的自由端。

您可以通過循環瀏覽家族中的符號來提示用戶放置正確的符號。請嘗試下面的代碼片段,並檢查以確保所生成的符號是您在安置之前所需的符號:

FamilySymbol familySymbol = family.Symbols.ForwardIterator().Current as FamilySymbol; 
+0

謝謝@prestonsmith的答案。不幸的是,由於上述插件的具體要求,我不能提示用戶選擇正確的符號,而這些符號現在是不相關的。 我結束了一個解決方法: 1)讓用戶放置在此刻選擇哪種類型的列(垂直/傾斜) 2)讀取用戶放置的列實例的位置和旋轉 3)刪除那些實例 4)將我自己的垂直實例與我想要的高度 –