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

DomCR / ACadSharp / 17370113108

01 Sep 2025 06:57AM UTC coverage: 78.134% (-0.03%) from 78.161%
17370113108

push

github

web-flow
Merge pull request #772 from DomCR/dxf-dictionary-w-default

dxf dictionary with default

6573 of 9149 branches covered (71.84%)

Branch coverage included in aggregate %.

6 of 17 new or added lines in 2 files covered. (35.29%)

4 existing lines in 2 files now uncovered.

25487 of 31883 relevant lines covered (79.94%)

105576.91 hits per line

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

85.06
/src/ACadSharp/IO/DXF/DxfStreamWriter/DxfObjectsSectionWriter.cs
1
using ACadSharp.Entities;
2
using ACadSharp.Objects;
3
using ACadSharp.Objects.Evaluations;
4
using CSMath;
5
using CSUtilities.Converters;
6
using System;
7
using System.Linq;
8

9
namespace ACadSharp.IO.DXF
10
{
11
        internal class DxfObjectsSectionWriter : DxfSectionWriterBase
12
        {
13
                public override string SectionName { get { return DxfFileToken.ObjectsSection; } }
990✔
14

15
                public DxfObjectsSectionWriter(IDxfStreamWriter writer, CadDocument document, CadObjectHolder holder, DxfWriterConfiguration configuration)
16
                        : base(writer, document, holder, configuration)
330✔
17
                {
330✔
18
                }
330✔
19

20
                protected override void writeSection()
21
                {
330✔
22
                        while (this.Holder.Objects.Any())
13,549✔
23
                        {
13,219✔
24
                                CadObject item = this.Holder.Objects.Dequeue();
13,219✔
25

26
                                this.writeObject(item);
13,219✔
27
                        }
13,219✔
28
                }
330✔
29

30
                protected void writeObject<T>(T co)
31
                        where T : CadObject
32
                {
13,219✔
33
                        switch (co)
13,219✔
34
                        {
35
                                case AcdbPlaceHolder:
36
                                case EvaluationGraph:
37
                                case Material:
38
                                case MultiLeaderAnnotContext:
39
                                case VisualStyle:
40
                                case ImageDefinitionReactor:
41
                                case UnknownNonGraphicalObject:
42
                                case ProxyObject:
43
                                case XRecord:
44
                                        this.notify($"Object not implemented : {co.GetType().FullName}");
19✔
45
                                        return;
19✔
46
                        }
47

48

49
                        if (co is XRecord && !this.Configuration.WriteXRecords)
13,200!
50
                        {
×
51
                                return;
×
52
                        }
53

54
                        this._writer.Write(DxfCode.Start, co.ObjectName);
13,200✔
55

56
                        this.writeCommonObjectData(co);
13,200✔
57

58
                        switch (co)
13,200!
59
                        {
60
                                case BookColor bookColor:
61
                                        this.writeBookColor(bookColor);
10✔
62
                                        return;
10✔
63
                                case CadDictionary cadDictionary:
64
                                        this.writeDictionary(cadDictionary);
6,253✔
65
                                        return;
6,253✔
66
                                case DictionaryVariable dictvar:
67
                                        this.writeDictionaryVariable(dictvar);
310✔
68
                                        break;
310✔
69
                                case GeoData geodata:
70
                                        this.writeGeoData(geodata);
5✔
71
                                        break;
5✔
72
                                case Group group:
73
                                        this.writeGroup(group);
5✔
74
                                        break;
5✔
75
                                case ImageDefinition imageDefinition:
76
                                        this.writeImageDefinition(imageDefinition);
12✔
77
                                        return;
12✔
78
                                case Layout layout:
79
                                        this.writeLayout(layout);
625✔
80
                                        break;
625✔
81
                                case MLineStyle mlStyle:
82
                                        this.writeMLineStyle(mlStyle);
310✔
83
                                        break;
310✔
84
                                case MultiLeaderStyle multiLeaderlStyle:
85
                                        this.writeMultiLeaderStyle(multiLeaderlStyle);
310✔
86
                                        break;
310✔
87
                                case PlotSettings plotSettings:
88
                                        this.writePlotSettings(plotSettings);
×
89
                                        break;
×
90
                                case PdfUnderlayDefinition pdfUnderlayDefinition:
91
                                        this.writePdfUnderlayDefinition(pdfUnderlayDefinition);
12✔
92
                                        break;
12✔
93
                                case RasterVariables rasterVariables:
94
                                        this.writeRasterVariables(rasterVariables);
×
95
                                        break;
×
96
                                case Scale scale:
97
                                        this.writeScale(scale);
5,275✔
98
                                        break;
5,275✔
99
                                case SpatialFilter spatialFilter:
100
                                        this.writeSpatialFilter(spatialFilter);
31✔
101
                                        break;
31✔
102
                                case SortEntitiesTable sortensTable:
103
                                        this.writeSortentsTable(sortensTable);
42✔
104
                                        break;
42✔
105
                                case XRecord record:
106
                                        this.writeXRecord(record);
×
107
                                        break;
×
108
                                default:
109
                                        throw new NotImplementedException($"Object not implemented : {co.GetType().FullName}");
×
110
                        }
111

112
                        this.writeExtendedData(co.ExtendedData);
6,925✔
113
                }
13,219✔
114

115
                protected void writeBookColor(BookColor color)
116
                {
10✔
117
                        this._writer.Write(DxfCode.Subclass, DxfSubclassMarker.DbColor);
10✔
118

119
                        this._writer.Write(62, color.Color.GetApproxIndex());
10✔
120
                        this._writer.WriteTrueColor(420, color.Color);
10✔
121
                        this._writer.Write(430, $"{color.Name}${color.BookName}");
10✔
122
                }
10✔
123

124
                protected void writeDictionary(CadDictionary dict)
125
                {
6,253✔
126
                        this._writer.Write(DxfCode.Subclass, DxfSubclassMarker.Dictionary);
6,253✔
127

128
                        this._writer.Write(280, dict.HardOwnerFlag);
6,253✔
129
                        this._writer.Write(281, (int)dict.ClonningFlags);
6,253✔
130

131
                        foreach (NonGraphicalObject item in dict)
43,644✔
132
                        {
12,692✔
133
                                if (item is XRecord && !this.Configuration.WriteXRecords)
12,692✔
134
                                {
499✔
135
                                        return;
499✔
136
                                }
137

138
                                this._writer.Write(3, item.Name);
12,193✔
139
                                this._writer.Write(350, item.Handle);
12,193✔
140
                        }
12,193✔
141

142
                        //Add the entries as objects
143
                        foreach (CadObject item in dict)
41,418✔
144
                        {
12,078✔
145
                                this.Holder.Objects.Enqueue(item);
12,078✔
146
                        }
12,078✔
147

148
                        if(dict is CadDictionaryWithDefault withDefault)
5,754!
NEW
149
                        {
×
NEW
150
                                this._writer.Write(100, DxfSubclassMarker.DictionaryWithDefault);
×
NEW
151
                                this._writer.WriteHandle(340, withDefault.DefaultEntry);
×
NEW
152
                        }
×
153
                }
6,253✔
154

155
                protected void writeDictionaryVariable(DictionaryVariable dictvar)
156
                {
310✔
157
                        DxfClassMap map = DxfClassMap.Create<DictionaryVariable>();
310✔
158

159
                        this._writer.Write(100, DxfSubclassMarker.DictionaryVariables);
310✔
160

161
                        this._writer.Write(1, dictvar.Value, map);
310✔
162
                        this._writer.Write(280, dictvar.ObjectSchemaNumber, map);
310✔
163
                }
310✔
164

165
                protected void writePlotSettings(PlotSettings plot)
166
                {
625✔
167
                        DxfClassMap map = DxfClassMap.Create<PlotSettings>();
625✔
168

169
                        this._writer.Write(100, DxfSubclassMarker.PlotSettings);
625✔
170

171
                        this._writer.Write(1, plot.PageName, map);
625✔
172
                        this._writer.Write(2, plot.SystemPrinterName, map);
625✔
173

174
                        this._writer.Write(4, plot.PaperSize, map);
625✔
175

176
                        this._writer.Write(6, plot.PlotViewName, map);
625✔
177
                        this._writer.Write(7, plot.StyleSheet, map);
625✔
178

179
                        this._writer.Write(40, plot.UnprintableMargin.Left, map);
625✔
180
                        this._writer.Write(41, plot.UnprintableMargin.Bottom, map);
625✔
181
                        this._writer.Write(42, plot.UnprintableMargin.Right, map);
625✔
182
                        this._writer.Write(43, plot.UnprintableMargin.Top, map);
625✔
183
                        this._writer.Write(44, plot.PaperWidth, map);
625✔
184
                        this._writer.Write(45, plot.PaperHeight, map);
625✔
185
                        this._writer.Write(46, plot.PlotOriginX, map);
625✔
186
                        this._writer.Write(47, plot.PlotOriginY, map);
625✔
187
                        this._writer.Write(48, plot.WindowLowerLeftX, map);
625✔
188
                        this._writer.Write(49, plot.WindowLowerLeftY, map);
625✔
189

190
                        this._writer.Write(140, plot.WindowUpperLeftX, map);
625✔
191
                        this._writer.Write(141, plot.WindowUpperLeftY, map);
625✔
192
                        this._writer.Write(142, plot.NumeratorScale, map);
625✔
193
                        this._writer.Write(143, plot.DenominatorScale, map);
625✔
194

195
                        this._writer.Write(70, (short)plot.Flags, map);
625✔
196

197
                        this._writer.Write(72, (short)plot.PaperUnits, map);
625✔
198
                        this._writer.Write(73, (short)plot.PaperRotation, map);
625✔
199
                        this._writer.Write(74, (short)plot.PlotType, map);
625✔
200
                        this._writer.Write(75, plot.ScaledFit, map);
625✔
201
                        this._writer.Write(76, (short)plot.ShadePlotMode, map);
625✔
202
                        this._writer.Write(77, (short)plot.ShadePlotResolutionMode, map);
625✔
203
                        this._writer.Write(78, plot.ShadePlotDPI, map);
625✔
204
                        this._writer.Write(147, plot.PrintScale, map);
625✔
205

206
                        this._writer.Write(148, plot.PaperImageOrigin.X, map);
625✔
207
                        this._writer.Write(149, plot.PaperImageOrigin.Y, map);
625✔
208
                }
625✔
209

210
                protected void writePdfUnderlayDefinition(PdfUnderlayDefinition definition)
211
                {
12✔
212
                        DxfClassMap map = DxfClassMap.Create<PlotSettings>();
12✔
213

214
                        this._writer.Write(100, DxfSubclassMarker.UnderlayDefinition);
12✔
215

216
                        this._writer.Write(1, definition.File, map);
12✔
217
                        this._writer.Write(2, definition.Page, map);
12✔
218
                }
12✔
219

220
                protected void writeRasterVariables(RasterVariables variables)
221
                {
×
222
                        DxfClassMap map = DxfClassMap.Create<RasterVariables>();
×
223

224
                        this._writer.Write(100, DxfSubclassMarker.RasterVariables);
×
225

226
                        this._writer.Write(90, variables.ClassVersion, map);
×
227
                        this._writer.Write(70, variables.IsDisplayFrameShown ? 1 : 0, map);
×
228
                        this._writer.Write(71, (short)variables.DisplayQuality, map);
×
229
                        this._writer.Write(72, (short)variables.DisplayQuality, map);
×
230
                }
×
231

232
                protected void writeScale(Scale scale)
233
                {
5,275✔
234
                        this._writer.Write(100, DxfSubclassMarker.Scale);
5,275✔
235

236
                        this._writer.Write(70, 0);
5,275✔
237
                        this._writer.Write(300, scale.Name);
5,275✔
238
                        this._writer.Write(140, scale.PaperUnits);
5,275✔
239
                        this._writer.Write(141, scale.DrawingUnits);
5,275✔
240
                        this._writer.Write(290, scale.IsUnitScale ? (short)1 : (short)0);
5,275✔
241
                }
5,275✔
242

243
                protected void writeGeoData(GeoData geodata)
244
                {
5✔
245
                        DxfClassMap map = DxfClassMap.Create<GeoData>();
5✔
246

247
                        this._writer.Write(100, DxfSubclassMarker.GeoData, map);
5✔
248

249
                        switch (this.Version)
5✔
250
                        {
251
                                case ACadVersion.Unknown:
252
                                case ACadVersion.MC0_0:
253
                                case ACadVersion.AC1_2:
254
                                case ACadVersion.AC1_4:
255
                                case ACadVersion.AC1_50:
256
                                case ACadVersion.AC2_10:
257
                                case ACadVersion.AC1002:
258
                                case ACadVersion.AC1003:
259
                                case ACadVersion.AC1004:
260
                                case ACadVersion.AC1006:
261
                                case ACadVersion.AC1009:
262
                                case ACadVersion.AC1012:
263
                                case ACadVersion.AC1014:
264
                                case ACadVersion.AC1015:
265
                                case ACadVersion.AC1018:
266
                                case ACadVersion.AC1021:
267
                                        this._writer.Write(90, 1, map);
2✔
268
                                        break;
2✔
269
                                case ACadVersion.AC1024:
270
                                        this._writer.Write(90, 2, map);
1✔
271
                                        break;
1✔
272
                                case ACadVersion.AC1027:
273
                                case ACadVersion.AC1032:
274
                                        this._writer.Write(90, 3, map);
2✔
275
                                        break;
2✔
276
                        }
277

278
                        if (geodata.HostBlock != null)
5✔
279
                        {
5✔
280
                                this._writer.Write(330, geodata.HostBlock.Handle, map);
5✔
281
                        }
5✔
282

283
                        this._writer.Write(70, (short)geodata.CoordinatesType, map);
5✔
284

285
                        if (this.Version <= ACadVersion.AC1021)
5✔
286
                        {
2✔
287
                                this._writer.Write(40, geodata.ReferencePoint.Y, map);
2✔
288
                                this._writer.Write(41, geodata.ReferencePoint.X, map);
2✔
289
                                this._writer.Write(42, geodata.ReferencePoint.Z, map);
2✔
290
                                this._writer.Write(91, (int)geodata.HorizontalUnits, map);
2✔
291

292
                                this._writer.Write(10, geodata.DesignPoint, map);
2✔
293
                                this._writer.Write(11, XYZ.Zero, map);
2✔
294

295
                                this._writer.Write(210, geodata.UpDirection, map);
2✔
296

297
                                this._writer.Write(52, MathHelper.RadToDeg(System.Math.PI / 2.0 - geodata.NorthDirection.GetAngle()), map);
2✔
298

299
                                this._writer.Write(43, 1.0, map);
2✔
300
                                this._writer.Write(44, 1.0, map);
2✔
301
                                this._writer.Write(45, 1.0, map);
2✔
302

303
                                this._writer.Write(301, geodata.CoordinateSystemDefinition, map);
2✔
304
                                this._writer.Write(302, geodata.GeoRssTag, map);
2✔
305

306
                                this._writer.Write(46, geodata.UserSpecifiedScaleFactor, map);
2✔
307

308
                                this._writer.Write(303, string.Empty, map);
2✔
309
                                this._writer.Write(304, string.Empty, map);
2✔
310

311
                                this._writer.Write(305, geodata.ObservationFromTag, map);
2✔
312
                                this._writer.Write(306, geodata.ObservationToTag, map);
2✔
313
                                this._writer.Write(307, geodata.ObservationCoverageTag, map);
2✔
314

315
                                this._writer.Write(93, geodata.Points.Count, map);
2✔
316
                                foreach (var pt in geodata.Points)
6!
317
                                {
×
318
                                        this._writer.Write(12, pt.Source, map);
×
319
                                        this._writer.Write(13, pt.Destination, map);
×
320
                                }
×
321
                                this._writer.Write(96, geodata.Faces.Count, map);
2✔
322
                                foreach (var face in geodata.Faces)
6!
323
                                {
×
324
                                        this._writer.Write(97, face.Index1, map);
×
325
                                        this._writer.Write(98, face.Index2, map);
×
326
                                        this._writer.Write(99, face.Index3, map);
×
327
                                }
×
328
                                this._writer.Write(3, "CIVIL3D_DATA_BEGIN", map);
2✔
329

330
                                this._writer.Write(292, false, map);
2✔
331
                                this._writer.Write(14, geodata.ReferencePoint.Convert<XY>(), map);
2✔
332
                                this._writer.Write(15, geodata.ReferencePoint.Convert<XY>(), map);
2✔
333
                                this._writer.Write(93, 0, map);
2✔
334
                                this._writer.Write(94, 0, map);
2✔
335
                                this._writer.Write(293, false, map);
2✔
336

337
                                this._writer.Write(16, XY.Zero, map);
2✔
338
                                this._writer.Write(17, XY.Zero, map);
2✔
339

340
                                this._writer.Write(54, MathHelper.RadToDeg(System.Math.PI / 2.0 - geodata.NorthDirection.GetAngle()), map);
2✔
341
                                this._writer.Write(140, System.Math.PI / 2.0 - geodata.NorthDirection.GetAngle(), map);
2✔
342

343
                                this._writer.Write(95, (int)geodata.ScaleEstimationMethod, map);
2✔
344
                                this._writer.Write(141, geodata.UserSpecifiedScaleFactor, map);
2✔
345
                                this._writer.Write(294, geodata.EnableSeaLevelCorrection, map);
2✔
346
                                this._writer.Write(142, geodata.SeaLevelElevation, map);
2✔
347
                                this._writer.Write(143, geodata.CoordinateProjectionRadius, map);
2✔
348

349
                                this._writer.Write(4, "CIVIL3D_DATA_END", map);
2✔
350
                        }
2✔
351
                        else
352
                        {
3✔
353
                                this._writer.Write(10, geodata.DesignPoint, map);
3✔
354
                                this._writer.Write(11, geodata.ReferencePoint, map);
3✔
355
                                this._writer.Write(40, geodata.VerticalUnitScale, map);
3✔
356
                                this._writer.Write(91, (int)geodata.HorizontalUnits, map);
3✔
357
                                this._writer.Write(41, geodata.VerticalUnitScale, map);
3✔
358
                                this._writer.Write(92, (int)geodata.VerticalUnits, map);
3✔
359

360
                                this._writer.Write(210, geodata.UpDirection, map);
3✔
361

362
                                this._writer.Write(12, geodata.NorthDirection, map);
3✔
363

364
                                this._writer.Write(95, geodata.ScaleEstimationMethod, map);
3✔
365
                                this._writer.Write(141, geodata.UserSpecifiedScaleFactor, map);
3✔
366
                                this._writer.Write(294, geodata.EnableSeaLevelCorrection, map);
3✔
367
                                this._writer.Write(142, geodata.SeaLevelElevation, map);
3✔
368
                                this._writer.Write(143, geodata.CoordinateProjectionRadius, map);
3✔
369

370
                                this.writeLongTextValue(301, 303, geodata.CoordinateSystemDefinition);
3✔
371

372
                                this._writer.Write(302, geodata.GeoRssTag, map);
3✔
373
                                this._writer.Write(305, geodata.ObservationFromTag, map);
3✔
374
                                this._writer.Write(306, geodata.ObservationToTag, map);
3✔
375
                                this._writer.Write(307, geodata.ObservationCoverageTag, map);
3✔
376

377
                                this._writer.Write(93, geodata.Points.Count, map);
3✔
378
                                foreach (var pt in geodata.Points)
9!
379
                                {
×
380
                                        this._writer.Write(13, pt.Source, map);
×
381
                                        this._writer.Write(14, pt.Destination, map);
×
382
                                }
×
383

384
                                this._writer.Write(96, geodata.Faces.Count, map);
3✔
385

386
                                foreach (var face in geodata.Faces)
9!
387
                                {
×
388
                                        this._writer.Write(97, face.Index1, map);
×
389
                                        this._writer.Write(98, face.Index2, map);
×
390
                                        this._writer.Write(99, face.Index3, map);
×
391
                                }
×
392
                        }
3✔
393
                }
5✔
394

395
                protected void writeGroup(Group group)
396
                {
5✔
397
                        this._writer.Write(100, DxfSubclassMarker.Group);
5✔
398

399
                        this._writer.Write(300, group.Description);
5✔
400
                        this._writer.Write(70, group.IsUnnamed ? (short)1 : (short)0);
5!
401
                        this._writer.Write(71, group.Selectable ? (short)1 : (short)0);
5!
402

403
                        foreach (Entity entity in group.Entities)
35✔
404
                        {
10✔
405
                                this._writer.WriteHandle(340, entity);
10✔
406
                        }
10✔
407
                }
5✔
408

409
                protected void writeImageDefinition(ImageDefinition definition)
410
                {
12✔
411
                        DxfClassMap map = DxfClassMap.Create<ImageDefinition>();
12✔
412

413
                        this._writer.Write(100, DxfSubclassMarker.RasterImageDef);
12✔
414

415
                        this._writer.Write(90, definition.ClassVersion, map);
12✔
416
                        this._writer.Write(1, definition.FileName, map);
12✔
417

418
                        this._writer.Write(10, definition.Size, map);
12✔
419

420
                        this._writer.Write(280, definition.IsLoaded ? 1 : 0, map);
12!
421

422
                        this._writer.Write(281, (byte)definition.Units, map);
12✔
423
                }
12✔
424

425
                protected void writeLayout(Layout layout)
426
                {
625✔
427
                        DxfClassMap map = DxfClassMap.Create<Layout>();
625✔
428

429
                        this.writePlotSettings(layout);
625✔
430

431
                        this._writer.Write(100, DxfSubclassMarker.Layout);
625✔
432

433
                        this._writer.Write(1, layout.Name, map);
625✔
434

435
                        //this._writer.Write(70, (short) 1,map);
436
                        this._writer.Write(71, layout.TabOrder, map);
625✔
437

438
                        this._writer.Write(10, layout.MinLimits, map);
625✔
439
                        this._writer.Write(11, layout.MaxLimits, map);
625✔
440
                        this._writer.Write(12, layout.InsertionBasePoint, map);
625✔
441
                        this._writer.Write(13, layout.Origin, map);
625✔
442
                        this._writer.Write(14, layout.MinExtents, map);
625✔
443
                        this._writer.Write(15, layout.MaxExtents, map);
625✔
444
                        this._writer.Write(16, layout.XAxis, map);
625✔
445
                        this._writer.Write(17, layout.YAxis, map);
625✔
446

447
                        this._writer.Write(146, layout.Elevation, map);
625✔
448

449
                        this._writer.Write(76, (short)0, map);
625✔
450

451
                        this._writer.WriteHandle(330, layout.AssociatedBlock, map);
625✔
452
                }
625✔
453

454
                protected void writeMLineStyle(MLineStyle style)
455
                {
310✔
456
                        DxfClassMap map = DxfClassMap.Create<MLineStyle>();
310✔
457

458
                        this._writer.Write(100, DxfSubclassMarker.MLineStyle);
310✔
459

460
                        this._writer.Write(2, style.Name, map);
310✔
461

462
                        this._writer.Write(70, (short)style.Flags, map);
310✔
463

464
                        this._writer.Write(3, style.Description, map);
310✔
465

466
                        this._writer.Write(62, style.FillColor.GetApproxIndex(), map);
310✔
467

468
                        this._writer.Write(51, style.StartAngle, map);
310✔
469
                        this._writer.Write(52, style.EndAngle, map);
310✔
470
                        this._writer.Write(71, (short)style.Elements.Count, map);
310✔
471
                        foreach (MLineStyle.Element element in style.Elements)
930!
472
                        {
×
473
                                this._writer.Write(49, element.Offset, map);
×
474
                                this._writer.Write(62, element.Color.Index, map);
×
475
                                this._writer.Write(6, element.LineType.Name, map);
×
476
                        }
×
477
                }
310✔
478

479
                protected void writeMultiLeaderStyle(MultiLeaderStyle style)
480
                {
310✔
481
                        DxfClassMap map = DxfClassMap.Create<MultiLeaderStyle>();
310✔
482

483
                        this._writer.Write(100, DxfSubclassMarker.MLeaderStyle);
310✔
484

485
                        this._writer.Write(179, 2);
310✔
486
                        //        this._writer.Write(2, style.Name, map);
487
                        this._writer.Write(170, (short)style.ContentType, map);
310✔
488
                        this._writer.Write(171, (short)style.MultiLeaderDrawOrder, map);
310✔
489
                        this._writer.Write(172, (short)style.LeaderDrawOrder, map);
310✔
490
                        this._writer.Write(90, style.MaxLeaderSegmentsPoints, map);
310✔
491
                        this._writer.Write(40, style.FirstSegmentAngleConstraint, map);
310✔
492
                        this._writer.Write(41, style.SecondSegmentAngleConstraint, map);
310✔
493
                        this._writer.Write(173, (short)style.PathType, map);
310✔
494
                        this._writer.WriteCmColor(91, style.LineColor, map);
310✔
495
                        this._writer.WriteHandle(340, style.LeaderLineType);
310✔
496
                        this._writer.Write(92, (short)style.LeaderLineWeight, map);
310✔
497
                        this._writer.Write(290, style.EnableLanding, map);
310✔
498
                        this._writer.Write(42, style.LandingGap, map);
310✔
499
                        this._writer.Write(291, style.EnableDogleg, map);
310✔
500
                        this._writer.Write(43, style.LandingDistance, map);
310✔
501
                        this._writer.Write(3, style.Description, map);
310✔
502
                        this._writer.WriteHandle(341, style.Arrowhead);
310✔
503
                        this._writer.Write(44, style.ArrowheadSize, map);
310✔
504
                        this._writer.Write(300, style.DefaultTextContents, map);
310✔
505
                        this._writer.WriteHandle(342, style.TextStyle);
310✔
506
                        this._writer.Write(174, (short)style.TextLeftAttachment, map);
310✔
507
                        this._writer.Write(178, (short)style.TextRightAttachment, map);
310✔
508
                        this._writer.Write(175, style.TextAngle, map);
310✔
509
                        this._writer.Write(176, (short)style.TextAlignment, map);
310✔
510
                        this._writer.WriteCmColor(93, style.TextColor, map);
310✔
511
                        this._writer.Write(45, style.TextHeight, map);
310✔
512
                        this._writer.Write(292, style.TextFrame, map);
310✔
513
                        this._writer.Write(297, style.TextAlignAlwaysLeft, map);
310✔
514
                        this._writer.Write(46, style.AlignSpace, map);
310✔
515
                        this._writer.WriteHandle(343, style.BlockContent);
310✔
516
                        this._writer.WriteCmColor(94, style.BlockContentColor, map);
310✔
517

518
                        //        Write 3 doubles since group codes do not conform vector group codes
519
                        this._writer.Write(47, style.BlockContentScale.X, map);
310✔
520
                        this._writer.Write(49, style.BlockContentScale.Y, map);
310✔
521
                        this._writer.Write(140, style.BlockContentScale.Z, map);
310✔
522

523
                        this._writer.Write(293, style.EnableBlockContentScale, map);
310✔
524
                        this._writer.Write(141, style.BlockContentRotation, map);
310✔
525
                        this._writer.Write(294, style.EnableBlockContentRotation, map);
310✔
526
                        this._writer.Write(177, (short)style.BlockContentConnection, map);
310✔
527
                        this._writer.Write(142, style.ScaleFactor, map);
310✔
528
                        this._writer.Write(295, style.OverwritePropertyValue, map);
310✔
529
                        this._writer.Write(296, style.IsAnnotative, map);
310✔
530
                        this._writer.Write(143, style.BreakGapSize, map);
310✔
531
                        this._writer.Write(271, (short)style.TextAttachmentDirection, map);
310✔
532
                        this._writer.Write(272, (short)style.TextBottomAttachment, map);
310✔
533
                        this._writer.Write(273, (short)style.TextTopAttachment, map);
310✔
534
                        this._writer.Write(298, false); //        undocumented
310✔
535
                }
310✔
536

537
                private void writeSpatialFilter(SpatialFilter filter)
538
                {
31✔
539
                        DxfClassMap map = DxfClassMap.Create<SpatialFilter>();
31✔
540

541
                        this._writer.Write(100, DxfSubclassMarker.Filter);
31✔
542
                        this._writer.Write(100, DxfSubclassMarker.SpatialFilter);
31✔
543

544
                        this._writer.Write(70, (short)filter.BoundaryPoints.Count, map);
31✔
545
                        foreach (var pt in filter.BoundaryPoints)
265✔
546
                        {
86✔
547
                                this._writer.Write(10, pt, map);
86✔
548
                        }
86✔
549

550
                        this._writer.Write(210, filter.Normal, map);
31✔
551
                        this._writer.Write(11, filter.Origin, map);
31✔
552
                        this._writer.Write(71, (short)(filter.DisplayBoundary ? 1 : 0), map);
31!
553

554
                        this._writer.Write(72, filter.ClipFrontPlane ? 1 : 0, map);
31!
555
                        if (filter.ClipFrontPlane)
31!
556
                        {
×
557
                                this._writer.Write(40, filter.FrontDistance, map);
×
558
                        }
×
559

560
                        this._writer.Write(73, filter.ClipBackPlane ? 1 : 0, map);
31!
561
                        if (filter.ClipBackPlane)
31!
562
                        {
×
563
                                this._writer.Write(41, filter.BackDistance, map);
×
564
                        }
×
565

566
                        double[] array = new double[24]
31✔
567
                        {
31✔
568
                                filter.InverseInsertTransform.M00, filter.InverseInsertTransform.M01, filter.InverseInsertTransform.M02, filter.InverseInsertTransform.M03,
31✔
569
                                filter.InverseInsertTransform.M10, filter.InverseInsertTransform.M11, filter.InverseInsertTransform.M12, filter.InverseInsertTransform.M13,
31✔
570
                                filter.InverseInsertTransform.M20, filter.InverseInsertTransform.M21, filter.InverseInsertTransform.M22, filter.InverseInsertTransform.M23,
31✔
571
                                filter.InsertTransform.M00, filter.InsertTransform.M01, filter.InsertTransform.M02, filter.InsertTransform.M03,
31✔
572
                                filter.InsertTransform.M10, filter.InsertTransform.M11, filter.InsertTransform.M12, filter.InsertTransform.M13,
31✔
573
                                filter.InsertTransform.M20, filter.InsertTransform.M21, filter.InsertTransform.M22, filter.InsertTransform.M23
31✔
574
                        };
31✔
575

576
                        for (int i = 0; i < array.Length; i++)
1,550✔
577
                        {
744✔
578
                                this._writer.Write(40, array[i]);
744✔
579
                        }
744✔
580
                }
31✔
581

582
                private void writeSortentsTable(SortEntitiesTable e)
583
                {
42✔
584
                        this._writer.Write(DxfCode.Subclass, DxfSubclassMarker.SortentsTable);
42✔
585

586
                        this._writer.WriteHandle(330, e.BlockOwner);
42✔
587

588
                        foreach (SortEntitiesTable.Sorter item in e)
414✔
589
                        {
144✔
590
                                this._writer.WriteHandle(331, item.Entity);
144✔
591
                                this._writer.Write(5, item.SortHandle);
144✔
592
                        }
144✔
593
                }
42✔
594

595
                protected void writeXRecord(XRecord e)
596
                {
×
597
                        this._writer.Write(DxfCode.Subclass, DxfSubclassMarker.XRecord);
×
598

599
                        foreach (var item in e.Entries)
×
600
                        {
×
601
                                this._writer.Write(item.Code, item.Value);
×
602
                        }
×
603
                }
×
604
        }
605
}
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

© 2026 Coveralls, Inc