zhangyk-c
2024-07-20 33c800c1bd24faa163bb8dac5fcdd307077478d2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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<PipeType> FindPipeTypes(Document doc)
        {
            FilteredElementCollector collector = new FilteredElementCollector(doc);
            var pipeTypes = collector.OfClass(typeof(PipeType)).ToElements().Cast<PipeType>().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<PipeType> 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"));
            }
        }
    }
}