protected override void TrySolveInstance(IGH_DataAccess DA) { DB.Element element = null; if (!DA.GetData("Element", ref element)) { return; } DA.SetDataList("Materials", element?.GetMaterialIds(false).Select(x => element.Document.GetElement(x))); DA.SetDataList("Paint", element?.GetMaterialIds(true).Select(x => element.Document.GetElement(x))); }
private static HashSet <ElementId> GetUsedMaterialIds(Autodesk.Revit.DB.Element type) { HostObjAttributes hostObj = type as HostObjAttributes; HashSet <ElementId> usedMaterialIds = new HashSet <ElementId>(); if (hostObj != null) { var compundStructure = hostObj.GetCompoundStructure(); if (compundStructure != null) { int layerCount = compundStructure.LayerCount; for (int j = 0; j < layerCount; j++) { usedMaterialIds.Add(compundStructure.GetMaterialId(j)); } } } List <ElementId> elementMaterialIds = type.GetMaterialIds(false).ToList(); if (elementMaterialIds.Any()) { usedMaterialIds.UnionWith(elementMaterialIds); } return(usedMaterialIds); }