chr
2024-08-07 22beee93f14d042aa184148c53efb79e23416526
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
using System.Collections.Specialized;
using System.IO;
using System.Threading;
 
namespace PdmSwPlugin.Common.Entity
{
    /// <summary>
    /// 通过 SolidWorks Document Management API (DM API) 得到的文档属性集合
    /// </summary>
    public class SldComponentInfo_DM
    {
        /// <summary>
        /// 唯一标识
        /// 内部产生,从 1 开始递增
        /// </summary>
        public int Id
        {
            get; set;
        }
 
        /// <summary>
        /// 层级,顶级装配体的层级为 0, 其它的依次为 1, 2, 3, N
        /// </summary>
        public int Level
        {
            get; set;
        }
 
        /// <summary>
        /// 父级的 Id,顶级装配体的父级 Id 为空 (0)
        /// </summary>
        public int ParentId
        {
            get; set;
        }
 
        /// <summary>
        /// 子节点的数量,不包含本节点
        /// </summary>
        public int ChildrenCount
        {
            get; set;
        }
 
        /// <summary>
        /// 全路径
        /// </summary>
        public string FullPath
        {
            get; set;
        }
 
        /// <summary>
        /// 路径
        /// </summary>
        public string DirectoryName
        {
            get
            {
                try
                {
                    return Path.GetDirectoryName(this.FullPath);
                }
                catch
                {
                    return string.Empty;
                }
            }
        }
 
        /// <summary>
        /// 纯文件名,没有后缀的
        /// </summary>
        public string FileNameWithoutExt
        {
            get
            {
                try
                {
                    return Path.GetFileNameWithoutExtension(this.FullPath);
                }
                catch
                {
                    return string.Empty;
                }
            }
        }
 
        /// <summary>
        /// 文件名,有后缀的
        /// </summary>
        public string FileName
        {
            get
            {
                try
                {
                    return Path.GetFileName(this.FullPath);
                }
                catch
                {
                    return string.Empty;
                }
            }
        }
 
        /// <summary>
        /// Tag, 可以不用,或自定义
        /// </summary>
        public string Tag
        {
            get; set;
        }
 
        /// <summary>
        /// 名称,也就是在特征树里显示的名称,与物料编码不一样
        /// </summary>
        public string FeatureName
        {
            get; set;
        }
 
        /// <summary>
        /// 特征的唯一 ID
        /// </summary>
        public int FeatureId
        {
            get; set;
        }
 
        /// <summary>
        /// 压缩状态
        /// </summary>
        public bool IsSuppressed
        {
            get; set;
        }
 
        /// <summary>
        /// 配置数量
        /// </summary>
        public int ConfigurationCount
        {
            get; set;
        }
 
        /// <summary>
        /// 工程图名称
        /// </summary>
        public string FileName2D
        {
            get; set;
        }
 
        /// <summary>
        /// 可见的吗?
        /// </summary>
        public bool Visible
        {
            get; set;
        }
 
        /// <summary>
        /// 所有的自定义属性
        /// </summary>
        public NameValueCollection AllCustomProperties
        {
            get; set;
        }
 
        /// <summary>
        /// 私有构造函数,任何调用者都没法直接生成一个不带参数的本类的实例了
        /// </summary>
        private SldComponentInfo_DM()
        {
            this.Id = -1;
            this.Visible = true;
            //this.IsSuppressed = false;
        }
 
        /// <summary>
        /// 每个项都将设置一个惟一的 ID, 就从 0 开始
        /// </summary>
        private static int currentId = 0;
 
        /// <summary>
        /// 生成根节点,顶级装配体的信息
        /// </summary>
        /// <returns>顶级装配体的 ID = 1</returns>
        public static SldComponentInfo_DM GenerateTheRoot()
        {
            currentId = 1;
            return new SldComponentInfo_DM()
            {
                Id = currentId,
                Level = 0,
                ParentId = 0
            };
        }
 
        /// <summary>
        /// 生成下一个节点,反正不是顶级装配体
        /// </summary>
        /// <returns>当前节点,只设置一个属性 - Id,确保 Id 是唯一的</returns>
        public static SldComponentInfo_DM GenerateTheNext()
        {
            int nextId = Interlocked.Increment(ref currentId);
            return new SldComponentInfo_DM()
            {
                Id = currentId
            };
        }
    }
}