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

DomCR / ACadSharp / 16808321049

07 Aug 2025 03:06PM UTC coverage: 78.476% (+3.3%) from 75.198%
16808321049

push

github

web-flow
Merge pull request #726 from DomCR/issue-719_xclip-SPATIAL_FILTER

issue-719 SPATIAL_FILTER

6487 of 8986 branches covered (72.19%)

Branch coverage included in aggregate %.

181 of 243 new or added lines in 13 files covered. (74.49%)

171 existing lines in 3 files now uncovered.

25243 of 31447 relevant lines covered (80.27%)

105162.02 hits per line

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

84.07
/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; } }
945✔
14

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

20
                protected override void writeSection()
21
                {
315✔
22
                        while (this.Holder.Objects.Any())
12,596✔
23
                        {
12,281✔
24
                                CadObject item = this.Holder.Objects.Dequeue();
12,281✔
25

26
                                this.writeObject(item);
12,281✔
27
                        }
12,281✔
28
                }
315✔
29

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

47

48
                        if (co is XRecord && !this.Configuration.WriteXRecords)
12,262!
49
                        {
×
50
                                return;
×
51
                        }
52

53
                        this._writer.Write(DxfCode.Start, co.ObjectName);
12,262✔
54

55
                        this.writeCommonObjectData(co);
12,262✔
56

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

111
                        this.writeExtendedData(co.ExtendedData);
6,302✔
112
                }
12,281✔
113

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

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

123
                protected void writeDictionary(CadDictionary e)
124
                {
5,938✔
125
                        this._writer.Write(DxfCode.Subclass, DxfSubclassMarker.Dictionary);
5,938✔
126

127
                        this._writer.Write(280, e.HardOwnerFlag);
5,938✔
128
                        this._writer.Write(281, (int)e.ClonningFlags);
5,938✔
129

130
                        foreach (NonGraphicalObject item in e)
40,932✔
131
                        {
11,783✔
132
                                if (item is XRecord && !this.Configuration.WriteXRecords)
11,783✔
133
                                {
448✔
134
                                        return;
448✔
135
                                }
136

137
                                this._writer.Write(3, item.Name);
11,335✔
138
                                this._writer.Write(350, item.Handle);
11,335✔
139
                        }
11,335✔
140

141
                        //Add the entries as objects
142
                        foreach (CadObject item in e)
38,914✔
143
                        {
11,222✔
144
                                this.Holder.Objects.Enqueue(item);
11,222✔
145
                        }
11,222✔
146
                }
5,938✔
147

148
                protected void writeDictionaryVariable(DictionaryVariable dictvar)
149
                {
×
150
                        DxfClassMap map = DxfClassMap.Create<DictionaryVariable>();
×
151

152
                        this._writer.Write(100, DxfSubclassMarker.DictionaryVariables);
×
153

154
                        this._writer.Write(1, dictvar.Value, map);
×
155
                        this._writer.Write(280, dictvar.ObjectSchemaNumber, map);
×
156
                }
×
157

158
                protected void writePlotSettings(PlotSettings plot)
159
                {
595✔
160
                        DxfClassMap map = DxfClassMap.Create<PlotSettings>();
595✔
161

162
                        this._writer.Write(100, DxfSubclassMarker.PlotSettings);
595✔
163

164
                        this._writer.Write(1, plot.PageName, map);
595✔
165
                        this._writer.Write(2, plot.SystemPrinterName, map);
595✔
166

167
                        this._writer.Write(4, plot.PaperSize, map);
595✔
168

169
                        this._writer.Write(6, plot.PlotViewName, map);
595✔
170
                        this._writer.Write(7, plot.StyleSheet, map);
595✔
171

172
                        this._writer.Write(40, plot.UnprintableMargin.Left, map);
595✔
173
                        this._writer.Write(41, plot.UnprintableMargin.Bottom, map);
595✔
174
                        this._writer.Write(42, plot.UnprintableMargin.Right, map);
595✔
175
                        this._writer.Write(43, plot.UnprintableMargin.Top, map);
595✔
176
                        this._writer.Write(44, plot.PaperWidth, map);
595✔
177
                        this._writer.Write(45, plot.PaperHeight, map);
595✔
178
                        this._writer.Write(46, plot.PlotOriginX, map);
595✔
179
                        this._writer.Write(47, plot.PlotOriginY, map);
595✔
180
                        this._writer.Write(48, plot.WindowLowerLeftX, map);
595✔
181
                        this._writer.Write(49, plot.WindowLowerLeftY, map);
595✔
182

183
                        this._writer.Write(140, plot.WindowUpperLeftX, map);
595✔
184
                        this._writer.Write(141, plot.WindowUpperLeftY, map);
595✔
185
                        this._writer.Write(142, plot.NumeratorScale, map);
595✔
186
                        this._writer.Write(143, plot.DenominatorScale, map);
595✔
187

188
                        this._writer.Write(70, (short)plot.Flags, map);
595✔
189

190
                        this._writer.Write(72, (short)plot.PaperUnits, map);
595✔
191
                        this._writer.Write(73, (short)plot.PaperRotation, map);
595✔
192
                        this._writer.Write(74, (short)plot.PlotType, map);
595✔
193
                        this._writer.Write(75, plot.ScaledFit, map);
595✔
194
                        this._writer.Write(76, (short)plot.ShadePlotMode, map);
595✔
195
                        this._writer.Write(77, (short)plot.ShadePlotResolutionMode, map);
595✔
196
                        this._writer.Write(78, plot.ShadePlotDPI, map);
595✔
197
                        this._writer.Write(147, plot.PrintScale, map);
595✔
198

199
                        this._writer.Write(148, plot.PaperImageOrigin.X, map);
595✔
200
                        this._writer.Write(149, plot.PaperImageOrigin.Y, map);
595✔
201
                }
595✔
202

203
                protected void writePdfUnderlayDefinition(PdfUnderlayDefinition definition)
204
                {
12✔
205
                        DxfClassMap map = DxfClassMap.Create<PlotSettings>();
12✔
206

207
                        this._writer.Write(100, DxfSubclassMarker.UnderlayDefinition);
12✔
208

209
                        this._writer.Write(1, definition.File, map);
12✔
210
                        this._writer.Write(2, definition.Page, map);
12✔
211
                }
12✔
212

213
                protected void writeRasterVariables(RasterVariables variables)
214
                {
×
215
                        DxfClassMap map = DxfClassMap.Create<RasterVariables>();
×
216

217
                        this._writer.Write(100, DxfSubclassMarker.RasterVariables);
×
218

219
                        this._writer.Write(90, variables.ClassVersion, map);
×
220
                        this._writer.Write(70, variables.IsDisplayFrameShown ? 1 : 0, map);
×
221
                        this._writer.Write(71, (short)variables.DisplayQuality, map);
×
222
                        this._writer.Write(72, (short)variables.DisplayQuality, map);
×
223
                }
×
224

225
                protected void writeScale(Scale scale)
226
                {
5,020✔
227
                        this._writer.Write(100, DxfSubclassMarker.Scale);
5,020✔
228

229
                        this._writer.Write(70, 0);
5,020✔
230
                        this._writer.Write(300, scale.Name);
5,020✔
231
                        this._writer.Write(140, scale.PaperUnits);
5,020✔
232
                        this._writer.Write(141, scale.DrawingUnits);
5,020✔
233
                        this._writer.Write(290, scale.IsUnitScale ? (short)1 : (short)0);
5,020✔
234
                }
5,020✔
235

236
                protected void writeGeoData(GeoData geodata)
237
                {
5✔
238
                        DxfClassMap map = DxfClassMap.Create<GeoData>();
5✔
239

240
                        this._writer.Write(100, DxfSubclassMarker.GeoData, map);
5✔
241

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

271
                        if (geodata.HostBlock != null)
5✔
272
                        {
5✔
273
                                this._writer.Write(330, geodata.HostBlock.Handle, map);
5✔
274
                        }
5✔
275

276
                        this._writer.Write(70, (short)geodata.CoordinatesType, map);
5✔
277

278
                        if (this.Version <= ACadVersion.AC1021)
5✔
279
                        {
2✔
280
                                this._writer.Write(40, geodata.ReferencePoint.Y, map);
2✔
281
                                this._writer.Write(41, geodata.ReferencePoint.X, map);
2✔
282
                                this._writer.Write(42, geodata.ReferencePoint.Z, map);
2✔
283
                                this._writer.Write(91, (int)geodata.HorizontalUnits, map);
2✔
284

285
                                this._writer.Write(10, geodata.DesignPoint, map);
2✔
286
                                this._writer.Write(11, XYZ.Zero, map);
2✔
287

288
                                this._writer.Write(210, geodata.UpDirection, map);
2✔
289

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

292
                                this._writer.Write(43, 1.0, map);
2✔
293
                                this._writer.Write(44, 1.0, map);
2✔
294
                                this._writer.Write(45, 1.0, map);
2✔
295

296
                                this._writer.Write(301, geodata.CoordinateSystemDefinition, map);
2✔
297
                                this._writer.Write(302, geodata.GeoRssTag, map);
2✔
298

299
                                this._writer.Write(46, geodata.UserSpecifiedScaleFactor, map);
2✔
300

301
                                this._writer.Write(303, string.Empty, map);
2✔
302
                                this._writer.Write(304, string.Empty, map);
2✔
303

304
                                this._writer.Write(305, geodata.ObservationFromTag, map);
2✔
305
                                this._writer.Write(306, geodata.ObservationToTag, map);
2✔
306
                                this._writer.Write(307, geodata.ObservationCoverageTag, map);
2✔
307

308
                                this._writer.Write(93, geodata.Points.Count, map);
2✔
309
                                foreach (var pt in geodata.Points)
6!
310
                                {
×
311
                                        this._writer.Write(12, pt.Source, map);
×
312
                                        this._writer.Write(13, pt.Destination, map);
×
313
                                }
×
314
                                this._writer.Write(96, geodata.Faces.Count, map);
2✔
315
                                foreach (var face in geodata.Faces)
6!
316
                                {
×
317
                                        this._writer.Write(97, face.Index1, map);
×
318
                                        this._writer.Write(98, face.Index2, map);
×
319
                                        this._writer.Write(99, face.Index3, map);
×
320
                                }
×
321
                                this._writer.Write(3, "CIVIL3D_DATA_BEGIN", map);
2✔
322

323
                                this._writer.Write(292, false, map);
2✔
324
                                this._writer.Write(14, geodata.ReferencePoint.Convert<XY>(), map);
2✔
325
                                this._writer.Write(15, geodata.ReferencePoint.Convert<XY>(), map);
2✔
326
                                this._writer.Write(93, 0, map);
2✔
327
                                this._writer.Write(94, 0, map);
2✔
328
                                this._writer.Write(293, false, map);
2✔
329

330
                                this._writer.Write(16, XY.Zero, map);
2✔
331
                                this._writer.Write(17, XY.Zero, map);
2✔
332

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

336
                                this._writer.Write(95, (int)geodata.ScaleEstimationMethod, map);
2✔
337
                                this._writer.Write(141, geodata.UserSpecifiedScaleFactor, map);
2✔
338
                                this._writer.Write(294, geodata.EnableSeaLevelCorrection, map);
2✔
339
                                this._writer.Write(142, geodata.SeaLevelElevation, map);
2✔
340
                                this._writer.Write(143, geodata.CoordinateProjectionRadius, map);
2✔
341

342
                                this._writer.Write(4, "CIVIL3D_DATA_END", map);
2✔
343
                        }
2✔
344
                        else
345
                        {
3✔
346
                                this._writer.Write(10, geodata.DesignPoint, map);
3✔
347
                                this._writer.Write(11, geodata.ReferencePoint, map);
3✔
348
                                this._writer.Write(40, geodata.VerticalUnitScale, map);
3✔
349
                                this._writer.Write(91, (int)geodata.HorizontalUnits, map);
3✔
350
                                this._writer.Write(41, geodata.VerticalUnitScale, map);
3✔
351
                                this._writer.Write(92, (int)geodata.VerticalUnits, map);
3✔
352

353
                                this._writer.Write(210, geodata.UpDirection, map);
3✔
354

355
                                this._writer.Write(12, geodata.NorthDirection, map);
3✔
356

357
                                this._writer.Write(95, geodata.ScaleEstimationMethod, map);
3✔
358
                                this._writer.Write(141, geodata.UserSpecifiedScaleFactor, map);
3✔
359
                                this._writer.Write(294, geodata.EnableSeaLevelCorrection, map);
3✔
360
                                this._writer.Write(142, geodata.SeaLevelElevation, map);
3✔
361
                                this._writer.Write(143, geodata.CoordinateProjectionRadius, map);
3✔
362

363
                                this.writeLongTextValue(301, 303, geodata.CoordinateSystemDefinition);
3✔
364

365
                                this._writer.Write(302, geodata.GeoRssTag, map);
3✔
366
                                this._writer.Write(305, geodata.ObservationFromTag, map);
3✔
367
                                this._writer.Write(306, geodata.ObservationToTag, map);
3✔
368
                                this._writer.Write(307, geodata.ObservationCoverageTag, map);
3✔
369

370
                                this._writer.Write(93, geodata.Points.Count, map);
3✔
371
                                foreach (var pt in geodata.Points)
9!
372
                                {
×
373
                                        this._writer.Write(13, pt.Source, map);
×
374
                                        this._writer.Write(14, pt.Destination, map);
×
375
                                }
×
376

377
                                this._writer.Write(96, geodata.Faces.Count, map);
3✔
378

379
                                foreach (var face in geodata.Faces)
9!
380
                                {
×
381
                                        this._writer.Write(97, face.Index1, map);
×
382
                                        this._writer.Write(98, face.Index2, map);
×
383
                                        this._writer.Write(99, face.Index3, map);
×
384
                                }
×
385
                        }
3✔
386
                }
5✔
387

388
                protected void writeGroup(Group group)
389
                {
5✔
390
                        this._writer.Write(100, DxfSubclassMarker.Group);
5✔
391

392
                        this._writer.Write(300, group.Description);
5✔
393
                        this._writer.Write(70, group.IsUnnamed ? (short)1 : (short)0);
5!
394
                        this._writer.Write(71, group.Selectable ? (short)1 : (short)0);
5!
395

396
                        foreach (Entity entity in group.Entities)
35✔
397
                        {
10✔
398
                                this._writer.WriteHandle(340, entity);
10✔
399
                        }
10✔
400
                }
5✔
401

402
                protected void writeImageDefinition(ImageDefinition definition)
403
                {
12✔
404
                        DxfClassMap map = DxfClassMap.Create<ImageDefinition>();
12✔
405

406
                        this._writer.Write(100, DxfSubclassMarker.RasterImageDef);
12✔
407

408
                        this._writer.Write(90, definition.ClassVersion, map);
12✔
409
                        this._writer.Write(1, definition.FileName, map);
12✔
410

411
                        this._writer.Write(10, definition.Size, map);
12✔
412

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

415
                        this._writer.Write(281, (byte)definition.Units, map);
12✔
416
                }
12✔
417

418
                protected void writeLayout(Layout layout)
419
                {
595✔
420
                        DxfClassMap map = DxfClassMap.Create<Layout>();
595✔
421

422
                        this.writePlotSettings(layout);
595✔
423

424
                        this._writer.Write(100, DxfSubclassMarker.Layout);
595✔
425

426
                        this._writer.Write(1, layout.Name, map);
595✔
427

428
                        //this._writer.Write(70, (short) 1,map);
429
                        this._writer.Write(71, layout.TabOrder, map);
595✔
430

431
                        this._writer.Write(10, layout.MinLimits, map);
595✔
432
                        this._writer.Write(11, layout.MaxLimits, map);
595✔
433
                        this._writer.Write(12, layout.InsertionBasePoint, map);
595✔
434
                        this._writer.Write(13, layout.Origin, map);
595✔
435
                        this._writer.Write(14, layout.MinExtents, map);
595✔
436
                        this._writer.Write(15, layout.MaxExtents, map);
595✔
437
                        this._writer.Write(16, layout.XAxis, map);
595✔
438
                        this._writer.Write(17, layout.YAxis, map);
595✔
439

440
                        this._writer.Write(146, layout.Elevation, map);
595✔
441

442
                        this._writer.Write(76, (short)0, map);
595✔
443

444
                        this._writer.WriteHandle(330, layout.AssociatedBlock, map);
595✔
445
                }
595✔
446

447
                protected void writeMLineStyle(MLineStyle style)
448
                {
295✔
449
                        DxfClassMap map = DxfClassMap.Create<MLineStyle>();
295✔
450

451
                        this._writer.Write(100, DxfSubclassMarker.MLineStyle);
295✔
452

453
                        this._writer.Write(2, style.Name, map);
295✔
454

455
                        this._writer.Write(70, (short)style.Flags, map);
295✔
456

457
                        this._writer.Write(3, style.Description, map);
295✔
458

459
                        this._writer.Write(62, style.FillColor.GetApproxIndex(), map);
295✔
460

461
                        this._writer.Write(51, style.StartAngle, map);
295✔
462
                        this._writer.Write(52, style.EndAngle, map);
295✔
463
                        this._writer.Write(71, (short)style.Elements.Count, map);
295✔
464
                        foreach (MLineStyle.Element element in style.Elements)
885!
465
                        {
×
466
                                this._writer.Write(49, element.Offset, map);
×
467
                                this._writer.Write(62, element.Color.Index, map);
×
468
                                this._writer.Write(6, element.LineType.Name, map);
×
469
                        }
×
470
                }
295✔
471

472
                protected void writeMultiLeaderStyle(MultiLeaderStyle style)
473
                {
295✔
474
                        DxfClassMap map = DxfClassMap.Create<MultiLeaderStyle>();
295✔
475

476
                        this._writer.Write(100, DxfSubclassMarker.MLeaderStyle);
295✔
477

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

511
                        //        Write 3 doubles since group codes do not conform vector group codes
512
                        this._writer.Write(47, style.BlockContentScale.X, map);
295✔
513
                        this._writer.Write(49, style.BlockContentScale.Y, map);
295✔
514
                        this._writer.Write(140, style.BlockContentScale.Z, map);
295✔
515

516
                        this._writer.Write(293, style.EnableBlockContentScale, map);
295✔
517
                        this._writer.Write(141, style.BlockContentRotation, map);
295✔
518
                        this._writer.Write(294, style.EnableBlockContentRotation, map);
295✔
519
                        this._writer.Write(177, (short)style.BlockContentConnection, map);
295✔
520
                        this._writer.Write(142, style.ScaleFactor, map);
295✔
521
                        this._writer.Write(295, style.OverwritePropertyValue, map);
295✔
522
                        this._writer.Write(296, style.IsAnnotative, map);
295✔
523
                        this._writer.Write(143, style.BreakGapSize, map);
295✔
524
                        this._writer.Write(271, (short)style.TextAttachmentDirection, map);
295✔
525
                        this._writer.Write(272, (short)style.TextBottomAttachment, map);
295✔
526
                        this._writer.Write(273, (short)style.TextTopAttachment, map);
295✔
527
                        this._writer.Write(298, false); //        undocumented
295✔
528
                }
295✔
529

530
                private void writeSpatialFilter(SpatialFilter filter)
531
                {
31✔
532
                        DxfClassMap map = DxfClassMap.Create<SpatialFilter>();
31✔
533

534
                        this._writer.Write(100, DxfSubclassMarker.Filter);
31✔
535
                        this._writer.Write(100, DxfSubclassMarker.SpatialFilter);
31✔
536

537
                        this._writer.Write(70, (short)filter.BoundaryPoints.Count, map);
31✔
538
                        foreach (var pt in filter.BoundaryPoints)
265✔
539
                        {
86✔
540
                                this._writer.Write(10, pt, map);
86✔
541
                        }
86✔
542

543
                        this._writer.Write(210, filter.Normal, map);
31✔
544
                        this._writer.Write(11, filter.Origin, map);
31✔
545
                        this._writer.Write(71, (short)(filter.DisplayBoundary ? 1 : 0), map);
31!
546

547
                        this._writer.Write(72, filter.ClipFrontPlane ? 1 : 0, map);
31!
548
                        if (filter.ClipFrontPlane)
31!
NEW
549
                        {
×
NEW
550
                                this._writer.Write(40, filter.FrontDistance, map);
×
NEW
551
                        }
×
552

553
                        this._writer.Write(73, filter.ClipBackPlane ? 1 : 0, map);
31!
554
                        if (filter.ClipBackPlane)
31!
NEW
555
                        {
×
NEW
556
                                this._writer.Write(41, filter.BackDistance, map);
×
NEW
557
                        }
×
558

559
                        double[] array = new double[24]
31✔
560
                        {
31✔
561
                                filter.InverseInsertTransform.M00, filter.InverseInsertTransform.M01, filter.InverseInsertTransform.M02, filter.InverseInsertTransform.M03,
31✔
562
                                filter.InverseInsertTransform.M10, filter.InverseInsertTransform.M11, filter.InverseInsertTransform.M12, filter.InverseInsertTransform.M13,
31✔
563
                                filter.InverseInsertTransform.M20, filter.InverseInsertTransform.M21, filter.InverseInsertTransform.M22, filter.InverseInsertTransform.M23,
31✔
564
                                filter.InsertTransform.M00, filter.InsertTransform.M01, filter.InsertTransform.M02, filter.InsertTransform.M03,
31✔
565
                                filter.InsertTransform.M10, filter.InsertTransform.M11, filter.InsertTransform.M12, filter.InsertTransform.M13,
31✔
566
                                filter.InsertTransform.M20, filter.InsertTransform.M21, filter.InsertTransform.M22, filter.InsertTransform.M23
31✔
567
                        };
31✔
568

569
                        for (int i = 0; i < array.Length; i++)
1,550✔
570
                        {
744✔
571
                                this._writer.Write(40, array[i]);
744✔
572
                        }
744✔
573
                }
31✔
574

575
                private void writeSortentsTable(SortEntitiesTable e)
576
                {
44✔
577
                        this._writer.Write(DxfCode.Subclass, DxfSubclassMarker.SortentsTable);
44✔
578

579
                        this._writer.WriteHandle(330, e.BlockOwner);
44✔
580

581
                        foreach (SortEntitiesTable.Sorter item in e)
420✔
582
                        {
144✔
583
                                this._writer.WriteHandle(331, item.Entity);
144✔
584
                                this._writer.Write(5, item.SortHandle);
144✔
585
                        }
144✔
586
                }
44✔
587

588
                protected void writeXRecord(XRecord e)
589
                {
×
590
                        this._writer.Write(DxfCode.Subclass, DxfSubclassMarker.XRecord);
×
591

592
                        foreach (var item in e.Entries)
×
593
                        {
×
594
                                this._writer.Write(item.Code, item.Value);
×
595
                        }
×
596
                }
×
597
        }
598
}
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