Hi All @c.poupin
I’m confused why I can’t get or create a concrete
material which I’m sure that is not listed in the materials within the document (Note: I’m working in the architecture template and the material I’m looking for is listed in the structure template it’s named Béton - Coulé sur place - Béton20
and it’s Id is 177816
which I need to use it’s StructuralAsset
)
To be sure that the material I’m looking for is not listed within the document I filtered all existing materials, and I obtained those concrete materials:
Maçonnerie - Béton
(Material Name)
853
(Material Id)
Béton
(Material Class)
Béton, coulé sur place
(Material Name)
183853
(Material Id)
Béton
(Material Class)
I’m receiving this error:
Here my code:
import clr
import sys
import System
#import Revit API
clr.AddReference('RevitAPI')
import Autodesk
from Autodesk.Revit.DB import *
import Autodesk.Revit.DB as DB
#import specify namespace
from Autodesk.Revit.DB.Structure import *
#import net library
from System import Array
from System.Collections.Generic import List, IList, Dictionary
clr.AddReference('RevitNodes')
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)
clr.ImportExtensions(Revit.GeometryReferences)
#import transactionManager and DocumentManager (RevitServices is specific to Dynamo)
clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
clr.AddReference("System.Core")
clr.ImportExtensions(System.Linq)
# Filtering All Materials Category
materials = FilteredElementCollector(doc).WherePasses(ElementCategoryFilter(BuiltInCategory.OST_Materials))
t = Transaction(doc, 'Get/create concrete material')
t.Start()
for m in materials:
if m.Name == "Béton - Coulé sur place - Béton20":
mat = m
m_Id = mat.Id
else:
m_Id = Material.Create(doc, "Béton - Coulé sur place - Béton20")
mat = doc.GetElement(m_Id)
t.Commit()
Any help would be appreciated.
Thanks.