我正在尝试使用 Revit API 获取墙布鲁托区域。然而,我唯一得到的是 netto 区域。
我正在使用删除墙并还原更改以确定放置在墙上的所有元素的方法。然后,我从 ElementSet 中删除墙的 id,在变量中获取 HOST_AREA_COMPUTED 的值并再次恢复更改。然而,结果是墙网区域:(参数或墙是否需要重新加载?或者可能有更简单的方法来获取 brutto 区域?任何帮助将不胜感激,因为我找不到与该问题相关的任何内容。 提前致谢!
foreach (Wall wallElem in elems)
{
try
{
Double brutto = 0.0;
ICollection<ElementId> delIds = null;
using (SubTransaction t = new SubTransaction(doc))
{
try
{
t.Start();
delIds = doc.Delete(wallElem);
t.RollBack();
}
catch (Exception ex)
{
message = "Deletion failed: " + ex.Message;
t.RollBack();
}
}
using (SubTransaction u = new SubTransaction(doc))
{
try
{
u.Start();
delIds.Remove(wallElem.Id);
doc.Delete(delIds);
brutto = wallElem.get_Parameter(BuiltInParameter.HOST_AREA_COMPUTED).AsDouble();
u.RollBack();
}
catch (Exception ex)
{
message = "Deletion failed: " + ex.Message;
u.RollBack();
}
}
wallElem.get_Parameter("Wall Area Bruto").Set(brutto);
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}