2017-08-15 75 views
0

我试图通过RevitAPI访问特定资产所包含的数据。例如,我想操纵身份数据并获取并最终为制造商,模型,成本和URL设置一些数据。 我怎样才能达到相同的其他资产?Revit API:材料资产参数获取并设置

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

,但仍找不到在哪里这些属性暴露。

回答

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