Revit API:获取和设置材料资产参数

时间:2017-08-15 16:32:45

标签: revit-api

我正在尝试通过RevitAPI访问特定资产所包含的数据。例如,我想操纵身份数据并获得并最终为制造商,模型,成本和URL设置一些数据。 如何才能为其他资产实现同样的目标?

enter image description here

我正在阅读材料:

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

但仍然无法找到这些属性的曝光位置。

2 个答案:

答案 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();
        }
    }