• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

DomCR / ACadSharp / 17065159770

19 Aug 2025 09:16AM UTC coverage: 78.225% (-0.2%) from 78.427%
17065159770

push

github

web-flow
Merge pull request #725 from DomCR/issue-399_proxy-entities

issue 399

6509 of 9051 branches covered (71.91%)

Branch coverage included in aggregate %.

35 of 145 new or added lines in 8 files covered. (24.14%)

1 existing line in 1 file now uncovered.

25266 of 31569 relevant lines covered (80.03%)

104758.74 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

92.24
/src/ACadSharp/Classes/DxfClassCollection.cs
1
using System;
2
using System.Collections;
3
using System.Collections.Generic;
4
using System.Linq;
5

6
namespace ACadSharp.Classes
7
{
8
        public class DxfClassCollection : ICollection<DxfClass>
9
        {
10
                /// <inheritdoc/>
11
                public int Count { get { return this._entries.Count; } }
166,752✔
12

13
                /// <inheritdoc/>
14
                public bool IsReadOnly => false;
×
15

16
                public Dictionary<string, DxfClass> _entries = new Dictionary<string, DxfClass>(StringComparer.OrdinalIgnoreCase);
2,209✔
17

18
                /// <summary>
19
                /// Adds or updates the classes in a specific document
20
                /// </summary>
21
                /// <param name="doc"></param>
22
                public static void UpdateDxfClasses(CadDocument doc)
23
                {
1,290✔
24
                        //AcDbDictionaryWithDefault
25
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
26
                        {
1,290✔
27
                                CppClassName = DxfSubclassMarker.DictionaryWithDefault,
1,290✔
28
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
29
                                DwgVersion = (ACadVersion)22,
1,290✔
30
                                DxfName = DxfFileToken.ObjectDictionaryWithDefault,
1,290✔
31
                                ItemClassId = 499,
1,290✔
32
                                MaintenanceVersion = 42,
1,290✔
33
                                ProxyFlags = ProxyFlags.R13FormatProxy,
1,290✔
34
                                WasZombie = false,
1,290✔
35
                        });
1,290✔
36

37
                        //AcDbPlaceHolder
38
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
39
                        {
1,290✔
40
                                CppClassName = DxfSubclassMarker.AcDbPlaceHolder,
1,290✔
41
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
42
                                DwgVersion = (ACadVersion)0,
1,290✔
43
                                DxfName = DxfFileToken.ObjectPlaceholder,
1,290✔
44
                                ItemClassId = 499,
1,290✔
45
                                MaintenanceVersion = 0,
1,290✔
46
                                ProxyFlags = ProxyFlags.None,
1,290✔
47
                                WasZombie = false,
1,290✔
48
                        });
1,290✔
49

50
                        //AcDbLayout
51
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
52
                        {
1,290✔
53
                                CppClassName = DxfSubclassMarker.Layout,
1,290✔
54
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
55
                                DwgVersion = (ACadVersion)0,
1,290✔
56
                                DxfName = DxfFileToken.ObjectLayout,
1,290✔
57
                                ItemClassId = 499,
1,290✔
58
                                MaintenanceVersion = 0,
1,290✔
59
                                ProxyFlags = ProxyFlags.None,
1,290✔
60
                                WasZombie = false,
1,290✔
61
                        });
1,290✔
62

63
                        //AcDbDictionaryVar
64
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
65
                        {
1,290✔
66
                                CppClassName = DxfSubclassMarker.DictionaryVar,
1,290✔
67
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
68
                                DwgVersion = (ACadVersion)20,
1,290✔
69
                                DxfName = DxfFileToken.ObjectDictionaryVar,
1,290✔
70
                                ItemClassId = 499,
1,290✔
71
                                MaintenanceVersion = 0,
1,290✔
72
                                ProxyFlags = ProxyFlags.None,
1,290✔
73
                                WasZombie = false,
1,290✔
74
                        });
1,290✔
75

76
                        //AcDbTableStyle
77
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
78
                        {
1,290✔
79
                                CppClassName = DxfSubclassMarker.TableStyle,
1,290✔
80
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
81
                                DwgVersion = ACadVersion.AC1018,
1,290✔
82
                                DxfName = DxfFileToken.ObjectTableStyle,
1,290✔
83
                                ItemClassId = 499,
1,290✔
84
                                MaintenanceVersion = 0,
1,290✔
85
                                ProxyFlags = (ProxyFlags)4095,
1,290✔
86
                                WasZombie = false,
1,290✔
87
                        });
1,290✔
88

89
                        //AcDbMaterial
90
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
91
                        {
1,290✔
92
                                CppClassName = DxfSubclassMarker.Material,
1,290✔
93
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
94
                                DwgVersion = 0,
1,290✔
95
                                DxfName = DxfFileToken.ObjectMaterial,
1,290✔
96
                                ItemClassId = 499,
1,290✔
97
                                MaintenanceVersion = 0,
1,290✔
98
                                ProxyFlags = ProxyFlags.EraseAllowed | ProxyFlags.CloningAllowed | ProxyFlags.DisablesProxyWarningDialog,
1,290✔
99
                                WasZombie = false,
1,290✔
100
                        });
1,290✔
101

102
                        //AcDbVisualStyle
103
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
104
                        {
1,290✔
105
                                CppClassName = DxfSubclassMarker.VisualStyle,
1,290✔
106
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
107
                                DwgVersion = ACadVersion.AC1021,
1,290✔
108
                                DxfName = DxfFileToken.ObjectVisualStyle,
1,290✔
109
                                ItemClassId = 499,
1,290✔
110
                                MaintenanceVersion = 0,
1,290✔
111
                                ProxyFlags = (ProxyFlags)4095,
1,290✔
112
                                WasZombie = false,
1,290✔
113
                        });
1,290✔
114

115
                        //AcDbScale
116
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
117
                        {
1,290✔
118
                                CppClassName = DxfSubclassMarker.Scale,
1,290✔
119
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
120
                                DwgVersion = ACadVersion.AC1021,
1,290✔
121
                                DxfName = DxfFileToken.ObjectScale,
1,290✔
122
                                ItemClassId = 499,
1,290✔
123
                                MaintenanceVersion = 1,
1,290✔
124
                                ProxyFlags = ProxyFlags.EraseAllowed | ProxyFlags.CloningAllowed | ProxyFlags.DisablesProxyWarningDialog,
1,290✔
125
                                WasZombie = false,
1,290✔
126
                        });
1,290✔
127

128
                        //AcDbMLeaderStyle
129
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
130
                        {
1,290✔
131
                                CppClassName = DxfSubclassMarker.MLeaderStyle,
1,290✔
132
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
133
                                DwgVersion = ACadVersion.AC1021,
1,290✔
134
                                DxfName = DxfFileToken.ObjectMLeaderStyle,
1,290✔
135
                                ItemClassId = 499,
1,290✔
136
                                MaintenanceVersion = 25,
1,290✔
137
                                ProxyFlags = (ProxyFlags)4095,
1,290✔
138
                                WasZombie = false,
1,290✔
139
                        });
1,290✔
140

141
                        //AcDbCellStyleMap
142
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
143
                        {
1,290✔
144
                                CppClassName = DxfSubclassMarker.CellStyleMap,
1,290✔
145
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
146
                                DwgVersion = ACadVersion.AC1021,
1,290✔
147
                                DxfName = DxfFileToken.ObjectCellStyleMap,
1,290✔
148
                                ItemClassId = 499,
1,290✔
149
                                MaintenanceVersion = 25,
1,290✔
150
                                ProxyFlags = ProxyFlags.CloningAllowed | ProxyFlags.DisablesProxyWarningDialog,
1,290✔
151
                                WasZombie = false,
1,290✔
152
                        });
1,290✔
153

154
                        //ExAcXREFPanelObject
155
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
156
                        {
1,290✔
157
                                CppClassName = "ExAcXREFPanelObject",
1,290✔
158
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
159
                                DwgVersion = 0,
1,290✔
160
                                DxfName = "EXACXREFPANELOBJECT",
1,290✔
161
                                ItemClassId = 499,
1,290✔
162
                                MaintenanceVersion = 0,
1,290✔
163
                                ProxyFlags = ProxyFlags.EraseAllowed | ProxyFlags.DisablesProxyWarningDialog,
1,290✔
164
                                WasZombie = false,
1,290✔
165
                        });
1,290✔
166

167
                        //AcDbImpNonPersistentObjectsCollection
168
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
169
                        {
1,290✔
170
                                CppClassName = "AcDbImpNonPersistentObjectsCollection",
1,290✔
171
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
172
                                DwgVersion = 0,
1,290✔
173
                                DxfName = "NPOCOLLECTION",
1,290✔
174
                                ItemClassId = 499,
1,290✔
175
                                MaintenanceVersion = 0,
1,290✔
176
                                ProxyFlags = ProxyFlags.EraseAllowed | ProxyFlags.CloningAllowed | ProxyFlags.DisablesProxyWarningDialog,
1,290✔
177
                                WasZombie = false,
1,290✔
178
                        });
1,290✔
179

180
                        //AcDbLayerIndex
181
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
182
                        {
1,290✔
183
                                CppClassName = "AcDbLayerIndex",
1,290✔
184
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
185
                                DwgVersion = 0,
1,290✔
186
                                DxfName = "LAYER_INDEX",
1,290✔
187
                                ItemClassId = 499,
1,290✔
188
                                MaintenanceVersion = 0,
1,290✔
189
                                ProxyFlags = ProxyFlags.None,
1,290✔
190
                                WasZombie = false,
1,290✔
191
                        });
1,290✔
192

193
                        //AcDbSpatialIndex
194
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
195
                        {
1,290✔
196
                                CppClassName = "AcDbSpatialIndex",
1,290✔
197
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
198
                                DwgVersion = 0,
1,290✔
199
                                DxfName = "SPATIAL_INDEX",
1,290✔
200
                                ItemClassId = 499,
1,290✔
201
                                MaintenanceVersion = 0,
1,290✔
202
                                ProxyFlags = ProxyFlags.None,
1,290✔
203
                                WasZombie = false,
1,290✔
204
                        });
1,290✔
205

206
                        //AcDbIdBuffer
207
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
208
                        {
1,290✔
209
                                CppClassName = "AcDbIdBuffer",
1,290✔
210
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
211
                                DwgVersion = ACadVersion.AC1014,
1,290✔
212
                                DxfName = "IDBUFFER",
1,290✔
213
                                ItemClassId = 499,
1,290✔
214
                                MaintenanceVersion = 0,
1,290✔
215
                                ProxyFlags = ProxyFlags.R13FormatProxy,
1,290✔
216
                                WasZombie = false,
1,290✔
217
                        });
1,290✔
218

219
                        //AcDbSectionViewStyle
220
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
221
                        {
1,290✔
222
                                CppClassName = "AcDbSectionViewStyle",
1,290✔
223
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
224
                                DwgVersion = 0,
1,290✔
225
                                DxfName = "ACDBSECTIONVIEWSTYLE",
1,290✔
226
                                ItemClassId = 499,
1,290✔
227
                                MaintenanceVersion = 0,
1,290✔
228
                                ProxyFlags = ProxyFlags.EraseAllowed | ProxyFlags.DisablesProxyWarningDialog,
1,290✔
229
                                WasZombie = false,
1,290✔
230
                        });
1,290✔
231

232
                        //AcDbDetailViewStyle
233
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
234
                        {
1,290✔
235
                                CppClassName = "AcDbDetailViewStyle",
1,290✔
236
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
237
                                DwgVersion = 0,
1,290✔
238
                                DxfName = "ACDBDETAILVIEWSTYLE",
1,290✔
239
                                ItemClassId = 499,
1,290✔
240
                                MaintenanceVersion = 0,
1,290✔
241
                                ProxyFlags = ProxyFlags.EraseAllowed | ProxyFlags.DisablesProxyWarningDialog,
1,290✔
242
                                WasZombie = false,
1,290✔
243
                        });
1,290✔
244

245
                        //AcDbSubDMesh
246
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
247
                        {
1,290✔
248
                                CppClassName = DxfSubclassMarker.Mesh,
1,290✔
249
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
250
                                DwgVersion = 0,
1,290✔
251
                                DxfName = DxfFileToken.EntityMesh,
1,290✔
252
                                ItemClassId = 498,
1,290✔
253
                                MaintenanceVersion = 0,
1,290✔
254
                                ProxyFlags = ProxyFlags.None,
1,290✔
255
                                WasZombie = false,
1,290✔
256
                        });
1,290✔
257

258
                        //AcDbSortentsTable
259
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
260
                        {
1,290✔
261
                                CppClassName = DxfSubclassMarker.SortentsTable,
1,290✔
262
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
263
                                DwgVersion = ACadVersion.AC1014,
1,290✔
264
                                DxfName = DxfFileToken.ObjectSortEntsTable,
1,290✔
265
                                ItemClassId = 499,
1,290✔
266
                                MaintenanceVersion = 0,
1,290✔
267
                                ProxyFlags = ProxyFlags.None,
1,290✔
268
                                WasZombie = false,
1,290✔
269
                        });
1,290✔
270

271
                        //AcDbTextObjectContextData
272
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
273
                        {
1,290✔
274
                                CppClassName = "AcDbTextObjectContextData",
1,290✔
275
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
276
                                DwgVersion = 0,
1,290✔
277
                                DxfName = "ACDB_TEXTOBJECTCONTEXTDATA_CLASS",
1,290✔
278
                                ItemClassId = 499,
1,290✔
279
                                MaintenanceVersion = 0,
1,290✔
280
                                ProxyFlags = ProxyFlags.EraseAllowed | ProxyFlags.CloningAllowed | ProxyFlags.DisablesProxyWarningDialog,
1,290✔
281
                                WasZombie = false,
1,290✔
282
                        });
1,290✔
283

284
                        //AcDbWipeout
285
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
286
                        {
1,290✔
287
                                ApplicationName = "WipeOut",
1,290✔
288
                                CppClassName = DxfSubclassMarker.Wipeout,
1,290✔
289
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
290
                                DwgVersion = ACadVersion.AC1015,
1,290✔
291
                                DxfName = DxfFileToken.EntityWipeout,
1,290✔
292
                                ItemClassId = 498,
1,290✔
293
                                MaintenanceVersion = 0,
1,290✔
294
                                ProxyFlags = ProxyFlags.EraseAllowed | ProxyFlags.TransformAllowed | ProxyFlags.ColorChangeAllowed | ProxyFlags.LayerChangeAllowed | ProxyFlags.LinetypeChangeAllowed | ProxyFlags.LinetypeScaleChangeAllowed | ProxyFlags.VisibilityChangeAllowed | ProxyFlags.R13FormatProxy,
1,290✔
295
                                WasZombie = false,
1,290✔
296
                        });
1,290✔
297

298
                        //AcDbWipeoutVariables
299
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
300
                        {
1,290✔
301
                                ApplicationName = "WipeOut",
1,290✔
302
                                CppClassName = "AcDbWipeoutVariables",
1,290✔
303
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
304
                                DwgVersion = ACadVersion.AC1015,
1,290✔
305
                                DxfName = "WIPEOUTVARIABLES",
1,290✔
306
                                ItemClassId = 499,
1,290✔
307
                                MaintenanceVersion = 0,
1,290✔
308
                                ProxyFlags = ProxyFlags.R13FormatProxy,
1,290✔
309
                                WasZombie = false,
1,290✔
310
                        });
1,290✔
311

312
                        //AcDbDimAssoc
313
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
314
                        {
1,290✔
315
                                ApplicationName = "AcDbDimAssoc",
1,290✔
316
                                CppClassName = "AcDbDimAssoc",
1,290✔
317
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
318
                                DwgVersion = 0,
1,290✔
319
                                DxfName = "DIMASSOC",
1,290✔
320
                                ItemClassId = 499,
1,290✔
321
                                MaintenanceVersion = 0,
1,290✔
322
                                ProxyFlags = ProxyFlags.None,
1,290✔
323
                                WasZombie = false,
1,290✔
324
                        });
1,290✔
325

326
                        //AcDbTable
327
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
328
                        {
1,290✔
329
                                CppClassName = DxfSubclassMarker.TableEntity,
1,290✔
330
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
331
                                DwgVersion = ACadVersion.AC1018,
1,290✔
332
                                DxfName = DxfFileToken.EntityTable,
1,290✔
333
                                ItemClassId = 498,
1,290✔
334
                                MaintenanceVersion = 0,
1,290✔
335
                                ProxyFlags = ProxyFlags.EraseAllowed | ProxyFlags.DisablesProxyWarningDialog,
1,290✔
336
                                WasZombie = false,
1,290✔
337
                        });
1,290✔
338

339
                        //AcDbTableContent
340
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
341
                        {
1,290✔
342
                                CppClassName = DxfSubclassMarker.TableContent,
1,290✔
343
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
344
                                DwgVersion = ACadVersion.AC1018,
1,290✔
345
                                DxfName = DxfFileToken.ObjectTableContent,
1,290✔
346
                                ItemClassId = 499,
1,290✔
347
                                MaintenanceVersion = 21,
1,290✔
348
                                ProxyFlags = ProxyFlags.CloningAllowed | ProxyFlags.DisablesProxyWarningDialog,
1,290✔
349
                                WasZombie = false,
1,290✔
350
                        });
1,290✔
351

352
                        //AcDbTableGeometry
353
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
354
                        {
1,290✔
355
                                CppClassName = "AcDbTableGeometry",
1,290✔
356
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
357
                                DwgVersion = 0,
1,290✔
358
                                DxfName = "TABLEGEOMETRY",
1,290✔
359
                                ItemClassId = 499,
1,290✔
360
                                MaintenanceVersion = 0,
1,290✔
361
                                ProxyFlags = ProxyFlags.CloningAllowed | ProxyFlags.DisablesProxyWarningDialog,
1,290✔
362
                                WasZombie = false,
1,290✔
363
                        });
1,290✔
364

365
                        //AcDbRasterImage
366
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
367
                        {
1,290✔
368
                                ApplicationName = "ISM",
1,290✔
369
                                CppClassName = DxfSubclassMarker.RasterImage,
1,290✔
370
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
371
                                DwgVersion = (ACadVersion)20,
1,290✔
372
                                DxfName = DxfFileToken.EntityImage,
1,290✔
373
                                ItemClassId = 498,
1,290✔
374
                                MaintenanceVersion = 0,
1,290✔
375
                                ProxyFlags = ProxyFlags.EraseAllowed | ProxyFlags.TransformAllowed | ProxyFlags.ColorChangeAllowed | ProxyFlags.LayerChangeAllowed | ProxyFlags.LinetypeChangeAllowed | ProxyFlags.LinetypeScaleChangeAllowed | ProxyFlags.VisibilityChangeAllowed | ProxyFlags.R13FormatProxy,
1,290✔
376
                                WasZombie = false,
1,290✔
377
                        });
1,290✔
378

379
                        //AcDbRasterImageDef
380
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
381
                        {
1,290✔
382
                                ApplicationName = "ISM",
1,290✔
383
                                CppClassName = DxfSubclassMarker.RasterImageDef,
1,290✔
384
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
385
                                DwgVersion = (ACadVersion)20,
1,290✔
386
                                DxfName = DxfFileToken.ObjectImageDefinition,
1,290✔
387
                                ItemClassId = 499,
1,290✔
388
                                MaintenanceVersion = 0,
1,290✔
389
                                ProxyFlags = ProxyFlags.None,
1,290✔
390
                                WasZombie = false,
1,290✔
391
                        });
1,290✔
392

393
                        //AcDbColor
394
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
395
                        {
1,290✔
396
                                CppClassName = DxfSubclassMarker.DbColor,
1,290✔
397
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
398
                                DwgVersion = ACadVersion.AC1015,
1,290✔
399
                                DxfName = DxfFileToken.ObjectDBColor,
1,290✔
400
                                ItemClassId = 499,
1,290✔
401
                                MaintenanceVersion = 14,
1,290✔
402
                                ProxyFlags = ProxyFlags.None,
1,290✔
403
                                WasZombie = false,
1,290✔
404
                        });
1,290✔
405

406
                        //AcDbGeoData
407
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
408
                        {
1,290✔
409
                                CppClassName = DxfSubclassMarker.GeoData,
1,290✔
410
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
411
                                DwgVersion = ACadVersion.AC1021,
1,290✔
412
                                DxfName = DxfFileToken.ObjectGeoData,
1,290✔
413
                                ItemClassId = 499,
1,290✔
414
                                MaintenanceVersion = 45,
1,290✔
415
                                ProxyFlags = (ProxyFlags)4095,
1,290✔
416
                                WasZombie = false,
1,290✔
417
                        });
1,290✔
418

419
                        //AcDbMLeader
420
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
421
                        {
1,290✔
422
                                CppClassName = DxfSubclassMarker.MultiLeader,
1,290✔
423
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
424
                                DwgVersion = ACadVersion.MC0_0,
1,290✔
425
                                DxfName = DxfFileToken.EntityMultiLeader,
1,290✔
426
                                ItemClassId = 499,
1,290✔
427
                                MaintenanceVersion = 0,
1,290✔
428
                                ProxyFlags = ProxyFlags.EraseAllowed | ProxyFlags.DisablesProxyWarningDialog,
1,290✔
429
                                WasZombie = false,
1,290✔
430
                        });
1,290✔
431

432
                        //AcDbPdfReference
433
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
434
                        {
1,290✔
435
                                CppClassName = DxfSubclassMarker.PdfReference,
1,290✔
436
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
437
                                DwgVersion = (ACadVersion)26,
1,290✔
438
                                DxfName = DxfFileToken.EntityPdfUnderlay,
1,290✔
439
                                ItemClassId = 498,
1,290✔
440
                                MaintenanceVersion = 0,
1,290✔
441
                                ProxyFlags = (ProxyFlags)4095,
1,290✔
442
                                WasZombie = false,
1,290✔
443
                        });
1,290✔
444

445
                        //AcDbPdfDefinition
446
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
447
                        {
1,290✔
448
                                CppClassName = DxfSubclassMarker.PdfDefinition,
1,290✔
449
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
450
                                DwgVersion = (ACadVersion)26,
1,290✔
451
                                DxfName = DxfFileToken.ObjectPdfDefinition,
1,290✔
452
                                ItemClassId = 499,
1,290✔
453
                                MaintenanceVersion = 0,
1,290✔
454
                                ProxyFlags = ProxyFlags.EraseAllowed | ProxyFlags.CloningAllowed | ProxyFlags.DisablesProxyWarningDialog,
1,290✔
455
                                WasZombie = false,
1,290✔
456
                        });
1,290✔
457

458
                        //AcDbRasterVariables
459
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
460
                        {
1,290✔
461
                                ApplicationName = "ISM",
1,290✔
462
                                CppClassName = DxfSubclassMarker.RasterVariables,
1,290✔
463
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
464
                                DwgVersion = (ACadVersion)20,
1,290✔
465
                                DxfName = DxfFileToken.ObjectRasterVariables,
1,290✔
466
                                ItemClassId = 499,
1,290✔
467
                                MaintenanceVersion = 0,
1,290✔
468
                                ProxyFlags = ProxyFlags.None,
1,290✔
469
                                WasZombie = false,
1,290✔
470
                        });
1,290✔
471

472
                        //AcDbSpatialFilter
473
                        doc.Classes.AddOrUpdate(new DxfClass
1,290✔
474
                        {
1,290✔
475
                                CppClassName = DxfSubclassMarker.SpatialFilter,
1,290✔
476
                                ClassNumber = (short)(500 + doc.Classes.Count),
1,290✔
477
                                DwgVersion = (ACadVersion)20,
1,290✔
478
                                DxfName = DxfFileToken.ObjectSpatialFilter,
1,290✔
479
                                ItemClassId = 499,
1,290✔
480
                                MaintenanceVersion = 0,
1,290✔
481
                                ProxyFlags = ProxyFlags.None,
1,290✔
482
                                WasZombie = false,
1,290✔
483
                                IsAnEntity = false,
1,290✔
484
                        });
1,290✔
485
                }
1,290✔
486

487
                /// <summary>
488
                /// Add a dxf class to the collection if the <see cref="DxfClass.DxfName"/> is not present
489
                /// </summary>
490
                /// <param name="item"></param>
491
                public void Add(DxfClass item)
492
                {
×
493
                        this._entries.Add(item.DxfName, item);
×
494
                }
×
495

496
                /// <summary>
497
                /// Add a dxf class to the collection or updates the existing one if the <see cref="DxfClass.DxfName"/> is already in the collection
498
                /// </summary>
499
                /// <param name="item"></param>
500
                public void AddOrUpdate(DxfClass item)
501
                {
68,332✔
502
                        if (this._entries.TryGetValue(item.DxfName, out DxfClass result))
68,332✔
503
                        {
35✔
504
                                result.InstanceCount = item.InstanceCount;
35✔
505
                        }
35✔
506
                        else
507
                        {
68,297✔
508
                                this._entries.Add(item.DxfName, item);
68,297✔
509
                        }
68,297✔
510
                }
68,332✔
511

512
                /// <inheritdoc/>
513
                public void Clear()
514
                {
560✔
515
                        _entries.Clear();
560✔
516
                }
560✔
517

518
                /// <summary>
519
                /// Determines whether the Collection contains a specific <see cref="DxfClass.DxfName"/>.
520
                /// </summary>
521
                /// <param name="dxfname"></param>
522
                /// <returns></returns>
523
                public bool Contains(string dxfname)
524
                {
×
525
                        return this._entries.ContainsKey(dxfname);
×
526
                }
×
527

528
                /// <inheritdoc/>
529
                public bool Contains(DxfClass item)
530
                {
×
531
                        return _entries.Values.Contains(item);
×
532
                }
×
533

534
                /// <inheritdoc/>
535
                public void CopyTo(DxfClass[] array, int arrayIndex)
536
                {
×
NEW
537
                        this._entries.Values.CopyTo(array, arrayIndex);
×
NEW
538
                }
×
539

540
                /// <summary>
541
                /// Gets the dxf class associated with <see cref="DxfClass.ClassNumber"/>.
542
                /// </summary>
543
                /// <param name="id"></param>
544
                /// <returns></returns>
545
                public DxfClass GetByClassNumber(short id)
NEW
546
                {
×
NEW
547
                        return this._entries.Values.FirstOrDefault(c => c.ClassNumber == id);
×
NEW
548
                }
×
549

550
                /// <summary>
551
                /// Gets the dxf class associated with <see cref="DxfClass.DxfName"/>.
552
                /// </summary>
553
                /// <param name="dxfname"></param>
554
                /// <returns></returns>
555
                public DxfClass GetByName(string dxfname)
NEW
556
                {
×
NEW
557
                        if (this._entries.TryGetValue(dxfname, out DxfClass result))
×
NEW
558
                        {
×
NEW
559
                                return result;
×
560
                        }
561
                        else
NEW
562
                        {
×
NEW
563
                                return null;
×
564
                        }
UNCOV
565
                }
×
566

567
                /// <inheritdoc/>
568
                public IEnumerator<DxfClass> GetEnumerator()
569
                {
1,499✔
570
                        return _entries.Values.GetEnumerator();
1,499✔
571
                }
1,499✔
572

573
                /// <inheritdoc/>
574
                IEnumerator IEnumerable.GetEnumerator()
NEW
575
                {
×
NEW
576
                        return this._entries.Values.GetEnumerator();
×
NEW
577
                }
×
578

579
                /// <inheritdoc/>
580
                public bool Remove(DxfClass item)
581
                {
×
582
                        return this._entries.Remove(item.DxfName);
×
583
                }
×
584

585
                /// <summary>
586
                /// Gets the dxf class associated with <see cref="DxfClass.ClassNumber"/>.
587
                /// </summary>
588
                /// <param name="id"></param>
589
                /// <param name="result"></param>
590
                /// <returns></returns>
591
                public bool TryGetByClassNumber(short id, out DxfClass result)
592
                {
×
NEW
593
                        result = this._entries.Values.FirstOrDefault(c => c.ClassNumber == id);
×
NEW
594
                        return result != null;
×
NEW
595
                }
×
596

597
                /// <summary>
598
                /// Gets the dxf class associated with <see cref="DxfClass.DxfName"/>.
599
                /// </summary>
600
                /// <param name="dxfname"></param>
601
                /// <param name="result"></param>
602
                /// <returns>true if the Collection contains an element with the specified key; otherwise, false.</returns>
603
                public bool TryGetByName(string dxfname, out DxfClass result)
604
                {
16,672✔
605
                        return this._entries.TryGetValue(dxfname, out result);
16,672✔
606
                }
16,672✔
607
        }
608
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc