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)));
        }
示例#2
0
        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);
        }