>ADN: DEVR3894
>ADN service level: Professional
>產品:Revit MEP 2012
>版本:2012
>語言:中文
>操作系統:window7 64bit
>聯系電話:137xxxx1960
>問題標題:關於修改元素參數的問題?
>問題內容:
上次提問,關於遍歷鏈接文檔創建空間的問題。
最終解決辦法是:在鏈接文檔的時候選擇“原點到原點”
失敗的原因就是坐標系沒有對正。
這次的問題如下:
我希望在風管連接彎頭之前,設置好首選的彎頭類型。
1.元素參數如果是int或者double可以直接修改。
如果是ElementId如何知道從哪里得到這些Id
2.如圖所示,編輯風管類型。

如何改變T形三通,接頭,這樣的參數的值。
參考代碼:
[Transaction(TransactionMode.Manual)]
[Regeneration(RegenerationOption.Manual)]
public class cmd : IExternalCommand
{
public Result Execute(ExternalCommandData cmdData, ref string msg, ElementSet elements)
{
UIDocument uiDoc = cmdData.Application.ActiveUIDocument;
UIApplication uiApp = cmdData.Application;
Document doc = uiDoc.Document;
Selection selection = uiDoc.Selection;
Transaction ts = new Transaction(doc, " www ");
ts.Start();
// 找個風管類型
FilteredElementCollector collector = new FilteredElementCollector(doc);
collector.OfClass( typeof(Duct)).OfCategory(BuiltInCategory.OST_DuctCurves);
Duct duct = null;
foreach (Element el in collector)
{
duct = el as Duct;
break;
}
// 找個彎頭類型
FilteredElementCollector collectorFitting = new FilteredElementCollector(doc);
collectorFitting.OfClass( typeof(FamilyInstance)).OfCategory(BuiltInCategory.OST_DuctFitting);
FamilyInstance fitting = null;
foreach (Element el in collectorFitting)
{
fitting = el as FamilyInstance;
break;
}
//
foreach (Parameter p in duct.DuctType.Parameters)
{
if (p.Definition.Name == " 首選連接類型 ")
{
p.Set( 1); // p.StorageType為Intger所以用此法修改
}
if (p.Definition.Name == " 接頭 ")
{
p.Set(fitting.Category.Id); // p.StorageType為ElementId
}
}
ts.Commit();
return Result.Succeeded;
}
}
[Regeneration(RegenerationOption.Manual)]
public class cmd : IExternalCommand
{
public Result Execute(ExternalCommandData cmdData, ref string msg, ElementSet elements)
{
UIDocument uiDoc = cmdData.Application.ActiveUIDocument;
UIApplication uiApp = cmdData.Application;
Document doc = uiDoc.Document;
Selection selection = uiDoc.Selection;
Transaction ts = new Transaction(doc, " www ");
ts.Start();
// 找個風管類型
FilteredElementCollector collector = new FilteredElementCollector(doc);
collector.OfClass( typeof(Duct)).OfCategory(BuiltInCategory.OST_DuctCurves);
Duct duct = null;
foreach (Element el in collector)
{
duct = el as Duct;
break;
}
// 找個彎頭類型
FilteredElementCollector collectorFitting = new FilteredElementCollector(doc);
collectorFitting.OfClass( typeof(FamilyInstance)).OfCategory(BuiltInCategory.OST_DuctFitting);
FamilyInstance fitting = null;
foreach (Element el in collectorFitting)
{
fitting = el as FamilyInstance;
break;
}
//
foreach (Parameter p in duct.DuctType.Parameters)
{
if (p.Definition.Name == " 首選連接類型 ")
{
p.Set( 1); // p.StorageType為Intger所以用此法修改
}
if (p.Definition.Name == " 接頭 ")
{
p.Set(fitting.Category.Id); // p.StorageType為ElementId
}
}
ts.Commit();
return Result.Succeeded;
}
}