Revit API: получение и установка параметров материальных активов

Я пытаюсь получить доступ через 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;
    }

но все еще не могу найти, где эти свойства выставлены.


person Ivan Stefanov    schedule 15.08.2017    source источник


Ответы (2)


Что вам действительно нужно, так это Visual Materials API, представленный в Revit 2018.1, новейшем обновлении:

Гораздо сложнее и, возможно, невозможно добиться того, чего вы хотите в более ранних версиях.

Вот указатели на некоторые более или менее тщетные попытки:

person Jeremy Tammik    schedule 16.08.2017
comment
Спасибо. Но не могу найти образцы. Есть ли? - person Ivan Stefanov; 16.08.2017

Наконец, вот как мне удалось отредактировать параметры.

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();
        }
    }
person Ivan Stefanov    schedule 16.08.2017