zhangyk-c
2024-07-16 e239fe58afb2f9637754fc33da7c0ece5d33e7dd
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.DB;
using Autodesk.Revit.DB.Events;
using Autodesk.Revit.DB.Plumbing;
using Autodesk.Revit.UI;
using DevExpress.Utils.Extensions;
using HStation.RevitDev.RevitDataExport.Common;
using System.Linq;
 
namespace HStation.RevitDev.RevitDataExport.Utility
{
    public class DocumentUtil
    {
        public static void RegistDocumentEvent(Application app)
        {
            app.DocumentChanged -= App_DocumentChanged;
            app.DocumentChanged += App_DocumentChanged;
        }
 
        private static void App_DocumentChanged(object sender, DocumentChangedEventArgs e)
        {
            var doc = e.GetDocument();
 
            var addedIds = e.GetAddedElementIds();
            var removeIds = e.GetDeletedElementIds();
            var modifiedIds = e.GetModifiedElementIds();
 
            bool instancePlacing = GlobalResource.InstancePlacing;
            bool pipePlacing = GlobalResource.PipePlacing;
 
            if (pipePlacing || instancePlacing)
            {
                foreach (var id in addedIds)
                {
                    var elem = doc.GetElement(id);
                    if (elem is FamilyInstance fi)
                    {
                        GlobalResource.FamilyInstanceIds.Add(id.IntegerValue.ToString());
                        TaskDialog.Show("提示", "增加族示例:" + id.IntegerValue.ToString());
                    }
                    if (elem is Pipe pipe)
                    {
                        GlobalResource.FamilyInstanceIds.Add(id.IntegerValue.ToString());
                        TaskDialog.Show("提示", "增加管道:" + id.IntegerValue.ToString());
                    }
                }
            }
 
            foreach (var id in removeIds)
            {
                if (GlobalResource.FamilyInstanceIds.Contains(id.IntegerValue.ToString()))
                {
                    GlobalResource.FamilyInstanceIds.Remove(id.IntegerValue.ToString());
                    TaskDialog.Show("提示", "删除元素:" + id.IntegerValue.ToString());
                }
            }
 
            foreach (var id in modifiedIds)
            {
                if (GlobalResource.FamilyInstanceIds.Contains(id.IntegerValue.ToString()))
                {
 
                }
            }
        }
    }
}