-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathListTools.cs
More file actions
296 lines (269 loc) · 9.47 KB
/
Copy pathListTools.cs
File metadata and controls
296 lines (269 loc) · 9.47 KB
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
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
using System;
using System.Collections.Generic;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Runtime;
namespace DotNetARX
{
/// <summary>
/// TypedValue列表类,简化选择集过滤器的构造
/// </summary>
public class TypedValueList : List<TypedValue>
{
/// <summary>
/// 接受可变参数的构造函数
/// </summary>
/// <param name="args">TypedValue对象</param>
public TypedValueList(params TypedValue[] args)
{
AddRange(args);
}
/// <summary>
/// 添加DXF组码及对应的类型
/// </summary>
/// <param name="typecode">DXF组码</param>
/// <param name="value">类型</param>
public void Add(int typecode, object value)
{
base.Add(new TypedValue(typecode, value));
}
/// <summary>
/// 添加DXF组码
/// </summary>
/// <param name="typecode">DXF组码</param>
public void Add(int typecode)
{
base.Add(new TypedValue(typecode));
}
/// <summary>
/// 添加DXF组码及对应的类型
/// </summary>
/// <param name="typecode">DXF组码</param>
/// <param name="value">类型</param>
public void Add(DxfCode typecode, object value)
{
base.Add(new TypedValue((int)typecode, value));
}
/// <summary>
/// 添加DXF组码
/// </summary>
/// <param name="typecode">DXF组码</param>
public void Add(DxfCode typecode)
{
base.Add(new TypedValue((int)typecode));
}
/// <summary>
/// 添加图元类型,DXF组码缺省为0
/// </summary>
/// <param name="entityType">图元类型</param>
public void Add(Type entityType)
{
base.Add(new TypedValue(0, RXClass.GetClass(entityType).DxfName));
}
/// <summary>
/// TypedValueList隐式转换为SelectionFilter
/// </summary>
/// <param name="src">要转换的TypedValueList对象</param>
/// <returns>返回对应的SelectionFilter类对象</returns>
public static implicit operator SelectionFilter(TypedValueList src)
{
return src != null ? new SelectionFilter(src) : null;
}
/// <summary>
/// TypedValueList隐式转换为ResultBuffer
/// </summary>
/// <param name="src">要转换的TypedValueList对象</param>
/// <returns>返回对应的ResultBuffer对象</returns>
public static implicit operator ResultBuffer(TypedValueList src)
{
return src != null ? new ResultBuffer(src) : null;
}
/// <summary>
/// TypedValueList隐式转换为TypedValue数组
/// </summary>
/// <param name="src">要转换的TypedValueList对象</param>
/// <returns>返回对应的TypedValue数组</returns>
public static implicit operator TypedValue[](TypedValueList src)
{
return src != null ? src.ToArray() : null;
}
/// <summary>
/// TypedValue数组隐式转换为TypedValueList
/// </summary>
/// <param name="src">要转换的TypedValue数组</param>
/// <returns>返回对应的TypedValueList</returns>
public static implicit operator TypedValueList(TypedValue[] src)
{
return src != null ? new TypedValueList(src) : null;
}
/// <summary>
/// SelectionFilter隐式转换为TypedValueList
/// </summary>
/// <param name="src">要转换的SelectionFilter</param>
/// <returns>返回对应的TypedValueList</returns>
public static implicit operator TypedValueList(SelectionFilter src)
{
return src != null ? new TypedValueList(src.GetFilter()) : null;
}
/// <summary>
/// ResultBuffer隐式转换为TypedValueList
/// </summary>
/// <param name="src">要转换的ResultBuffer</param>
/// <returns>返回对应的TypedValueList</returns>
public static implicit operator TypedValueList(ResultBuffer src)
{
return src != null ? new TypedValueList(src.AsArray()) : null;
}
}
/// <summary>
/// Point3d列表类
/// </summary>
public class Point3dList : List<Point3d>
{
/// <summary>
/// 接受可变参数的构造函数
/// </summary>
/// <param name="args">Point3d类对象</param>
public Point3dList(params Point3d[] args)
{
AddRange(args);
}
/// <summary>
/// Point3dList隐式转换为Point3d数组
/// </summary>
/// <param name="src">要转换的Point3dList对象</param>
/// <returns>返回对应的Point3d数组</returns>
public static implicit operator Point3d[](Point3dList src)
{
return src != null ? src.ToArray() : null;
}
/// <summary>
/// Point3dList隐式转换为Point3dCollection
/// </summary>
/// <param name="src">要转换的Point3dList对象</param>
/// <returns>返回对应的Point3dCollection</returns>
public static implicit operator Point3dCollection(Point3dList src)
{
return src != null ? new Point3dCollection(src) : null;
}
/// <summary>
/// Point3d数组隐式转换为Point3dList
/// </summary>
/// <param name="src">要转换的Point3d数组</param>
/// <returns>返回对应的Point3dList</returns>
public static implicit operator Point3dList(Point3d[] src)
{
return src != null ? new Point3dList(src) : null;
}
/// <summary>
/// Point3dCollection隐式转换为Point3dList
/// </summary>
/// <param name="src">要转换的Point3dCollection</param>
/// <returns>返回对应的Point3dList</returns>
public static implicit operator Point3dList(Point3dCollection src)
{
if (src != null)
{
Point3d[] ids = new Point3d[src.Count];
src.CopyTo(ids, 0);
return new Point3dList(ids);
}
else
{
return null;
}
}
}
/// <summary>
/// ObjectId列表
/// </summary>
public class ObjectIdList : List<ObjectId>
{
/// <summary>
/// 接受可变参数的构造函数
/// </summary>
/// <param name="args">ObjectId对象</param>
public ObjectIdList(params ObjectId[] args)
{
AddRange(args);
}
/// <summary>
/// ObjectIdList隐式转换为ObjectId数组
/// </summary>
/// <param name="src">要转换的ObjectIdList对象</param>
/// <returns>返回对应的ObjectId数组</returns>
public static implicit operator ObjectId[](ObjectIdList src)
{
return src != null ? src.ToArray() : null;
}
/// <summary>
/// ObjectIdList隐式转换为ObjectIdCollection
/// </summary>
/// <param name="src">要转换的ObjectIdList对象</param>
/// <returns>返回对应的ObjectIdCollection</returns>
public static implicit operator ObjectIdCollection(ObjectIdList src)
{
return src != null ? new ObjectIdCollection(src) : null;
}
/// <summary>
/// ObjectId数组隐式转换为ObjectIdList
/// </summary>
/// <param name="src">要转换的ObjectId数组</param>
/// <returns>返回对应的ObjectIdList</returns>
public static implicit operator ObjectIdList(ObjectId[] src)
{
return src != null ? new ObjectIdList(src) : null;
}
/// <summary>
/// ObjectIdCollection隐式转换为ObjectIdList
/// </summary>
/// <param name="src">要转换的ObjectIdCollection</param>
/// <returns>返回对应的ObjectIdList</returns>
public static implicit operator ObjectIdList(ObjectIdCollection src)
{
if (src != null)
{
ObjectId[] ids = new ObjectId[src.Count];
src.CopyTo(ids, 0);
return new ObjectIdList(ids);
}
else
{
return null;
}
}
}
/// <summary>
/// Entity列表
/// </summary>
public class EntityList : List<Entity>
{
/// <summary>
/// 接受可变参数的构造函数
/// </summary>
/// <param name="args">实体对象</param>
public EntityList(params Entity[] args)
{
AddRange(args);
}
/// <summary>
/// EntityList隐式转换为Entity数组
/// </summary>
/// <param name="src">要转换的EntityList</param>
/// <returns>返回对应的Entity数组</returns>
public static implicit operator Entity[](EntityList src)
{
return src != null ? src.ToArray() : null;
}
/// <summary>
/// Entity数组隐式转换为EntityList
/// </summary>
/// <param name="src">要转换的Entity数组</param>
/// <returns>返回对应的EntityList</returns>
public static implicit operator EntityList(Entity[] src)
{
return src != null ? new EntityList(src) : null;
}
}
}