我正在尝试通过RevitAPI访问特定资产所包含的数据。例如,我想操纵身份数据并获得并最终为制造商,模型,成本和URL设置一些数据。 如何才能为其他资产实现同样的目标?
我正在阅读材料:
public IEnumerable<Material> GetMaterials(Document doc)
{
collector = new FilteredElementCollector(doc);
return collector.OfClass(typeof(Material)).OfType<Material>();
}
然后是参数:
public IEnumerable<Parameter> GetMaterialParameters(Material material)
{
List<Parameter> parameters = new List<Parameter>();
var localParameters = material.ParametersMap;
foreach (Parameter localParameter in localParameters)
{
parameters.Add(localParameter);
}
return parameters;
}
但仍然无法找到这些属性的曝光位置。
答案 0 :(得分:0)
您真正需要的是Revit 2018.1中引入的Visual Materials API,最新更新:
在早期版本中实现你想要的东西要困难得多,也许是不可能的。
这里有一些或多或少徒劳的尝试:
答案 1 :(得分:0)
最后,这是我设法编辑参数的方法。
private void AssignProductData_OnClick(object sender, RoutedEventArgs e)
{
var material = (MaterialItem)MaterialsCombo.SelectedItem;
using (var transaction = new Transaction(doc))
{
transaction.Start("ChangeName");
var parameterManufacturer = material.Material.get_Parameter(BuiltInParameter.ALL_MODEL_MANUFACTURER);
parameterManufacturer.Set("Brand New Product");
var parameterCost = material.Material.get_Parameter(BuiltInParameter.ALL_MODEL_COST);
parameterCost.Set(1099.99);
var parameterModel = material.Material.get_Parameter(BuiltInParameter.ALL_MODEL_MODEL);
parameterModel.Set("R1223123KJNSDAS9089");
var parameterUrl = material.Material.get_Parameter(BuiltInParameter.ALL_MODEL_URL);
parameterUrl.Set("http://www.site.no/products/R1223123KJNSDAS9089");
transaction.Commit();
}
}