using Autodesk.Revit.DB; using Autodesk.Revit.DB.Plumbing; using Autodesk.Revit.UI; using HStation.RevitDev.Model.Enum; using HStation.RevitDev.RevitDataExport.Common; using System; using System.Collections.Generic; using System.IO; using System.Linq; namespace HStation.RevitDev.RevitDataExport.Utility { public class RevitUtil { public static List FindPipeTypes(Document doc) { FilteredElementCollector collector = new FilteredElementCollector(doc); var pipeTypes = collector.OfClass(typeof(PipeType)).ToElements().Cast().ToList(); return pipeTypes; } public static void CleanPipeThumbnails() { try { var pipeDir = Path.Combine(GlobalResource.FamilysDirectory, RevitFamilyType.RFT_Pipe.GetDescription()); if (!Directory.Exists(pipeDir)) { return; } var pngFiles = Directory.GetFiles(pipeDir, "*.png", SearchOption.TopDirectoryOnly); foreach (var pngFile in pngFiles) { File.Delete(pngFile); } } catch (Exception ex) { TaskDialog.Show("警告", $"管道缓存清理失败:{ex.Message}"); } } public static void SavePipeThumbnails(List pipeTypes) { var pipeDir = Path.Combine(GlobalResource.FamilysDirectory, RevitFamilyType.RFT_Pipe.GetDescription()); for (int i = 0; i < pipeTypes.Count; i++) { var pipeType = pipeTypes[i]; var pipeImg = pipeType.GetPreviewImage(new System.Drawing.Size(GlobalResource.ThumbnailSize, GlobalResource.ThumbnailSize)); pipeImg.Save(Path.Combine(pipeDir, $"{pipeType.Name}.png")); } } } }