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

DomCR / ACadSharp / 11953129551

21 Nov 2024 12:22PM UTC coverage: 75.626% (-0.04%) from 75.668%
11953129551

Pull #490

github

web-flow
Merge eb4bd3071 into d11de9fcb
Pull Request #490: Issue 474 header defaults

4941 of 7225 branches covered (68.39%)

Branch coverage included in aggregate %.

28 of 41 new or added lines in 1 file covered. (68.29%)

17 existing lines in 2 files now uncovered.

19782 of 25466 relevant lines covered (77.68%)

36034.51 hits per line

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

85.37
/src/ACadSharp/Header/CadHeader.cs
1
using ACadSharp.Attributes;
2
using ACadSharp.Entities;
3
using ACadSharp.Objects;
4
using ACadSharp.Tables;
5
using ACadSharp.Types.Units;
6
using CSMath;
7
using CSUtilities.Extensions;
8
using System;
9
using System.Collections.Generic;
10
using System.Linq;
11
using System.Reflection;
12

13
namespace ACadSharp.Header
14
{
15
        public class CadHeader
16
        {
17
                /// <summary>
18
                /// The Drawing database version number.
19
                /// </summary>
20
                /// <remarks>
21
                /// System variable ACADVER.
22
                /// </remarks>
23
                [CadSystemVariable("$ACADVER", DxfCode.Text)]
24
                public string VersionString
25
                {
26
                        get { return this.Version.ToString(); }
342✔
27
                        set
28
                        {
166✔
29
                                this.Version = CadUtils.GetVersionFromName(value);
166✔
30
                        }
166✔
31
                }
32

33
                public ACadVersion Version { get; set; } = ACadVersion.AC1018;
20,140✔
34

35
                /// <summary>
36
                /// Maintenance version number(should be ignored)
37
                /// </summary>
38
                /// <remarks>
39
                /// System variable ACADMAINTVER.
40
                /// </remarks>
41
                [CadSystemVariable(DxfReferenceType.Ignored, "$ACADMAINTVER", 70)]
42
                public short MaintenanceVersion { get; internal set; } = 0;
1,253✔
43

44
                /// <summary>
45
                /// Drawing code page.
46
                /// </summary>
47
                /// <remarks>
48
                /// System variable DWGCODEPAGE
49
                /// </remarks>
50
                [CadSystemVariable("$DWGCODEPAGE", 3)]
51
                public string CodePage { get; set; } = "ANSI_1252";
925✔
52

53
                /// <summary>
54
                /// Displays the name of the last person who modified the file
55
                /// </summary>
56
                /// <remarks>
57
                /// System variable LASTSAVEDBY
58
                /// </remarks>
59
                [CadSystemVariable(DxfReferenceType.Ignored, "$LASTSAVEDBY", 3)]
60
                public string LastSavedBy { get; set; } = "ACadSharp";
590✔
61

62
                /// <summary>
63
                /// The default value is 0.
64
                /// Read only.
65
                /// </summary>
66
                /// <remarks>
67
                /// System variable REQUIREDVERSIONS <br/>
68
                /// Only in <see cref="ACadVersion.AC1024"/> or above
69
                /// </remarks>
70
                [CadSystemVariable(DxfReferenceType.Ignored, "$REQUIREDVERSIONS", 70)]
71
                public long RequiredVersions { get; set; }
81✔
72

73
                /// <summary>
74
                /// </summary>
75
                /// <remarks>
76
                /// System variable DIMASO <br/>
77
                /// Obsolete; see DIMASSOC
78
                /// </remarks>
79
                [CadSystemVariable("$DIMASO", 70)]
80
                public bool AssociatedDimensions { get; set; } = true;
785✔
81

82
                /// <summary>
83
                /// System variable DIMSHO
84
                /// </summary>
85
                [CadSystemVariable("$DIMSHO", 70)]
86
                public bool UpdateDimensionsWhileDragging { get; set; } = true;
785✔
87

88
                /// <summary>
89
                /// Undocumented
90
                /// </summary>
91
                /// <remarks>
92
                /// System variable DIMSAV
93
                /// </remarks>
94
                internal bool DIMSAV { get; set; }
23✔
95

96
                /// <summary>
97
                /// Sets drawing units
98
                /// </summary>
99
                /// <remarks>
100
                /// System variable MEASUREMENT
101
                /// </remarks>
102
                [CadSystemVariable("$MEASUREMENT", 70)]
103
                public MeasurementUnits MeasurementUnits { get; set; }
132✔
104

105
                /// <summary>
106
                /// Governs the generation of linetype patterns around the vertices of a 2D polyline:<br/>
107
                /// 1 = Linetype is generated in a continuous pattern around vertices of the polyline<br/>
108
                /// 0 = Each segment of the polyline starts and ends with a dash
109
                /// </summary>
110
                /// <remarks>
111
                /// System variable PLINEGEN
112
                /// </remarks>
113
                [CadSystemVariable("$PLINEGEN", 70)]
114
                public bool PolylineLineTypeGeneration { get; set; } = false;
887✔
115

116
                /// <summary>
117
                /// System variable ORTHOMODE.
118
                /// Ortho mode on if nonzero.
119
                /// </summary>
120
                [CadSystemVariable("$ORTHOMODE", 70)]
121
                public bool OrthoMode { get; set; }
305✔
122

123
                /// <summary>
124
                /// System variable REGENMODE.
125
                /// REGENAUTO mode on if nonzero
126
                /// </summary>
127
                [CadSystemVariable("$REGENMODE", 70)]
128
                public bool RegenerationMode { get; set; }
305✔
129

130
                /// <summary>
131
                /// Fill mode on if nonzero
132
                /// </summary>
133
                /// <remarks>
134
                /// System variable FILLMODE.
135
                /// </remarks>
136
                [CadSystemVariable("$FILLMODE", 70)]
137
                public bool FillMode { get; set; } = true;
785✔
138

139
                /// <summary>
140
                /// Quick Text mode on if nonzero
141
                /// </summary>
142
                /// <remarks>
143
                /// System variable QTEXTMODE.
144
                /// </remarks>
145
                [CadSystemVariable("$QTEXTMODE", 70)]
146
                public bool QuickTextMode { get; set; }
305✔
147

148
                /// <summary>
149
                /// Controls paper space linetype scaling.
150
                /// </summary>
151
                /// <remarks>
152
                /// System variable PSLTSCALE.
153
                /// </remarks>
154
                [CadSystemVariable("$PSLTSCALE", 70)]
155
                public SpaceLineTypeScaling PaperSpaceLineTypeScaling { get; set; } = SpaceLineTypeScaling.Normal;
887✔
156

157
                /// <summary>
158
                /// Nonzero if limits checking is on
159
                /// System variable LIMCHECK.
160
                /// </summary>
161
                [CadSystemVariable("$LIMCHECK", 70)]
162
                public bool LimitCheckingOn { get; set; }
305✔
163

164
                /// <summary>
165
                /// System variable BLIPMODE        ??
166
                /// </summary>
167
                [CadSystemVariable("$BLIPMODE", 70)]
168
                public bool BlipMode { get; set; }
45✔
169

170
                /// <summary>
171
                /// Controls the user timer for the drawing
172
                /// System variable USRTIMER
173
                /// </summary>
174
                [CadSystemVariable("$USRTIMER", 70)]
175
                public bool UserTimer { get; set; }
305✔
176

177
                /// <summary>
178
                /// Determines the object type created by the SKETCH command
179
                /// System variable SKPOLY
180
                /// </summary>
181
                [CadSystemVariable("$SKPOLY", 70)]
182
                public bool SketchPolylines { get; set; }
305✔
183

184
                /// <summary>
185
                /// Represents angular direction.
186
                /// System variable ANGDIR
187
                /// </summary>
188
                [CadSystemVariable("$ANGDIR", 70)]
189
                public AngularDirection AngularDirection { get; set; } = AngularDirection.ClockWise;
887✔
190

191
                /// <summary>
192
                /// Controls the display of helixes and smoothed mesh objects.
193
                /// System variable SPLFRAME
194
                /// </summary>
195
                [CadSystemVariable("$SPLFRAME", 70)]
196
                public bool ShowSplineControlPoints { get; set; }
305✔
197

198
                /// <summary>
199
                /// Mirror text if nonzero <br/>
200
                /// System variable MIRRTEXT
201
                /// </summary>
202
                [CadSystemVariable("$MIRRTEXT", 70)]
203
                public bool MirrorText { get; set; } = false;
887✔
204

205
                /// <summary>
206
                /// Determines whether input for the DVIEW and VPOINT command evaluated as relative to the WCS or current UCS <br/>
207
                /// System variable WORLDVIEW
208
                /// </summary>
209
                [CadSystemVariable("$WORLDVIEW", 70)]
210
                public bool WorldView { get; set; }
305✔
211

212
                /// <summary>
213
                /// 1 for previous release compatibility mode; 0 otherwise <br/>
214
                /// System variable TILEMODE
215
                /// </summary>
216
                [CadSystemVariable("$TILEMODE", 70)]
217
                public bool ShowModelSpace { get; set; }
305✔
218

219
                /// <summary>
220
                /// Limits checking in paper space when nonzero <br/>
221
                /// System variable PLIMCHECK
222
                /// </summary>
223
                [CadSystemVariable("$PLIMCHECK", 70)]
224
                public bool PaperSpaceLimitsChecking { get; set; }
305✔
225

226
                /// <summary>
227
                /// Controls the properties of xref-dependent layers: <br/>
228
                /// 0 = Don't retain xref-dependent visibility settings <br/>
229
                /// 1 = Retain xref-dependent visibility settings <br/>
230
                /// System variable VISRETAIN
231
                /// </summary>
232
                [CadSystemVariable("$VISRETAIN", 70)]
233
                public bool RetainXRefDependentVisibilitySettings { get; set; }
305✔
234

235
                /// <summary>
236
                /// Controls the display of silhouette curves of body objects in Wireframe mode
237
                /// </summary>
238
                /// <remarks>
239
                /// System variable DISPSILH
240
                /// </remarks>
241
                [CadSystemVariable("$DISPSILH", 70)]
242
                public bool DisplaySilhouetteCurves { get; set; }
283✔
243

244
                /// <summary>
245
                /// 
246
                /// </summary>
247
                /// <remarks>
248
                /// System variable PELLIPSE (not present in DXF)
249
                /// </remarks>
250
                //[Obsolete("Not present in dxf or documentation")]
251
                public bool CreateEllipseAsPolyline { get; set; }
151✔
252

253
                /// <summary>
254
                /// Controls the saving of proxy object images
255
                /// </summary>
256
                /// <remarks>
257
                /// System variable PROXYGRAPHICS
258
                /// </remarks>
259
                [CadSystemVariable("$PROXYGRAPHICS", 70)]
260
                public bool ProxyGraphics { get; set; }
283✔
261

262
                /// <summary>
263
                /// Specifies the maximum depth of the spatial index
264
                /// </summary>
265
                /// <remarks>
266
                /// System variable TREEDEPTH
267
                /// </remarks>
268
                [CadSystemVariable("$TREEDEPTH", 70)]
269
                public short SpatialIndexMaxTreeDepth { get; set; } = 3020;
763✔
270

271
                /// <summary>
272
                /// Units format for coordinates and distances
273
                /// </summary>
274
                /// <remarks>
275
                /// System variable LUNITS
276
                /// </remarks>
277
                [CadSystemVariable("$LUNITS", 70)]
278
                public LinearUnitFormat LinearUnitFormat { get; set; } = LinearUnitFormat.Decimal;
887✔
279

280
                /// <summary>
281
                /// Units precision for coordinates and distances
282
                /// </summary>
283
                /// <remarks>
284
                /// System variable LUPREC
285
                /// </remarks>
286
                [CadSystemVariable("$LUPREC", 70)]
287
                public short LinearUnitPrecision { get; set; } = 4;
887✔
288

289
                /// <summary>
290
                /// Entity linetype name, or BYBLOCK or BYLAYER
291
                /// </summary>
292
                /// <remarks>
293
                /// System variable AUNITS
294
                /// </remarks>
295
                [CadSystemVariable("$AUNITS", 70)]
296
                public AngularUnitFormat AngularUnit { get; set; }
407✔
297

298
                /// <summary>
299
                /// Units precision for angles
300
                /// </summary>
301
                /// <remarks>
302
                /// System variable AUPREC
303
                /// </remarks>
304
                [CadSystemVariable("$AUPREC", 70)]
305
                public short AngularUnitPrecision { get; set; }
407✔
306

307
                /// <summary>
308
                /// Sets running object snaps, only for R13 - R14
309
                /// </summary>
310
                /// <remarks>
311
                /// System variable OSMODE
312
                /// </remarks>
313
                public ObjectSnapMode ObjectSnapMode { get; set; }
23✔
314

315
                /// <summary>
316
                /// Attribute visibility
317
                /// </summary>
318
                /// <remarks>
319
                /// System variable ATTMODE
320
                /// </remarks>
321
                [CadSystemVariable("$ATTMODE", 70)]
322
                public AttributeVisibilityMode AttributeVisibility { get; set; } = AttributeVisibilityMode.Normal;
887✔
323

324
                /// <summary>
325
                /// Point display mode
326
                /// </summary>
327
                /// <remarks>
328
                /// System variable PDMODE
329
                /// </remarks>
330
                [CadSystemVariable("$PDMODE", 70)]
331
                public short PointDisplayMode { get; set; }
407✔
332

333
                /// <summary>
334
                /// Integer variable intended for use by third-party developers
335
                /// </summary>
336
                /// <remarks>
337
                /// System variable USERI1
338
                /// </remarks>
339
                [CadSystemVariable("$USERI1", 70)]
340
                public short UserShort1 { get; set; }
305✔
341

342
                /// <summary>
343
                /// Integer variable intended for use by third-party developers
344
                /// </summary>
345
                /// <remarks>
346
                /// System variable USERI2
347
                /// </remarks>
348
                [CadSystemVariable("$USERI2", 70)]
349
                public short UserShort2 { get; set; }
305✔
350

351
                /// <summary>
352
                /// Integer variable intended for use by third-party developers
353
                /// </summary>
354
                /// <remarks>
355
                /// System variable USERI3
356
                /// </remarks>
357
                [CadSystemVariable("$USERI3", 70)]
358
                public short UserShort3 { get; set; }
305✔
359

360
                /// <summary>
361
                /// Integer variable intended for use by third-party developers
362
                /// </summary>
363
                /// <remarks>
364
                /// System variable USERI4
365
                /// </remarks>
366
                [CadSystemVariable("$USERI4", 70)]
367
                public short UserShort4 { get; set; }
305✔
368

369
                /// <summary>
370
                /// Integer variable intended for use by third-party developers
371
                /// </summary>
372
                /// <remarks>
373
                /// System variable USERI5
374
                /// </remarks>
375
                [CadSystemVariable("$USERI5", 70)]
376
                public short UserShort5 { get; set; }
305✔
377

378
                /// <summary>
379
                /// Undocumented
380
                /// </summary>
381
                /// <remarks>
382
                /// System variable SPLINESEGS
383
                /// </remarks>
384
                [CadSystemVariable("$SPLINESEGS", 70)]
385
                public short NumberOfSplineSegments { get; set; } = 8;
887✔
386

387
                /// <summary>
388
                /// Surface density (for PEDIT Smooth) in M direction
389
                /// </summary>
390
                /// <remarks>
391
                /// System variable SURFU
392
                /// </remarks>
393
                [CadSystemVariable("$SURFU", 70)]
394
                public short SurfaceDensityU { get; set; } = 6;
887✔
395

396
                /// <summary>
397
                /// Surface density(for PEDIT Smooth) in N direction
398
                /// </summary>
399
                /// <remarks>
400
                /// System variable SURFV
401
                /// </remarks>
402
                [CadSystemVariable("$SURFV", 70)]
403
                public short SurfaceDensityV { get; set; } = 6;
887✔
404

405
                /// <summary>
406
                /// Surface type for PEDIT Smooth
407
                /// </summary>
408
                /// <remarks>
409
                /// System variable SURFTYPE
410
                /// </remarks>
411
                [CadSystemVariable("$SURFTYPE", 70)]
412
                public short SurfaceType { get; set; } = 6;
785✔
413

414
                /// <summary>
415
                /// Number of mesh tabulations in first direction
416
                /// </summary>
417
                /// <remarks>
418
                /// System variable SURFTAB1
419
                /// </remarks>
420
                [CadSystemVariable("$SURFTAB1", 70)]
421
                public short SurfaceMeshTabulationCount1 { get; set; } = 6;
785✔
422

423
                /// <summary>
424
                /// Number of mesh tabulations in second direction
425
                /// </summary>
426
                /// <remarks>
427
                /// System variable SURFTAB2
428
                /// </remarks>
429
                [CadSystemVariable("$SURFTAB2", 70)]
430
                public short SurfaceMeshTabulationCount2 { get; set; } = 6;
785✔
431

432
                /// <summary>
433
                /// Spline curve type for PEDIT Spline
434
                /// </summary>
435
                /// <remarks>
436
                /// System variable SPLINETYPE
437
                /// </remarks>
438
                [CadSystemVariable("$SPLINETYPE", 70)]
439
                public SplineType SplineType { get; set; } = SplineType.CubicBSpline;
785✔
440

441
                /// <summary>
442
                /// Controls the shading of edges
443
                /// </summary>
444
                /// <remarks>
445
                /// System variable SHADEDGE
446
                /// </remarks>
447
                [CadSystemVariable("$SHADEDGE", 70)]
448
                public ShadeEdgeType ShadeEdge { get; set; }
305✔
449

450
                /// <summary>
451
                /// Percent ambient/diffuse light
452
                /// </summary>
453
                /// <remarks>
454
                /// System variable SHADEDIF
455
                /// </remarks>
456
                /// <value>
457
                /// range 1-100
458
                /// </value>
459
                [CadSystemVariable("$SHADEDIF", 70)]
460
                public short ShadeDiffuseToAmbientPercentage { get; set; } = 70;
785✔
461

462
                /// <summary>
463
                /// Low bit set = Display fractions, feet-and-inches, and surveyor's angles in input format
464
                /// </summary>
465
                /// <remarks>
466
                /// System variable UNITMODE
467
                /// </remarks>
468
                [CadSystemVariable("$UNITMODE", 70)]
469
                public short UnitMode { get; set; }
305✔
470

471
                /// <summary>
472
                /// Sets maximum number of viewports to be regenerated
473
                /// </summary>
474
                /// <remarks>
475
                /// System variable MAXACTVP
476
                /// </remarks>
477
                [CadSystemVariable("$MAXACTVP", 70)]
478
                public short MaxViewportCount { get; set; } = 64;
785✔
479

480
                /// <summary>
481
                /// 
482
                /// </summary>
483
                /// <remarks>
484
                /// System variable ISOLINES
485
                /// </remarks>
486
                public short SurfaceIsolineCount { get; set; }
151✔
487

488
                /// <summary>
489
                /// Current multiline justification
490
                /// </summary>
491
                /// <remarks>
492
                /// System variable CMLJUST
493
                /// </remarks>
494
                [CadSystemVariable("$CMLJUST", 70)]
495
                public VerticalAlignmentType CurrentMultilineJustification { get; set; } = VerticalAlignmentType.Top;
865✔
496

497
                /// <summary>
498
                /// 
499
                /// </summary>
500
                /// <remarks>
501
                /// System variable TEXTQLTY
502
                /// </remarks>
503
                public short TextQuality { get; set; }
151✔
504

505
                /// <summary>
506
                /// Global linetype scale
507
                /// </summary>
508
                /// <remarks>
509
                /// System variable LTSCALE
510
                /// </remarks>
511
                [CadSystemVariable("$LTSCALE", 40)]
512
                public double LineTypeScale { get; set; } = 1.0d;
887✔
513

514
                /// <summary>
515
                /// Default text height
516
                /// </summary>
517
                /// <remarks>
518
                /// System variable TEXTSIZE
519
                /// </remarks>
520
                [CadSystemVariable("$TEXTSIZE", 40)]
521
                public double TextHeightDefault { get; set; } = 2.5d;
887✔
522

523
                /// <summary>
524
                /// Current text style name
525
                /// </summary>
526
                /// <remarks>
527
                /// System variable TEXTSTYLE
528
                /// </remarks>
529
                [CadSystemVariable("$TEXTSTYLE", true, 7)]
530
                public string TextStyleName
531
                {
532
                        get { return this._currentTextStyle.Name; }
381✔
533
                        set
534
                        {
166✔
535
                                if (this.Document != null)
166!
536
                                {
×
537
                                        this._currentTextStyle = this.Document.TextStyles[value];
×
538
                                }
×
539
                                else
540
                                {
166✔
541
                                        this._currentTextStyle = new TextStyle(value);
166✔
542
                                }
166✔
543
                        }
166✔
544
                }
545

546
                /// <summary>
547
                /// Current layer name
548
                /// </summary>
549
                /// <remarks>
550
                /// System variable CLAYER
551
                /// </remarks>
552
                [CadSystemVariable("$CLAYER", true, 8)]
553
                public string CurrentLayerName
554
                {
555
                        get { return this._currentLayer.Name; }
384✔
556
                        set
557
                        {
166✔
558
                                if (this.Document != null)
166!
559
                                {
×
560
                                        this._currentLayer = this.Document.Layers[value];
×
561
                                }
×
562
                                else
563
                                {
166✔
564
                                        this._currentLayer = new Layer(value);
166✔
565
                                }
166✔
566
                        }
166✔
567
                }
568

569
                /// <summary>
570
                /// Entity linetype name, or BYBLOCK or BYLAYER
571
                /// </summary>
572
                /// <remarks>
573
                /// System variable CELTYPE
574
                /// </remarks>
575
                [CadSystemVariable("$CELTYPE", true, 6)]
576
                public string CurrentLineTypeName
577
                {
578
                        get { return this._currentLineType.Name; }
360✔
579
                        set
580
                        {
166✔
581
                                if (this.Document != null)
166!
582
                                {
×
583
                                        this._currentLineType = this.Document.LineTypes[value];
×
584
                                }
×
585
                                else
586
                                {
166✔
587
                                        this._currentLineType = new LineType(value);
166✔
588
                                }
166✔
589
                        }
166✔
590
                }
591

592
                /// <summary>
593
                /// Current multiline style name
594
                /// </summary>
595
                /// <remarks>
596
                /// System variable CMLSTYLE
597
                /// </remarks>
598
                [CadSystemVariable("$CMLSTYLE", true, 2)]
599
                public string MultiLineStyleName
600
                {
601
                        get { return this._currentMLineStyle.Name; }
270✔
602
                        set
603
                        {
144✔
604
                                if (this.Document != null)
144!
NEW
605
                                {
×
NEW
606
                                        this._currentMLineStyle = this.Document.MLineStyles[value];
×
NEW
607
                                }
×
608
                                else
609
                                {
144✔
610
                                        this._currentMLineStyle = new MLineStyle(value);
144✔
611
                                }
144✔
612
                        }
144✔
613
                }
614

615
                /// <summary>
616
                /// Default trace width
617
                /// </summary>
618
                /// <remarks>
619
                /// System variable TRACEWID
620
                /// </remarks>
621
                [CadSystemVariable("$TRACEWID", 40)]
622
                public double TraceWidthDefault { get; set; }
305✔
623

624
                /// <summary>
625
                /// Sketch record increment
626
                /// </summary>
627
                /// <remarks>
628
                /// System variable SKETCHINC
629
                /// </remarks>
630
                [CadSystemVariable("$SKETCHINC", 40)]
631
                public double SketchIncrement { get; set; }
305✔
632

633
                /// <summary>
634
                /// Sketch record increment
635
                /// </summary>
636
                /// <remarks>
637
                /// System variable FILLETRAD
638
                /// </remarks>
639
                [CadSystemVariable("$FILLETRAD", 40)]
640
                public double FilletRadius { get; set; }
305✔
641

642
                /// <summary>
643
                /// Sets the default 3D thickness property when creating 2D geometric objects.
644
                /// </summary>
645
                /// <remarks>
646
                /// System variable THICKNESS
647
                /// </remarks>
648
                [CadSystemVariable("$THICKNESS", 40)]
649
                public double ThicknessDefault { get; set; }
305✔
650

651
                /// <summary>
652
                /// Sets the zero (0) base angle with respect to the current UCS.
653
                /// </summary>
654
                /// <remarks>
655
                /// System variable ANGBASE
656
                /// </remarks>
657
                [CadSystemVariable("$ANGBASE", 50)]
658
                public double AngleBase { get; set; } = 0.0;
887✔
659

660
                /// <summary>
661
                /// Point display size
662
                /// </summary>
663
                /// <remarks>
664
                /// System variable PDSIZE
665
                /// </remarks>
666
                [CadSystemVariable("$PDSIZE", 40)]
667
                public double PointDisplaySize { get; set; } = 0.0d;
887✔
668

669
                /// <summary>
670
                /// Default polyline width
671
                /// </summary>
672
                /// <remarks>
673
                /// System variable PLINEWID
674
                /// </remarks>
675
                [CadSystemVariable("$PLINEWID", 40)]
676
                public double PolylineWidthDefault { get; set; }
305✔
677

678
                /// <summary>
679
                /// Real variable intended for use by third-party developers
680
                /// </summary>
681
                /// <remarks>
682
                /// System variable $USERR1
683
                /// </remarks>
684
                [CadSystemVariable("$USERR1", 40)]
685
                public double UserDouble1 { get; set; }
305✔
686

687
                /// <summary>
688
                /// Real variable intended for use by third-party developers
689
                /// </summary>
690
                /// <remarks>
691
                /// System variable $USERR2
692
                /// </remarks>
693
                [CadSystemVariable("$USERR2", 40)]
694
                public double UserDouble2 { get; set; }
305✔
695

696
                /// <summary>
697
                /// Real variable intended for use by third-party developers
698
                /// </summary>
699
                /// <remarks>
700
                /// System variable $USERR3
701
                /// </remarks>
702
                [CadSystemVariable("$USERR3", 40)]
703
                public double UserDouble3 { get; set; }
305✔
704

705
                /// <summary>
706
                /// Real variable intended for use by third-party developers
707
                /// </summary>
708
                /// <remarks>
709
                /// System variable $USERR4
710
                /// </remarks>
711
                [CadSystemVariable("$USERR4", 40)]
712
                public double UserDouble4 { get; set; }
305✔
713

714
                /// <summary>
715
                /// Real variable intended for use by third-party developers
716
                /// </summary>
717
                /// <remarks>
718
                /// System variable $USERR5
719
                /// </remarks>
720
                [CadSystemVariable("$USERR5", 40)]
721
                public double UserDouble5 { get; set; }
305✔
722

723
                /// <summary>
724
                /// First chamfer distance
725
                /// </summary>
726
                /// <remarks>
727
                /// System variable CHAMFERA
728
                /// </remarks>
729
                [CadSystemVariable("$CHAMFERA", 40)]
730
                public double ChamferDistance1 { get; set; }
305✔
731

732
                /// <summary>
733
                /// Second  chamfer distance
734
                /// </summary>
735
                /// <remarks>
736
                /// System variable CHAMFERB
737
                /// </remarks>
738
                [CadSystemVariable("$CHAMFERB", 40)]
739
                public double ChamferDistance2 { get; set; }
305✔
740

741
                /// <summary>
742
                /// Chamfer length
743
                /// </summary>
744
                /// <remarks>
745
                /// System variable CHAMFERC
746
                /// </remarks>
747
                [CadSystemVariable("$CHAMFERC", 40)]
748
                public double ChamferLength { get; set; }
283✔
749

750
                /// <summary>
751
                /// Chamfer angle
752
                /// </summary>
753
                /// <remarks>
754
                /// System variable CHAMFERD
755
                /// </remarks>
756
                [CadSystemVariable("$CHAMFERD", 40)]
757
                public double ChamferAngle { get; set; }
283✔
758

759
                /// <summary>
760
                /// Adjusts the smoothness of shaded and rendered objects, rendered shadows, and objects with hidden lines removed.
761
                /// </summary>
762
                /// <remarks>
763
                /// System variable FACETRES.
764
                /// </remarks>
765
                /// <value>
766
                /// Valid values are from 0.01 to 10.0.
767
                /// </value>
768
                [CadSystemVariable("$FACETRES", 40)]
769
                public double FacetResolution
770
                {
771
                        get
772
                        {
32✔
773
                                return this._facetResolution;
32✔
774
                        }
32✔
775
                        set
776
                        {
119✔
777
                                ObjectExtensions.InRange(value, 0.01, 10, "FACETRES valid values are from 0.01 to 10.0");
119✔
778
                                this._facetResolution = value;
119✔
779
                        }
119✔
780
                }
781

782
                private double _facetResolution = 0.5;
480✔
783

784
                /// <summary>
785
                /// Current multiline scale
786
                /// </summary>
787
                /// <remarks>
788
                /// System variable CMLSCALE
789
                /// </remarks>
790
                [CadSystemVariable("$CMLSCALE", 40)]
791
                public double CurrentMultilineScale { get; set; } = 20.0d;
865✔
792

793
                /// <summary>
794
                /// Current entity linetype scale
795
                /// </summary>
796
                /// <remarks>
797
                /// System variable CELTSCALE
798
                /// </remarks>
799
                [CadSystemVariable("$CELTSCALE", 40)]
800
                public double CurrentEntityLinetypeScale { get; set; } = 1.0d;
865✔
801

802
                /// <summary>
803
                /// Name of menu file
804
                /// </summary>
805
                /// <remarks>
806
                /// System variable MENU
807
                /// </remarks>
808
                [CadSystemVariable("$MENU", 1)]
809
                public string MenuFileName { get; set; } = ".";
785✔
810

811
                /// <summary>
812
                /// Next available handle
813
                /// </summary>
814
                /// <remarks>
815
                /// System variable HANDSEED
816
                /// </remarks>
817
                [CadSystemVariable("$HANDSEED", 5)]
818
                public ulong HandleSeed { get; internal set; } = 0x0;
32,769✔
819

820
                /// <summary>
821
                /// Local date/time of drawing creation (see Special Handling of Date/Time Variables)
822
                /// </summary>
823
                /// <remarks>
824
                /// System variable TDCREATE
825
                /// </remarks>
826
                [CadSystemVariable("$TDCREATE", 40)]
827
                public DateTime CreateDateTime { get; set; } = DateTime.Now;
911✔
828

829
                /// <summary>
830
                /// Universal date/time the drawing was created(see Special Handling of Date/Time Variables)
831
                /// </summary>
832
                /// <remarks>
833
                /// System variable TDUCREATE
834
                /// </remarks>
835
                [CadSystemVariable("$TDUCREATE", 40)]
836
                public DateTime UniversalCreateDateTime { get; set; } = DateTime.UtcNow;
714✔
837

838
                /// <summary>
839
                /// Local date/time of last drawing update(see Special Handling of Date/Time Variables)
840
                /// </summary>
841
                /// <remarks>
842
                /// System variable TDUPDATE
843
                /// </remarks>
844
                [CadSystemVariable("$TDUPDATE", 40)]
845
                public DateTime UpdateDateTime { get; set; } = DateTime.Now;
914✔
846

847
                /// <summary>
848
                /// Universal date/time of the last update/save(see Special Handling of Date/Time Variables)
849
                /// </summary>
850
                /// <remarks>
851
                /// System variable TDUUPDATE
852
                /// </remarks>
853
                [CadSystemVariable("$TDUUPDATE", 40)]
854
                public DateTime UniversalUpdateDateTime { get; set; } = DateTime.UtcNow;
735✔
855

856
                /// <summary>
857
                /// Cumulative editing time for this drawing(see Special Handling of Date/Time Variables)
858
                /// </summary>
859
                /// <remarks>
860
                /// System variable TDINDWG
861
                /// </remarks>
862
                [CadSystemVariable("$TDINDWG", 40)]
863
                public TimeSpan TotalEditingTime { get; set; } = new TimeSpan();
887✔
864

865
                /// <summary>
866
                /// User-elapsed timer
867
                /// </summary>
868
                /// <remarks>
869
                /// System variable TDUSRTIMER
870
                /// </remarks>
871
                [CadSystemVariable("$TDUSRTIMER", 40)]
872
                public TimeSpan UserElapsedTimeSpan { get; set; }
305✔
873

874
                /// <summary>
875
                /// Current entity color number
876
                /// </summary>
877
                /// <remarks>
878
                /// System variable CECOLOR
879
                /// </remarks>
880
                [CadSystemVariable("$CECOLOR", 62)]
881
                public Color CurrentEntityColor { get; set; } = Color.ByLayer;
889✔
882

883
                /// <summary>
884
                /// View scale factor for new viewports
885
                /// </summary>
886
                /// <remarks>
887
                /// System variable PSVPSCALE
888
                /// </remarks>
889
                [CadSystemVariable("$PSVPSCALE", 40)]
890
                public double ViewportDefaultViewScaleFactor { get; set; }
260✔
891

892
                /// <summary>
893
                /// Insertion base set by BASE command(in WCS)
894
                /// </summary>
895
                /// <remarks>
896
                /// System variable PINSBASE
897
                /// </remarks>
898
                [CadSystemVariable("$PINSBASE", 10, 20, 30)]
899
                public XYZ PaperSpaceInsertionBase { get; set; } = XYZ.Zero;
763✔
900

901
                /// <summary>
902
                /// X, Y, and Z drawing extents lower-left corner (in WCS)
903
                /// </summary>
904
                /// <remarks>
905
                /// System variable PEXTMIN
906
                /// </remarks>
907
                [CadSystemVariable("$PEXTMIN", 10, 20, 30)]
908
                public XYZ PaperSpaceExtMin { get; set; }
305✔
909

910
                /// <summary>
911
                /// X, Y, and Z drawing extents upper-right corner(in WCS)
912
                /// </summary>
913
                /// <remarks>
914
                /// System variable PEXTMAX
915
                /// </remarks>
916
                [CadSystemVariable("$PEXTMAX", 10, 20, 30)]
917
                public XYZ PaperSpaceExtMax { get; set; }
305✔
918

919
                /// <summary>
920
                /// XY drawing limits lower-left corner(in WCS)
921
                /// </summary>
922
                /// <remarks>
923
                /// System variable PLIMMIN
924
                /// </remarks>
925
                [CadSystemVariable("$PLIMMIN", 10, 20)]
926
                public XY PaperSpaceLimitsMin { get; set; }
305✔
927

928
                /// <summary>
929
                /// XY drawing limits upper-right corner (in WCS)
930
                /// </summary>
931
                /// <remarks>
932
                /// System variable PLIMMAX
933
                /// </remarks>
934
                [CadSystemVariable("$PLIMMAX", 10, 20)]
935
                public XY PaperSpaceLimitsMax { get; set; }
305✔
936

937
                /// <summary>
938
                /// Current elevation set by ELEV command
939
                /// </summary>
940
                /// <remarks>
941
                /// System variable PELEVATION
942
                /// </remarks>
943
                [CadSystemVariable("$PELEVATION", 40)]
944
                public double PaperSpaceElevation
945
                {
946
                        get { return this.PaperSpaceUcs.Elevation; }
96✔
947
                        set
948
                        {
273✔
949
                                this.PaperSpaceUcs.Elevation = value;
273✔
950
                        }
273✔
951
                }
952

953
                /// <summary>
954
                /// Name of the UCS that defines the origin and orientation of orthographic UCS settings (paper space only)
955
                /// </summary>
956
                /// <remarks>
957
                /// System variable PUCSBASE
958
                /// </remarks>
959
                [CadSystemVariable("$PUCSBASE", true, 2)]
960
                public string PaperSpaceBaseName
961
                {
962
                        get { return this.PaperSpaceUcsBase.Name; }
×
963
                        set
964
                        {
×
965
                                this.PaperSpaceUcsBase.Name = value;
×
966
                        }
×
967
                }
968

969
                /// <summary>
970
                /// Current paper space UCS name
971
                /// </summary>
972
                /// <remarks>
973
                /// System variable PUCSNAME
974
                /// </remarks>
975
                [CadSystemVariable("$PUCSNAME", true, 2)]
976
                public string PaperSpaceName
977
                {
978
                        get { return this.PaperSpaceUcs.Name; }
×
979
                        set
980
                        {
×
981
                                this.PaperSpaceUcs.Name = value;
×
982
                        }
×
983
                }
984

985
                /// <summary>
986
                /// Origin of current UCS (in WCS)
987
                /// </summary>
988
                /// <remarks>
989
                /// System variable PUCSORG
990
                /// </remarks>
991
                [CadSystemVariable("$PUCSORG", 10, 20, 30)]
992
                public XYZ PaperSpaceUcsOrigin
993
                {
994
                        get { return this.PaperSpaceUcs.Origin; }
96✔
995
                        set
996
                        {
273✔
997
                                this.PaperSpaceUcs.Origin = value;
273✔
998
                        }
273✔
999
                }
1000

1001
                /// <summary>
1002
                /// Direction of the current UCS X axis (in WCS)
1003
                /// </summary>
1004
                /// <remarks>
1005
                /// System variable PUCSXDIR
1006
                /// </remarks>
1007
                [CadSystemVariable("$PUCSXDIR", 10, 20, 30)]
1008
                public XYZ PaperSpaceUcsXAxis
1009
                {
1010
                        get { return this.PaperSpaceUcs.XAxis; }
96✔
1011
                        set
1012
                        {
273✔
1013
                                this.PaperSpaceUcs.XAxis = value;
273✔
1014
                        }
273✔
1015
                }
1016

1017
                /// <summary>
1018
                /// Direction of the current UCS Y aYis (in WCS)
1019
                /// </summary>
1020
                /// <remarks>
1021
                /// System variable PUCSYDIR
1022
                /// </remarks>
1023
                [CadSystemVariable("$PUCSYDIR", 10, 20, 30)]
1024
                public XYZ PaperSpaceUcsYAxis
1025
                {
1026
                        get { return this.PaperSpaceUcs.YAxis; }
96✔
1027
                        set
1028
                        {
273✔
1029
                                this.PaperSpaceUcs.YAxis = value;
273✔
1030
                        }
273✔
1031
                }
1032

1033
                /// <summary>
1034
                /// Point which becomes the new UCS origin after changing paper space UCS to TOP when PUCSBASE is set to WORLD
1035
                /// </summary>
1036
                /// <remarks>
1037
                /// System variable PUCSORGTOP
1038
                /// </remarks>
1039
                [CadSystemVariable("$PUCSORGTOP", 10, 20, 30)]
1040
                public XYZ PaperSpaceOrthographicTopDOrigin { get; set; }
260✔
1041

1042
                /// <summary>
1043
                /// Point which becomes the new UCS origin after changing paper space UCS to BOTTOM when PUCSBASE is set to WORLD
1044
                /// </summary>
1045
                /// <remarks>
1046
                /// System variable PUCSORGBOTTOM
1047
                /// </remarks>
1048
                [CadSystemVariable("$PUCSORGBOTTOM", 10, 20, 30)]
1049
                public XYZ PaperSpaceOrthographicBottomDOrigin { get; set; }
260✔
1050

1051
                /// <summary>
1052
                /// Point which becomes the new UCS origin after changing paper space UCS to LEFT when PUCSBASE is set to WORLD
1053
                /// </summary>
1054
                /// <remarks>
1055
                /// System variable PUCSORGLEFT
1056
                /// </remarks>
1057
                [CadSystemVariable("$PUCSORGLEFT", 10, 20, 30)]
1058
                public XYZ PaperSpaceOrthographicLeftDOrigin { get; set; }
260✔
1059

1060
                /// <summary>
1061
                /// Point which becomes the new UCS origin after changing paper space UCS to RIGHT when PUCSBASE is set to WORLD
1062
                /// </summary>
1063
                /// <remarks>
1064
                /// System variable PUCSORGRIGHT
1065
                /// </remarks>
1066
                [CadSystemVariable("$PUCSORGRIGHT", 10, 20, 30)]
1067
                public XYZ PaperSpaceOrthographicRightDOrigin { get; set; }
260✔
1068

1069
                /// <summary>
1070
                /// Point which becomes the new UCS origin after changing paper space UCS to FRONT when PUCSBASE is set to WORLD
1071
                /// </summary>
1072
                /// <remarks>
1073
                /// System variable PUCSORGFRONT
1074
                /// </remarks>
1075
                [CadSystemVariable("$PUCSORGFRONT", 10, 20, 30)]
1076
                public XYZ PaperSpaceOrthographicFrontDOrigin { get; set; }
260✔
1077

1078
                /// <summary>
1079
                /// Point which becomes the new UCS origin after changing paper space UCS to BACK when PUCSBASE is set to WORLD
1080
                /// </summary>
1081
                /// <remarks>
1082
                /// System variable PUCSORGBACK
1083
                /// </remarks>
1084
                [CadSystemVariable("$PUCSORGBACK", 10, 20, 30)]
1085
                public XYZ PaperSpaceOrthographicBackDOrigin { get; set; }
260✔
1086

1087
                /// <summary>
1088
                /// Point which becomes the new UCS origin after changing model space UCS to TOP when PUCSBASE is set to WORLD
1089
                /// </summary>
1090
                /// <remarks>
1091
                /// System variable UCSORGTOP
1092
                /// </remarks>
1093
                [CadSystemVariable("$UCSORGTOP", 10, 20, 30)]
1094
                public XYZ ModelSpaceOrthographicTopDOrigin { get; set; }
260✔
1095

1096
                /// <summary>
1097
                /// Point which becomes the new UCS origin after changing model space UCS to BOTTOM when PUCSBASE is set to WORLD
1098
                /// </summary>
1099
                /// <remarks>
1100
                /// System variable UCSORGBOTTOM
1101
                /// </remarks>
1102
                [CadSystemVariable("$UCSORGBOTTOM", 10, 20, 30)]
1103
                public XYZ ModelSpaceOrthographicBottomDOrigin { get; set; }
260✔
1104

1105
                /// <summary>
1106
                /// Point which becomes the new UCS origin after changing model space UCS to LEFT when PUCSBASE is set to WORLD
1107
                /// </summary>
1108
                /// <remarks>
1109
                /// System variable UCSORGLEFT
1110
                /// </remarks>
1111
                [CadSystemVariable("$UCSORGLEFT", 10, 20, 30)]
1112
                public XYZ ModelSpaceOrthographicLeftDOrigin { get; set; }
260✔
1113

1114
                /// <summary>
1115
                /// Point which becomes the new UCS origin after changing model space UCS to RIGHT when PUCSBASE is set to WORLD
1116
                /// </summary>
1117
                /// <remarks>
1118
                /// System variable UCSORGRIGHT
1119
                /// </remarks>
1120
                [CadSystemVariable("$UCSORGRIGHT", 10, 20, 30)]
1121
                public XYZ ModelSpaceOrthographicRightDOrigin { get; set; }
260✔
1122

1123
                /// <summary>
1124
                /// Point which becomes the new UCS origin after changing model space UCS to FRONT when PUCSBASE is set to WORLD
1125
                /// </summary>
1126
                /// <remarks>
1127
                /// System variable UCSORGFRONT
1128
                /// </remarks>
1129
                [CadSystemVariable("$UCSORGFRONT", 10, 20, 30)]
1130
                public XYZ ModelSpaceOrthographicFrontDOrigin { get; set; }
260✔
1131

1132
                /// <summary>
1133
                /// Point which becomes the new UCS origin after changing model space UCS to BACK when PUCSBASE is set to WORLD
1134
                /// </summary>
1135
                /// <remarks>
1136
                /// System variable UCSORGBACK
1137
                /// </remarks>
1138
                [CadSystemVariable("$UCSORGBACK", 10, 20, 30)]
1139
                public XYZ ModelSpaceOrthographicBackDOrigin { get; set; }
260✔
1140

1141
                /// <summary>
1142
                /// Insertion base set by BASE command(in WCS)
1143
                /// </summary>
1144
                /// <remarks>
1145
                /// System variable INSBASE
1146
                /// </remarks>
1147
                [CadSystemVariable("$INSBASE", 10, 20, 30)]
1148
                public XYZ ModelSpaceInsertionBase { get; set; } = XYZ.Zero;
977✔
1149

1150
                /// <summary>
1151
                /// X, Y, and Z drawing extents lower-left corner (in WCS)
1152
                /// </summary>
1153
                /// <remarks>
1154
                /// System variable EXTMIN
1155
                /// </remarks>
1156
                [CadSystemVariable("$EXTMIN", 10, 20, 30)]
1157
                public XYZ ModelSpaceExtMin { get; set; }
305✔
1158

1159
                /// <summary>
1160
                /// X, Y, and Z drawing extents upper-right corner(in WCS)
1161
                /// </summary>
1162
                /// <remarks>
1163
                /// System variable EXTMAX
1164
                /// </remarks>
1165
                [CadSystemVariable("$EXTMAX", 10, 20, 30)]
1166
                public XYZ ModelSpaceExtMax { get; set; }
305✔
1167

1168
                /// <summary>
1169
                /// XY drawing limits lower-left corner (in WCS)
1170
                /// </summary>
1171
                /// <remarks>
1172
                /// System variable LIMMIN
1173
                /// </remarks>
1174
                [CadSystemVariable("$LIMMIN", 10, 20)]
1175
                public XY ModelSpaceLimitsMin { get; set; }
305✔
1176

1177
                /// <summary>
1178
                /// XY drawing limits upper-right corner (in WCS)
1179
                /// </summary>
1180
                /// <remarks>
1181
                /// System variable LIMMAX
1182
                /// </remarks>
1183
                [CadSystemVariable("$LIMMAX", 10, 20)]
1184
                public XY ModelSpaceLimitsMax { get; set; }
305✔
1185

1186
                /// <summary>
1187
                /// Name of the UCS that defines the origin and orientation of orthographic UCS settings
1188
                /// </summary>
1189
                /// <remarks>
1190
                /// System variable UCSBASE
1191
                /// </remarks>
1192
                [CadSystemVariable("$UCSBASE", true, 2)]
1193
                public string UcsBaseName
1194
                {
1195
                        get { return this.ModelSpaceUcsBase.Name; }
×
1196
                        set
1197
                        {
×
1198
                                this.ModelSpaceUcsBase.Name = value;
×
1199
                        }
×
1200
                }
1201

1202
                /// <summary>
1203
                /// Name of current UCS
1204
                /// </summary>
1205
                /// <remarks>
1206
                /// System variable UCSNAME
1207
                /// </remarks>
1208
                [CadSystemVariable("$UCSNAME", true, 2)]
1209
                public string UcsName
1210
                {
1211
                        get { return this.ModelSpaceUcs.Name; }
×
1212
                        set
1213
                        {
×
1214
                                this.ModelSpaceUcs.Name = value;
×
1215
                        }
×
1216
                }
1217

1218
                /// <summary>
1219
                /// Current elevation set by ELEV command
1220
                /// </summary>
1221
                /// <remarks>
1222
                /// System variable ELEVATION
1223
                /// </remarks>
1224
                [CadSystemVariable("$ELEVATION", 40)]
1225
                public double Elevation
1226
                {
1227
                        get { return this.ModelSpaceUcs.Elevation; }
96✔
1228
                        set
1229
                        {
273✔
1230
                                this.ModelSpaceUcs.Elevation = value;
273✔
1231
                        }
273✔
1232
                }
1233

1234
                /// <summary>
1235
                /// Origin of current UCS(in WCS)
1236
                /// </summary>
1237
                /// <remarks>
1238
                /// System variable UCSORG
1239
                /// </remarks>
1240
                [CadSystemVariable("$UCSORG", 10, 20, 30)]
1241
                public XYZ ModelSpaceOrigin
1242
                {
1243
                        get { return this.ModelSpaceUcs.Origin; }
96✔
1244
                        set
1245
                        {
273✔
1246
                                this.ModelSpaceUcs.Origin = value;
273✔
1247
                        }
273✔
1248
                }
1249

1250
                /// <summary>
1251
                /// Direction of the current UCS X axis (in WCS)
1252
                /// </summary>
1253
                /// <remarks>
1254
                /// System variable UCSXDIR
1255
                /// </remarks>
1256
                [CadSystemVariable("$UCSXDIR", 10, 20, 30)]
1257
                public XYZ ModelSpaceXAxis
1258
                {
1259
                        get { return this.ModelSpaceUcs.XAxis; }
96✔
1260
                        set
1261
                        {
273✔
1262
                                this.ModelSpaceUcs.XAxis = value;
273✔
1263
                        }
273✔
1264
                }
1265

1266
                /// <summary>
1267
                /// Direction of the current UCS Y axis (in WCS)
1268
                /// </summary>
1269
                /// <remarks>
1270
                /// System variable UCSYDIR
1271
                /// </remarks>
1272
                [CadSystemVariable("$UCSYDIR", 10, 20, 30)]
1273
                public XYZ ModelSpaceYAxis
1274
                {
1275
                        get { return this.ModelSpaceUcs.YAxis; }
96✔
1276
                        set
1277
                        {
273✔
1278
                                this.ModelSpaceUcs.YAxis = value;
273✔
1279
                        }
273✔
1280
                }
1281

1282
                /// <summary>
1283
                /// Arrow block name
1284
                /// </summary>
1285
                /// <remarks>
1286
                /// System variable DIMBLK
1287
                /// </remarks>
1288
                [CadSystemVariable("$DIMBLK", 1)]
1289
                public string DimensionBlockName { get; set; } = string.Empty;
657✔
1290

1291
                /// <summary>
1292
                /// Arrow block name for leaders
1293
                /// </summary>
1294
                /// <remarks>
1295
                /// System variable DIMLDRBLK
1296
                /// </remarks>
1297
                [CadSystemVariable("$DIMLDRBLK", 1)]
1298
                public string ArrowBlockName { get; set; } = string.Empty;
612✔
1299

1300
                /// <summary>
1301
                /// First arrow block name
1302
                /// </summary>
1303
                /// <remarks>
1304
                /// System variable DIMBLK1
1305
                /// </remarks>
1306
                [CadSystemVariable("$DIMBLK1", 1)]
1307
                public string DimensionBlockNameFirst { get; set; }
177✔
1308

1309
                /// <summary>
1310
                /// Second arrow block name
1311
                /// </summary>
1312
                /// <remarks>
1313
                /// System variable DIMBLK2
1314
                /// </remarks>
1315
                [CadSystemVariable("$DIMBLK2", 1)]
1316
                public string DimensionBlockNameSecond { get; set; }
177✔
1317

1318
                /// <remarks>
1319
                /// System variable TSTACKALIGN, default = 1(not present in DXF)
1320
                /// </remarks>
1321
                public short StackedTextAlignment { get; internal set; } = 1;
608✔
1322

1323
                /// <remarks>
1324
                /// TSTACKSIZE, default = 70(not present in DXF)
1325
                /// </remarks>
1326
                public short StackedTextSizePercentage { get; internal set; } = 70;
608✔
1327

1328
                /// <summary>
1329
                /// Path for all relative hyperlinks in the drawing. If null, the drawing path is used
1330
                /// </summary>
1331
                /// <remarks>
1332
                /// System variable HYPERLINKBASE
1333
                /// </remarks>
1334
                [CadSystemVariable("$HYPERLINKBASE", 1)]
1335
                public string HyperLinkBase { get; set; }
260✔
1336

1337
                /// <summary>
1338
                /// Line weight of new objects
1339
                /// </summary>
1340
                /// <remarks>
1341
                /// System variable CELWEIGHT
1342
                /// </remarks>
1343
                [CadSystemVariable("$CELWEIGHT", 370)]
1344
                public LineweightType CurrentEntityLineWeight { get; set; } = LineweightType.ByLayer;
842✔
1345

1346
                /// <summary>
1347
                /// Line weight end-caps setting for new objects
1348
                /// </summary>
1349
                /// <remarks>
1350
                /// System variable ENDCAPS
1351
                /// </remarks>
1352
                [CadSystemVariable("$ENDCAPS", 280)]
1353
                public short EndCaps { get; set; }
260✔
1354

1355
                /// <summary>
1356
                /// Line weight joint setting for new objects
1357
                /// </summary>
1358
                /// <remarks>
1359
                /// System variable JOINSTYLE
1360
                /// </remarks>
1361
                [CadSystemVariable("$JOINSTYLE", 280)]
1362
                public short JoinStyle { get; set; }
260✔
1363

1364
                /// <summary>
1365
                /// Controls whether the lineweights of objects are displayed.<br/>
1366
                /// 0 = Lineweight is not displayed<br/>
1367
                /// 1 = Lineweight is displayed
1368
                /// </summary>
1369
                /// <remarks>
1370
                /// System variable LWDISPLAY
1371
                /// </remarks>
1372
                [CadSystemVariable("$LWDISPLAY", 290)]
1373
                public bool DisplayLineWeight { get; set; } = false;
842✔
1374

1375
                /// <summary>
1376
                /// Controls whether the current drawing can be edited in-place when being referenced by another drawing
1377
                /// </summary>
1378
                /// <remarks>
1379
                /// System variable XEDIT
1380
                /// </remarks>
1381
                [CadSystemVariable("$XEDIT", 290)]
1382
                public bool XEdit { get; set; }
260✔
1383

1384
                /// <summary>
1385
                /// Controls symbol table naming
1386
                /// </summary>
1387
                /// <remarks>
1388
                /// System variable EXTNAMES
1389
                /// </remarks>
1390
                [CadSystemVariable("$EXTNAMES", 290)]
1391
                public bool ExtendedNames { get; set; } = true;
842✔
1392

1393
                /// <summary>
1394
                /// Indicates whether the current drawing is in a Color-Dependent or Named Plot Style mode
1395
                /// </summary>
1396
                /// <remarks>
1397
                /// System variable PSTYLEMODE
1398
                /// </remarks>
1399
                [CadSystemVariable("$PSTYLEMODE", 290)]
1400
                public short PlotStyleMode { get; set; }
260✔
1401

1402
                /// <remarks>
1403
                /// System variable OLESTARTUP
1404
                /// </remarks>
1405
                //[CadSystemVariable("$OLESTARTUP", 290)]
1406
                public bool LoadOLEObject { get; set; }
128✔
1407

1408
                /// <summary>
1409
                /// Default drawing units for blocks
1410
                /// </summary>
1411
                /// <remarks>
1412
                /// System variable INSUNITS
1413
                /// </remarks>
1414
                [CadSystemVariable("$INSUNITS", 70)]
1415
                public UnitsType InsUnits { get; set; } = UnitsType.Unitless;
842✔
1416

1417
                /// <summary>
1418
                /// Plot style type of new objects
1419
                /// </summary>
1420
                /// <remarks>
1421
                /// System variable CEPSNTYPE
1422
                /// </remarks>
1423
                [CadSystemVariable("$CEPSNTYPE", 380)]
1424
                public EntityPlotStyleType CurrentEntityPlotStyle { get; set; }
388✔
1425

1426
                /// <summary>
1427
                /// Set at creation time, uniquely identifies a particular drawing
1428
                /// </summary>
1429
                /// <remarks>
1430
                /// System variable FINGERPRINTGUID
1431
                /// </remarks>
1432
                [CadSystemVariable("$FINGERPRINTGUID", 2)]
1433
                public string FingerPrintGuid { get; internal set; } = Guid.NewGuid().ToString();
740✔
1434

1435
                /// <summary>
1436
                /// Uniquely identifies a particular version of a drawing. Updated when the drawing is modified
1437
                /// </summary>
1438
                /// <remarks>
1439
                /// System variable VERSIONGUID
1440
                /// </remarks>
1441
                [CadSystemVariable("$VERSIONGUID", 2)]
1442
                public string VersionGuid { get; internal set; } = Guid.NewGuid().ToString();
740✔
1443

1444
                /// <summary>
1445
                /// Controls the object sorting methods
1446
                /// </summary>
1447
                /// <remarks>
1448
                /// System variable SORTENTS
1449
                /// </remarks>
1450
                [CadSystemVariable("$SORTENTS", 280)]
1451
                public ObjectSortingFlags EntitySortingFlags { get; set; }
218✔
1452

1453
                /// <summary>
1454
                /// Controls whether layer and spatial indexes are created and saved in drawing files
1455
                /// </summary>
1456
                /// <remarks>
1457
                /// System variable INDEXCTL
1458
                /// </remarks>
1459
                [CadSystemVariable("$INDEXCTL", 280)]
1460
                public IndexCreationFlags IndexCreationFlags { get; set; }
218✔
1461

1462
                /// <summary>
1463
                /// Specifies HIDETEXT system variable
1464
                /// </summary>
1465
                /// <remarks>
1466
                /// System variable HIDETEXT
1467
                /// </remarks>
1468
                [CadSystemVariable("$HIDETEXT", 280)]   //note: mismatch with docs, code 290
1469
                public byte HideText { get; set; }
218✔
1470

1471
                /// <summary>
1472
                /// Controls the visibility of xref clipping boundaries
1473
                /// </summary>
1474
                /// <remarks>
1475
                /// System variable XCLIPFRAME
1476
                /// </remarks>
1477
                [CadSystemVariable("$XCLIPFRAME", 280)] //note: mismatch with docs, code 290
1478
                public byte ExternalReferenceClippingBoundaryType { get; set; }
218✔
1479

1480
                /// <summary>
1481
                /// Controls the associativity of dimension objects
1482
                /// </summary>
1483
                /// <remarks>
1484
                /// System variable DIMASSOC
1485
                /// </remarks>
1486
                [CadSystemVariable("$DIMASSOC", 280)]
1487
                public DimensionAssociation DimensionAssociativity { get; set; } = DimensionAssociation.CreateExplodedDimensions;
698✔
1488

1489
                /// <summary>
1490
                /// Specifies a gap to be displayed where an object is hidden by another object; the value is specified as a percent of one unit and is independent of the zoom level.A haloed line is shortened at the point where it is hidden when HIDE or the Hidden option of SHADEMODE is used
1491
                /// </summary>
1492
                /// <remarks>
1493
                /// System variable HALOGAP
1494
                /// </remarks>
1495
                [CadSystemVariable("$HALOGAP", 280)]
1496
                public byte HaloGapPercentage { get; set; } = 0;
698✔
1497

1498
                public Color ObscuredColor { get; set; }
108✔
1499

1500
                /// <summary>
1501
                /// Represents the ACI color index of the "interference objects" created during the INTERFERE command. Default value is 1
1502
                /// </summary>
1503
                /// <remarks>
1504
                /// System variable INTERFERECOLOR
1505
                /// </remarks>
1506
                [CadSystemVariable("$INTERFERECOLOR", 62)]
1507
                public Color InterfereColor { get; set; } = new Color(1);
761✔
1508

1509
                /// <remarks>
1510
                /// System variable OBSCUREDLTYPE
1511
                /// </remarks>
1512
                public byte ObscuredType { get; set; }
108✔
1513

1514
                public byte IntersectionDisplay { get; set; }
108✔
1515

1516
                /// <summary>
1517
                /// Assigns a project name to the current drawing. Used when an external reference or image is not found on its original path. The project name points to a section in the registry that can contain one or more search paths for each project name defined. Project names and their search directories are created from the Files tab of the Options dialog box
1518
                /// </summary>
1519
                /// <remarks>
1520
                /// System variable PROJECTNAME
1521
                /// </remarks>
1522
                [CadSystemVariable("$PROJECTNAME", 1)]
1523
                public string ProjectName { get; set; }
218✔
1524

1525
                /// <remarks>
1526
                /// System variable CAMERADISPLAY
1527
                /// </remarks>
1528
                [CadSystemVariable("$CAMERADISPLAY", 290)]
1529
                public bool CameraDisplayObjects { get; set; }
173✔
1530

1531
                /// <summary>
1532
                /// Specifies the number of steps taken per second when you are in walk or fly mode.
1533
                /// </summary>
1534
                /// <remarks>
1535
                /// System variable STEPSPERSEC
1536
                /// </remarks>
1537
                /// <value>
1538
                /// Valid values are from 1 to 30
1539
                /// </value>
1540
                [CadSystemVariable("$STEPSPERSEC", 40)]
1541
                public double StepsPerSecond
1542
                {
1543
                        get
1544
                        {
17✔
1545
                                return this._stepsPerSecond;
17✔
1546
                        }
17✔
1547
                        set
1548
                        {
156✔
1549
                                ObjectExtensions.InRange(value, 1, 30, "STEPSPERSEC valid values are from 1 to 30");
156✔
1550
                                this._stepsPerSecond = value;
156✔
1551
                        }
156✔
1552
                }
1553

1554
                private double _stepsPerSecond = 2.0d;
480✔
1555

1556
                /// <summary>
1557
                /// Specifies the size of each step when in walk or fly mode, in drawing units.
1558
                /// </summary>
1559
                /// <remarks>
1560
                /// System variable STEPSIZE
1561
                /// </remarks>
1562
                [CadSystemVariable("$STEPSIZE", 40)]
1563
                public double StepSize { get; set; } = 6.0d;
653✔
1564

1565
                /// <remarks>
1566
                /// System variable 3DDWFPREC
1567
                /// </remarks>
1568
                [CadSystemVariable("$3DDWFPREC", 40)]
1569
                public double Dw3DPrecision { get; set; }
173✔
1570

1571
                /// <remarks>
1572
                /// System variable LENSLENGTH
1573
                /// </remarks>
1574
                [CadSystemVariable("$LENSLENGTH", 40)]
1575
                public double LensLength { get; set; }
173✔
1576

1577
                /// <remarks>
1578
                /// System variable CAMERAHEIGHT
1579
                /// </remarks>
1580
                [CadSystemVariable("$CAMERAHEIGHT", 40)]
1581
                public double CameraHeight { get; set; }
173✔
1582

1583
                /// <remarks>
1584
                /// System variable SOLIDHIST
1585
                /// </remarks>
1586
                [CadSystemVariable("$SOLIDHIST", 280)]
1587
                public char SolidsRetainHistory { get; set; }
173✔
1588

1589
                /// <remarks>
1590
                /// System variable SHOWHIST
1591
                /// </remarks>
1592
                [CadSystemVariable("$SHOWHIST", 280)]
1593
                public char ShowSolidsHistory { get; set; }
173✔
1594

1595
                /// <remarks>
1596
                /// System variable PSOLWIDTH
1597
                /// </remarks>
1598
                [CadSystemVariable("$PSOLWIDTH", 40)]
1599
                public double SweptSolidWidth { get; set; }
173✔
1600

1601
                /// <remarks>
1602
                /// System variable PSOLHEIGHT
1603
                /// </remarks>
1604
                [CadSystemVariable("$PSOLHEIGHT", 40)]
1605
                public double SweptSolidHeight { get; set; }
173✔
1606

1607
                /// <remarks>
1608
                /// System variable LOFTANG1
1609
                /// </remarks>
1610
                [CadSystemVariable("$LOFTANG1", 40)]
1611
                public double DraftAngleFirstCrossSection { get; set; }
173✔
1612

1613
                /// <remarks>
1614
                /// System variable LOFTANG2
1615
                /// </remarks>
1616
                [CadSystemVariable("$LOFTANG2", 40)]
1617
                public double DraftAngleSecondCrossSection { get; set; }
173✔
1618

1619
                /// <remarks>
1620
                /// System variable LOFTMAG1
1621
                /// </remarks>
1622
                [CadSystemVariable("$LOFTMAG1", 40)]
1623
                public double DraftMagnitudeFirstCrossSection { get; set; }
173✔
1624

1625
                /// <remarks>
1626
                /// System variable LOFTMAG2
1627
                /// </remarks>
1628
                [CadSystemVariable("$LOFTMAG2", 40)]
1629
                public double DraftMagnitudeSecondCrossSection { get; set; }
173✔
1630

1631
                /// <remarks>
1632
                /// System variable LOFTPARAM
1633
                /// </remarks>
1634
                [CadSystemVariable("$LOFTPARAM", 70)]
1635
                public short SolidLoftedShape { get; set; }
173✔
1636

1637
                /// <remarks>
1638
                /// System variable LOFTNORMALS
1639
                /// </remarks>
1640
                [CadSystemVariable("$LOFTNORMALS", 280)]
1641
                public char LoftedObjectNormals { get; set; }
173✔
1642

1643
                /// <summary>
1644
                /// Specifies the latitude of the drawing model in decimal format.
1645
                /// </summary>
1646
                /// <remarks>
1647
                /// System variable LATITUDE
1648
                /// </remarks>
1649
                [CadSystemVariable("$LATITUDE", 40)]
1650
                public double Latitude { get; set; } = 37.7950d;
653✔
1651

1652
                /// <summary>
1653
                /// Specifies the longitude of the drawing model in decimal format.
1654
                /// </summary>
1655
                /// <remarks>
1656
                /// System variable LONGITUDE
1657
                /// </remarks>
1658
                [CadSystemVariable("$LONGITUDE", 40)]
1659
                public double Longitude { get; set; } = -122.394d;
653✔
1660

1661
                /// <remarks>
1662
                /// System variable NORTHDIRECTION
1663
                /// </remarks>
1664
                [CadSystemVariable("$NORTHDIRECTION", 40)]
1665
                public double NorthDirection { get; set; }
173✔
1666

1667
                /// <summary>
1668
                /// Sets the time zone for the sun in the drawing.
1669
                /// </summary>
1670
                /// <remarks>
1671
                /// The values in the table are expressed as hours and minutes away from Greenwich Mean Time. You can also change this value in the Geographic Location dialog box when you set or edit geographic location information for the drawing file.
1672
                /// <br/>
1673
                /// System variable TIMEZONE
1674
                /// </remarks>
1675
                [CadSystemVariable("$TIMEZONE", 70)]
1676
                public int TimeZone { get; set; } = 0;  //Create enum for variable
653✔
1677

1678
                public char DisplayLightGlyphs { get; set; }
85✔
1679

1680
                /// <remarks>
1681
                /// System variable DWFFRAME
1682
                /// </remarks>
1683
                [CadSystemVariable("$DWFFRAME", 280)]
1684
                public char DwgUnderlayFramesVisibility { get; set; }
173✔
1685

1686
                /// <remarks>
1687
                /// System variable DGNFRAME
1688
                /// </remarks>
1689
                [CadSystemVariable("$DGNFRAME", 280)]
1690
                public char DgnUnderlayFramesVisibility { get; set; }
173✔
1691

1692
                /// <summary>
1693
                /// Shadow mode for a 3D object
1694
                /// </summary>
1695
                /// <remarks>
1696
                /// System variable CSHADOW
1697
                /// </remarks>
1698
                [CadSystemVariable("$CSHADOW", 280)]
1699
                public ShadowMode ShadowMode { get; set; }
173✔
1700

1701
                /// <summary>
1702
                /// Location of the ground shadow plane. This is a Z axis ordinate
1703
                /// </summary>
1704
                /// <remarks>
1705
                /// System variable SHADOWPLANELOCATION
1706
                /// </remarks>
1707
                [CadSystemVariable("$SHADOWPLANELOCATION", 40)]
1708
                public double ShadowPlaneLocation { get; set; }
173✔
1709

1710
                /// <remarks>
1711
                /// System variable STYLESHEET
1712
                /// </remarks>
1713
                [CadSystemVariable("$STYLESHEET", 1)]
1714
                public string StyleSheetName { get; set; }
260✔
1715

1716
                /// <summary>
1717
                /// Dimension text style
1718
                /// </summary>
1719
                /// <remarks>
1720
                /// System variable DIMTXSTY
1721
                /// </remarks>
1722
                [CadSystemVariable("$DIMTXSTY", true, 7)]
1723
                public string DimensionTextStyleName
1724
                {
1725
                        get { return this._dimensionTextStyle.Name; }
×
1726
                        set
1727
                        {
132✔
1728
                                if (this.Document != null)
132!
1729
                                {
×
1730
                                        this._dimensionTextStyle = this.Document.TextStyles[value];
×
1731
                                }
×
1732
                                else
1733
                                {
132✔
1734
                                        this._dimensionTextStyle = new TextStyle(value);
132✔
1735
                                }
132✔
1736
                        }
132✔
1737
                }
1738

1739
                /// <summary>
1740
                /// Dimension style name
1741
                /// </summary>
1742
                /// <remarks>
1743
                /// System variable DIMSTYLE
1744
                /// </remarks>
1745
                [CadSystemVariable("$DIMSTYLE", true, 2)]
1746
                public string DimensionStyleOverridesName
1747
                {
1748
                        get { return this._dimensionStyleOverrides.Name; }
6,078✔
1749
                        set
1750
                        {
166✔
1751
                                if (this.Document != null)
166!
1752
                                {
×
1753
                                        this._dimensionStyleOverrides = this.Document.DimensionStyles[value];
×
1754
                                }
×
1755
                                else
1756
                                {
166✔
1757
                                        this._dimensionStyleOverrides = new DimensionStyle(value);
166✔
1758
                                }
166✔
1759
                        }
166✔
1760
                }
1761

1762
                /// <summary>
1763
                /// Number of precision places displayed in angular dimensions
1764
                /// </summary>
1765
                /// <remarks>
1766
                /// System variable DIMADEC
1767
                /// </remarks>
1768
                [CadSystemVariable("$DIMADEC", 70)]
1769
                public short DimensionAngularDimensionDecimalPlaces
1770
                {
1771
                        get { return this.DimensionStyleOverrides.AngularDimensionDecimalPlaces; }
96✔
1772
                        set
1773
                        {
251✔
1774
                                this.DimensionStyleOverrides.AngularDimensionDecimalPlaces = value;
251✔
1775
                        }
251✔
1776
                }
1777

1778
                /// <summary>
1779
                /// Number of decimal places for the tolerance values of a primary units dimension
1780
                /// </summary>
1781
                /// <remarks>
1782
                /// System variable DIMDEC
1783
                /// </remarks>
1784
                [CadSystemVariable("$DIMDEC", 70)]
1785
                public short DimensionDecimalPlaces
1786
                {
1787
                        get { return this.DimensionStyleOverrides.DecimalPlaces; }
96✔
1788
                        set
1789
                        {
251✔
1790
                                this.DimensionStyleOverrides.DecimalPlaces = value;
251✔
1791
                        }
251✔
1792
                }
1793

1794
                /// <summary>
1795
                /// Number of decimal places to display the tolerance values
1796
                /// </summary>
1797
                /// <remarks>
1798
                /// System variable DIMTDEC
1799
                /// </remarks>
1800
                [CadSystemVariable("$DIMTDEC", 70)]
1801
                public short DimensionToleranceDecimalPlaces
1802
                {
1803
                        get { return this.DimensionStyleOverrides.ToleranceDecimalPlaces; }
96✔
1804
                        set
1805
                        {
251✔
1806
                                this.DimensionStyleOverrides.ToleranceDecimalPlaces = value;
251✔
1807
                        }
251✔
1808
                }
1809

1810
                /// <summary>
1811
                /// Alternate unit dimensioning performed if nonzero
1812
                /// </summary>
1813
                /// <remarks>
1814
                /// System variable DIMALT
1815
                /// </remarks>
1816
                [CadSystemVariable("$DIMALT", 70)]
1817
                public bool DimensionAlternateUnitDimensioning
1818
                {
1819
                        get { return this.DimensionStyleOverrides.AlternateUnitDimensioning; }
96✔
1820
                        set
1821
                        {
273✔
1822
                                this.DimensionStyleOverrides.AlternateUnitDimensioning = value;
273✔
1823
                        }
273✔
1824
                }
1825

1826
                /// <summary>
1827
                /// Units format for alternate units of all dimension style family members except angular
1828
                /// </summary>
1829
                /// <remarks>
1830
                /// System variable DIMALTU
1831
                /// </remarks>
1832
                [CadSystemVariable("$DIMALTU", 70)]
1833
                public LinearUnitFormat DimensionAlternateUnitFormat
1834
                {
1835
                        get { return this.DimensionStyleOverrides.AlternateUnitFormat; }
96✔
1836
                        set
1837
                        {
251✔
1838
                                this.DimensionStyleOverrides.AlternateUnitFormat = value;
251✔
1839
                        }
251✔
1840
                }
1841

1842
                /// <summary>
1843
                /// Alternate unit scale factor
1844
                /// </summary>
1845
                /// <remarks>
1846
                /// System variable DIMALTF
1847
                /// </remarks>
1848
                [CadSystemVariable("$DIMALTF", 40)]
1849
                public double DimensionAlternateUnitScaleFactor
1850
                {
1851
                        get { return this.DimensionStyleOverrides.AlternateUnitScaleFactor; }
96✔
1852
                        set
1853
                        {
273✔
1854
                                this.DimensionStyleOverrides.AlternateUnitScaleFactor = value;
273✔
1855
                        }
273✔
1856
                }
1857

1858
                /// <summary>
1859
                /// Extension line offset
1860
                /// </summary>
1861
                /// <remarks>
1862
                /// System variable DIMEXO
1863
                /// </remarks>
1864
                [CadSystemVariable("$DIMEXO", 40)]
1865
                public double DimensionExtensionLineOffset
1866
                {
1867
                        get { return this.DimensionStyleOverrides.ExtensionLineOffset; }
96✔
1868
                        set
1869
                        {
273✔
1870
                                this.DimensionStyleOverrides.ExtensionLineOffset = value;
273✔
1871
                        }
273✔
1872
                }
1873

1874
                /// <summary>
1875
                /// Overall dimensioning scale factor
1876
                /// </summary>
1877
                /// <remarks>
1878
                /// System variable DIMSCALE
1879
                /// </remarks>
1880
                [CadSystemVariable("$DIMSCALE", 40)]
1881
                public double DimensionScaleFactor
1882
                {
1883
                        get { return this.DimensionStyleOverrides.ScaleFactor; }
96✔
1884
                        set
1885
                        {
273✔
1886
                                this.DimensionStyleOverrides.ScaleFactor = value;
273✔
1887
                        }
273✔
1888
                }
1889

1890
                /// <summary>
1891
                /// Alternate unit decimal places
1892
                /// </summary>
1893
                /// <remarks>
1894
                /// System variable DIMALTD
1895
                /// </remarks>
1896
                [CadSystemVariable("$DIMALTD", 70)]
1897
                public short DimensionAlternateUnitDecimalPlaces
1898
                {
1899
                        get { return this.DimensionStyleOverrides.AlternateUnitDecimalPlaces; }
96✔
1900
                        set
1901
                        {
273✔
1902
                                this.DimensionStyleOverrides.AlternateUnitDecimalPlaces = value;
273✔
1903
                        }
273✔
1904
                }
1905

1906
                /// <summary>
1907
                /// Number of decimal places for tolerance values of an alternate units dimension
1908
                /// </summary>
1909
                /// <remarks>
1910
                /// System variable DIMALTTD
1911
                /// </remarks>
1912
                [CadSystemVariable("$DIMALTTD", 70)]
1913
                public short DimensionAlternateUnitToleranceDecimalPlaces
1914
                {
1915
                        get { return this.DimensionStyleOverrides.AlternateUnitToleranceDecimalPlaces; }
96✔
1916
                        set
1917
                        {
251✔
1918
                                this.DimensionStyleOverrides.AlternateUnitToleranceDecimalPlaces = value;
251✔
1919
                        }
251✔
1920
                }
1921

1922
                /// <summary>
1923
                /// Angle format for angular dimensions
1924
                /// </summary>
1925
                /// <remarks>
1926
                /// System variable DIMAUNIT
1927
                /// </remarks>
1928
                [CadSystemVariable("$DIMAUNIT", 70)]
1929
                public AngularUnitFormat DimensionAngularUnit
1930
                {
1931
                        get { return this.DimensionStyleOverrides.AngularUnit; }
81✔
1932
                        set
1933
                        {
233✔
1934
                                this.DimensionStyleOverrides.AngularUnit = value;
233✔
1935
                        }
233✔
1936
                }
1937

1938
                /// <summary>
1939
                /// Undocumented
1940
                /// </summary>
1941
                /// <remarks>
1942
                /// System variable DIMFRAC
1943
                /// </remarks>
1944
                [CadSystemVariable("$DIMFRAC", 70)]
1945
                public FractionFormat DimensionFractionFormat
1946
                {
1947
                        get { return this.DimensionStyleOverrides.FractionFormat; }
81✔
1948
                        set
1949
                        {
233✔
1950
                                this.DimensionStyleOverrides.FractionFormat = value;
233✔
1951
                        }
233✔
1952
                }
1953

1954
                /// <summary>
1955
                /// Sets units for all dimension types except Angular
1956
                /// </summary>
1957
                /// <remarks>
1958
                /// System variable DIMLUNIT
1959
                /// </remarks>
1960
                [CadSystemVariable("$DIMLUNIT", 70)]
1961
                public LinearUnitFormat DimensionLinearUnitFormat
1962
                {
1963
                        get { return this.DimensionStyleOverrides.LinearUnitFormat; }
81✔
1964
                        set
1965
                        {
233✔
1966
                                this.DimensionStyleOverrides.LinearUnitFormat = value;
233✔
1967
                        }
233✔
1968
                }
1969

1970
                /// <summary>
1971
                /// Single-character decimal separator used when creating dimensions whose unit format is decimal
1972
                /// </summary>
1973
                /// <remarks>
1974
                /// System variable DIMLUNIT
1975
                /// </remarks>
1976
                [CadSystemVariable("$DIMDSEP", 70)]
1977
                public char DimensionDecimalSeparator
1978
                {
1979
                        get { return this.DimensionStyleOverrides.DecimalSeparator; }
81✔
1980
                        set
1981
                        {
233✔
1982
                                this.DimensionStyleOverrides.DecimalSeparator = value;
233✔
1983
                        }
233✔
1984
                }
1985

1986
                /// <summary>
1987
                /// Dimension text movement rules decimal
1988
                /// </summary>
1989
                /// <remarks>
1990
                /// System variable DIMTMOVE
1991
                /// </remarks>
1992
                [CadSystemVariable("$DIMTMOVE", 70)]
1993
                public TextMovement DimensionTextMovement
1994
                {
1995
                        get { return this.DimensionStyleOverrides.TextMovement; }
81✔
1996
                        set
1997
                        {
233✔
1998
                                this.DimensionStyleOverrides.TextMovement = value;
233✔
1999
                        }
233✔
2000
                }
2001

2002
                /// <summary>
2003
                /// Horizontal dimension text position
2004
                /// </summary>
2005
                /// <remarks>
2006
                /// System variable DIMJUST
2007
                /// </remarks>
2008
                [CadSystemVariable("$DIMJUST", 70)]
2009
                public DimensionTextHorizontalAlignment DimensionTextHorizontalAlignment
2010
                {
2011
                        get { return this.DimensionStyleOverrides.TextHorizontalAlignment; }
96✔
2012
                        set
2013
                        {
251✔
2014
                                this.DimensionStyleOverrides.TextHorizontalAlignment = value;
251✔
2015
                        }
251✔
2016
                }
2017

2018
                /// <summary>
2019
                /// Suppression of first extension line
2020
                /// </summary>
2021
                /// <remarks>
2022
                /// System variable DIMSD1
2023
                /// </remarks>
2024
                [CadSystemVariable("$DIMSD1", 70)]
2025
                public bool DimensionSuppressFirstDimensionLine
2026
                {
2027
                        get { return this.DimensionStyleOverrides.SuppressFirstDimensionLine; }
15✔
2028
                        set
2029
                        {
150✔
2030
                                this.DimensionStyleOverrides.SuppressFirstDimensionLine = value;
150✔
2031
                        }
150✔
2032
                }
2033

2034
                /// <summary>
2035
                /// Suppression of second extension line
2036
                /// </summary>
2037
                /// <remarks>
2038
                /// System variable DIMSD2
2039
                /// </remarks>
2040
                [CadSystemVariable("$DIMSD2", 70)]
2041
                public bool DimensionSuppressSecondDimensionLine
2042
                {
2043
                        get { return this.DimensionStyleOverrides.SuppressSecondDimensionLine; }
15✔
2044
                        set
2045
                        {
150✔
2046
                                this.DimensionStyleOverrides.SuppressSecondDimensionLine = value;
150✔
2047
                        }
150✔
2048
                }
2049

2050
                /// <summary>
2051
                /// Vertical justification for tolerance values
2052
                /// </summary>
2053
                /// <remarks>
2054
                /// System variable DIMTOL
2055
                /// </remarks>
2056
                [CadSystemVariable("$DIMTOL", 70)]
2057
                public bool DimensionGenerateTolerances
2058
                {
2059
                        get { return this.DimensionStyleOverrides.GenerateTolerances; }
96✔
2060
                        set
2061
                        {
273✔
2062
                                this.DimensionStyleOverrides.GenerateTolerances = value;
273✔
2063
                        }
273✔
2064
                }
2065

2066
                /// <summary>
2067
                /// Vertical justification for tolerance values
2068
                /// </summary>
2069
                /// <remarks>
2070
                /// System variable DIMTOLJ
2071
                /// </remarks>
2072
                [CadSystemVariable("$DIMTOLJ", 70)]
2073
                public ToleranceAlignment DimensionToleranceAlignment
2074
                {
2075
                        get { return this.DimensionStyleOverrides.ToleranceAlignment; }
96✔
2076
                        set
2077
                        {
251✔
2078
                                this.DimensionStyleOverrides.ToleranceAlignment = value;
251✔
2079
                        }
251✔
2080
                }
2081

2082
                /// <summary>
2083
                /// Controls suppression of zeros for primary unit values
2084
                /// </summary>
2085
                /// <remarks>
2086
                /// System variable DIMZIN
2087
                /// </remarks>
2088
                [CadSystemVariable("$DIMZIN", 70)]
2089
                public ZeroHandling DimensionZeroHandling
2090
                {
2091
                        get { return this.DimensionStyleOverrides.ZeroHandling; }
96✔
2092
                        set
2093
                        {
273✔
2094
                                this.DimensionStyleOverrides.ZeroHandling = value;
273✔
2095
                        }
273✔
2096
                }
2097

2098
                /// <summary>
2099
                /// Controls suppression of zeros for tolerance values
2100
                /// </summary>
2101
                /// <remarks>
2102
                /// System variable DIMTZIN
2103
                /// </remarks>
2104
                [CadSystemVariable("$DIMTZIN", 70)]
2105
                public ZeroHandling DimensionToleranceZeroHandling
2106
                {
2107
                        get { return this.DimensionStyleOverrides.ToleranceZeroHandling; }
96✔
2108
                        set
2109
                        {
251✔
2110
                                this.DimensionStyleOverrides.ToleranceZeroHandling = value;
251✔
2111
                        }
251✔
2112
                }
2113

2114
                /// <remarks>
2115
                /// System variable DIMFIT
2116
                /// </remarks>
2117
                [CadSystemVariable("$DIMFIT", 70)]
2118
                public short DimensionFit
2119
                {
2120
                        get { return this.DimensionStyleOverrides.DimensionFit; }
15✔
2121
                        set
2122
                        {
18✔
2123
                                this.DimensionStyleOverrides.DimensionFit = value;
18✔
2124
                        }
18✔
2125
                }
2126

2127
                /// <summary>
2128
                /// Controls suppression of zeros for alternate unit dimension values
2129
                /// </summary>
2130
                /// <remarks>
2131
                /// System variable DIMALTZ
2132
                /// </remarks>
2133
                [CadSystemVariable("$DIMALTZ", 70)]
2134
                public ZeroHandling DimensionAlternateUnitZeroHandling
2135
                {
2136
                        get { return this.DimensionStyleOverrides.AlternateUnitZeroHandling; }
96✔
2137
                        set
2138
                        {
251✔
2139
                                this.DimensionStyleOverrides.AlternateUnitZeroHandling = value;
251✔
2140
                        }
251✔
2141
                }
2142

2143
                /// <summary>
2144
                /// Controls suppression of zeros for alternate tolerance values
2145
                /// </summary>
2146
                /// <remarks>
2147
                /// System variable DIMALTTZ
2148
                /// </remarks>
2149
                [CadSystemVariable("$DIMALTTZ", 70)]
2150
                public ZeroHandling DimensionAlternateUnitToleranceZeroHandling
2151
                {
2152
                        get { return this.DimensionStyleOverrides.AlternateUnitToleranceZeroHandling; }
96✔
2153
                        set
2154
                        {
251✔
2155
                                this.DimensionStyleOverrides.AlternateUnitToleranceZeroHandling = value;
251✔
2156
                        }
251✔
2157
                }
2158

2159
                /// <summary>
2160
                /// Cursor functionality for user-positioned text
2161
                /// </summary>
2162
                /// <remarks>
2163
                /// System variable DIMUPT
2164
                /// </remarks>
2165
                [CadSystemVariable("$DIMUPT", 70)]
2166
                public bool DimensionCursorUpdate
2167
                {
2168
                        get { return this.DimensionStyleOverrides.CursorUpdate; }
96✔
2169
                        set
2170
                        {
251✔
2171
                                this.DimensionStyleOverrides.CursorUpdate = value;
251✔
2172
                        }
251✔
2173
                }
2174

2175
                /// <summary>
2176
                /// Controls dimension text and arrow placement when space is not sufficient to place both within the extension lines
2177
                /// </summary>
2178
                /// <remarks>
2179
                /// System variable DIMATFIT
2180
                /// </remarks>
2181
                [CadSystemVariable("$DIMATFIT", 70)]
2182
                public TextArrowFitType DimensionDimensionTextArrowFit
2183
                {
2184
                        get { return this.DimensionStyleOverrides.DimensionTextArrowFit; }
81✔
2185
                        set
2186
                        {
233✔
2187
                                this.DimensionStyleOverrides.DimensionTextArrowFit = value;
233✔
2188
                        }
233✔
2189
                }
2190

2191
                /// <summary>
2192
                /// Determines rounding of alternate units
2193
                /// </summary>
2194
                /// <remarks>
2195
                /// System variable DIMALTRND
2196
                /// </remarks>
2197
                [CadSystemVariable("$DIMALTRND", 40)]
2198
                public double DimensionAlternateUnitRounding
2199
                {
2200
                        get { return this.DimensionStyleOverrides.AlternateUnitRounding; }
81✔
2201
                        set
2202
                        {
233✔
2203
                                this.DimensionStyleOverrides.AlternateUnitRounding = value;
233✔
2204
                        }
233✔
2205
                }
2206

2207
                /// <summary>
2208
                /// Alternate dimensioning suffix
2209
                /// </summary>
2210
                /// <remarks>
2211
                /// System variable DIMAPOST
2212
                /// </remarks>
2213
                [CadSystemVariable("$DIMAPOST", 1)]
2214
                public string DimensionAlternateDimensioningSuffix
2215
                {
2216
                        get { return this.DimensionStyleOverrides.AlternateDimensioningSuffix; }
96✔
2217
                        set
2218
                        {
273✔
2219
                                this.DimensionStyleOverrides.AlternateDimensioningSuffix = value;
273✔
2220
                        }
273✔
2221
                }
2222

2223
                /// <summary>
2224
                /// Dimensioning arrow size
2225
                /// </summary>
2226
                /// <remarks>
2227
                /// System variable DIMASZ
2228
                /// </remarks>
2229
                [CadSystemVariable("$DIMASZ", 40)]
2230
                public double DimensionArrowSize
2231
                {
2232
                        get { return this.DimensionStyleOverrides.ArrowSize; }
96✔
2233
                        set
2234
                        {
273✔
2235
                                this.DimensionStyleOverrides.ArrowSize = value;
273✔
2236
                        }
273✔
2237
                }
2238

2239
                /// <summary>
2240
                /// Controls suppression of zeros for angular dimensions
2241
                /// </summary>
2242
                /// <remarks>
2243
                /// System variable DIMAZIN
2244
                /// </remarks>
2245
                [CadSystemVariable("$DIMAZIN", 70)]
2246
                public ZeroHandling DimensionAngularZeroHandling
2247
                {
2248
                        get { return this.DimensionStyleOverrides.AngularZeroHandling; }
81✔
2249
                        set
2250
                        {
233✔
2251
                                this.DimensionStyleOverrides.AngularZeroHandling = value;
233✔
2252
                        }
233✔
2253
                }
2254

2255
                /// <summary>
2256
                /// Undocumented
2257
                /// </summary>
2258
                /// <remarks>
2259
                /// System variable DIMARCSYM
2260
                /// </remarks>
2261
                [CadSystemVariable("$DIMARCSYM", 70)]
2262
                public ArcLengthSymbolPosition DimensionArcLengthSymbolPosition
2263
                {
2264
                        get { return this.DimensionStyleOverrides.ArcLengthSymbolPosition; }
51✔
2265
                        set
2266
                        {
156✔
2267
                                this.DimensionStyleOverrides.ArcLengthSymbolPosition = value;
156✔
2268
                        }
156✔
2269
                }
2270

2271
                /// <summary>
2272
                /// Use separate arrow blocks if nonzero
2273
                /// </summary>
2274
                /// <remarks>
2275
                /// System variable DIMSAH
2276
                /// </remarks>
2277
                [CadSystemVariable("$DIMSAH", 70)]
2278
                public bool DimensionSeparateArrowBlocks
2279
                {
2280
                        get { return this.DimensionStyleOverrides.SeparateArrowBlocks; }
96✔
2281
                        set
2282
                        {
273✔
2283
                                this.DimensionStyleOverrides.SeparateArrowBlocks = value;
273✔
2284
                        }
273✔
2285
                }
2286

2287
                /// <summary>
2288
                /// Size of center mark/lines
2289
                /// </summary>
2290
                /// <remarks>
2291
                /// System variable DIMCEN
2292
                /// </remarks>
2293
                [CadSystemVariable("$DIMCEN", 40)]
2294
                public double DimensionCenterMarkSize
2295
                {
2296
                        get { return this.DimensionStyleOverrides.CenterMarkSize; }
96✔
2297
                        set
2298
                        {
273✔
2299
                                this.DimensionStyleOverrides.CenterMarkSize = value;
273✔
2300
                        }
273✔
2301
                }
2302

2303
                /// <summary>
2304
                /// Dimensioning tick size
2305
                /// </summary>
2306
                /// <remarks>
2307
                /// System variable DIMTSZ
2308
                /// </remarks>
2309
                [CadSystemVariable("$DIMTSZ", 40)]
2310
                public double DimensionTickSize
2311
                {
2312
                        get { return this.DimensionStyleOverrides.TickSize; }
96✔
2313
                        set
2314
                        {
273✔
2315
                                this.DimensionStyleOverrides.TickSize = value;
273✔
2316
                        }
273✔
2317
                }
2318

2319
                /// <summary>
2320
                /// Dimension line color
2321
                /// </summary>
2322
                /// <remarks>
2323
                /// System variable DIMCLRD
2324
                /// </remarks>
2325
                [CadSystemVariable("$DIMCLRD", 70)]
2326
                public Color DimensionLineColor
2327
                {
2328
                        get { return this.DimensionStyleOverrides.DimensionLineColor; }
96✔
2329
                        set
2330
                        {
273✔
2331
                                this.DimensionStyleOverrides.DimensionLineColor = value;
273✔
2332
                        }
273✔
2333
                }
2334

2335
                /// <summary>
2336
                /// Dimension extension line color
2337
                /// </summary>
2338
                /// <remarks>
2339
                /// System variable DIMCLRE
2340
                /// </remarks>
2341
                [CadSystemVariable("$DIMCLRE", 70)]
2342
                public Color DimensionExtensionLineColor
2343
                {
2344
                        get { return this.DimensionStyleOverrides.ExtensionLineColor; }
96✔
2345
                        set
2346
                        {
273✔
2347
                                this.DimensionStyleOverrides.ExtensionLineColor = value;
273✔
2348
                        }
273✔
2349
                }
2350

2351
                /// <summary>
2352
                /// Dimension text color
2353
                /// </summary>
2354
                /// <remarks>
2355
                /// System variable DIMCLRT
2356
                /// </remarks>
2357
                [CadSystemVariable("$DIMCLRT", 70)]
2358
                public Color DimensionTextColor
2359
                {
2360
                        get { return this.DimensionStyleOverrides.TextColor; }
96✔
2361
                        set
2362
                        {
273✔
2363
                                this.DimensionStyleOverrides.TextColor = value;
273✔
2364
                        }
273✔
2365
                }
2366

2367
                /// <summary>
2368
                /// Dimension line extension
2369
                /// </summary>
2370
                /// <remarks>
2371
                /// System variable DIMDLE
2372
                /// </remarks>
2373
                [CadSystemVariable("$DIMDLE", 40)]
2374
                public double DimensionLineExtension
2375
                {
2376
                        get { return this.DimensionStyleOverrides.DimensionLineExtension; }
96✔
2377
                        set
2378
                        {
273✔
2379
                                this.DimensionStyleOverrides.DimensionLineExtension = value;
273✔
2380
                        }
273✔
2381
                }
2382

2383
                /// <summary>
2384
                /// Dimension line increment
2385
                /// </summary>
2386
                /// <remarks>
2387
                /// System variable DIMDLI
2388
                /// </remarks>
2389
                [CadSystemVariable("$DIMDLI", 40)]
2390
                public double DimensionLineIncrement
2391
                {
2392
                        get { return this.DimensionStyleOverrides.DimensionLineIncrement; }
96✔
2393
                        set
2394
                        {
273✔
2395
                                this.DimensionStyleOverrides.DimensionLineIncrement = value;
273✔
2396
                        }
273✔
2397
                }
2398

2399
                /// <summary>
2400
                /// Extension line extension
2401
                /// </summary>
2402
                /// <remarks>
2403
                /// System variable DIMEXE
2404
                /// </remarks>
2405
                [CadSystemVariable("$DIMEXE", 40)]
2406
                public double DimensionExtensionLineExtension
2407
                {
2408
                        get { return this.DimensionStyleOverrides.ExtensionLineExtension; }
96✔
2409
                        set
2410
                        {
273✔
2411
                                this.DimensionStyleOverrides.ExtensionLineExtension = value;
273✔
2412
                        }
273✔
2413
                }
2414

2415
                /// <summary>
2416
                /// Undocumented
2417
                /// </summary>
2418
                /// <remarks>
2419
                /// System variable DIMFXLON
2420
                /// </remarks>
2421
                [CadSystemVariable("$DIMFXLON", 70)]
2422
                public bool DimensionIsExtensionLineLengthFixed
2423
                {
2424
                        get { return this.DimensionStyleOverrides.IsExtensionLineLengthFixed; }
51✔
2425
                        set
2426
                        {
156✔
2427
                                this.DimensionStyleOverrides.IsExtensionLineLengthFixed = value;
156✔
2428
                        }
156✔
2429
                }
2430

2431
                /// <summary>
2432
                /// Undocumented
2433
                /// </summary>
2434
                /// <remarks>
2435
                /// System variable DIMFXL
2436
                /// </remarks>
2437
                [CadSystemVariable("$DIMFXL", 40)]
2438
                public double DimensionFixedExtensionLineLength
2439
                {
2440
                        get { return this.DimensionStyleOverrides.FixedExtensionLineLength; }
51✔
2441
                        set
2442
                        {
156✔
2443
                                this.DimensionStyleOverrides.FixedExtensionLineLength = value;
156✔
2444
                        }
156✔
2445
                }
2446

2447
                /// <summary>
2448
                /// Undocumented
2449
                /// </summary>
2450
                /// <remarks>
2451
                /// System variable DIMJOGANG
2452
                /// </remarks>
2453
                [CadSystemVariable("$DIMJOGANG", 40)]
2454
                public double DimensionJoggedRadiusDimensionTransverseSegmentAngle
2455
                {
2456
                        get { return this.DimensionStyleOverrides.JoggedRadiusDimensionTransverseSegmentAngle; }
51✔
2457
                        set
2458
                        {
156✔
2459
                                this.DimensionStyleOverrides.JoggedRadiusDimensionTransverseSegmentAngle = value;
156✔
2460
                        }
156✔
2461
                }
2462

2463
                /// <summary>
2464
                /// Undocumented
2465
                /// </summary>
2466
                /// <remarks>
2467
                /// System variable DIMTFILL
2468
                /// </remarks>
2469
                [CadSystemVariable("$DIMTFILL", 70)]
2470
                public DimensionTextBackgroundFillMode DimensionTextBackgroundFillMode
2471
                {
2472
                        get { return this.DimensionStyleOverrides.TextBackgroundFillMode; }
51✔
2473
                        set
2474
                        {
156✔
2475
                                this.DimensionStyleOverrides.TextBackgroundFillMode = value;
156✔
2476
                        }
156✔
2477
                }
2478

2479
                /// <summary>
2480
                /// Undocumented
2481
                /// </summary>
2482
                /// <remarks>
2483
                /// System variable DIMTFILLCLR
2484
                /// </remarks>
2485
                [CadSystemVariable(DxfReferenceType.Ignored, "$DIMTFILLCLR", 62)]
2486
                public Color DimensionTextBackgroundColor
2487
                {
2488
                        get { return this.DimensionStyleOverrides.TextBackgroundColor; }
51✔
2489
                        set
2490
                        {
156✔
2491
                                this.DimensionStyleOverrides.TextBackgroundColor = value;
156✔
2492
                        }
156✔
2493
                }
2494

2495
                /// <summary>
2496
                /// Undocumented
2497
                /// </summary>
2498
                /// <remarks>
2499
                /// System variable DIMGAP
2500
                /// </remarks>
2501
                [CadSystemVariable("$DIMGAP", 40)]
2502
                public double DimensionLineGap
2503
                {
2504
                        get { return this.DimensionStyleOverrides.DimensionLineGap; }
96✔
2505
                        set
2506
                        {
273✔
2507
                                this.DimensionStyleOverrides.DimensionLineGap = value;
273✔
2508
                        }
273✔
2509
                }
2510

2511
                /// <summary>
2512
                /// Linear measurements scale factor
2513
                /// </summary>
2514
                /// <remarks>
2515
                /// System variable DIMLFAC
2516
                /// </remarks>
2517
                [CadSystemVariable("$DIMLFAC", 40)]
2518
                public double DimensionLinearScaleFactor
2519
                {
2520
                        get { return this.DimensionStyleOverrides.LinearScaleFactor; }
96✔
2521
                        set
2522
                        {
273✔
2523
                                this.DimensionStyleOverrides.LinearScaleFactor = value;
273✔
2524
                        }
273✔
2525
                }
2526

2527
                /// <summary>
2528
                /// Text vertical position
2529
                /// </summary>
2530
                /// <remarks>
2531
                /// System variable DIMTVP
2532
                /// </remarks>
2533
                [CadSystemVariable("$DIMTVP", 40)]
2534
                public double DimensionTextVerticalPosition
2535
                {
2536
                        get { return this.DimensionStyleOverrides.TextVerticalPosition; }
96✔
2537
                        set
2538
                        {
273✔
2539
                                this.DimensionStyleOverrides.TextVerticalPosition = value;
273✔
2540
                        }
273✔
2541
                }
2542

2543
                /// <summary>
2544
                /// Dimension line lineweight
2545
                /// </summary>
2546
                /// <remarks>
2547
                /// System variable DIMLWD
2548
                /// </remarks>
2549
                [CadSystemVariable("$DIMLWD", 70)]
2550
                public LineweightType DimensionLineWeight
2551
                {
2552
                        get { return this.DimensionStyleOverrides.DimensionLineWeight; }
81✔
2553
                        set
2554
                        {
233✔
2555
                                this.DimensionStyleOverrides.DimensionLineWeight = value;
233✔
2556
                        }
233✔
2557
                }
2558

2559
                /// <summary>
2560
                /// Extension line lineweight
2561
                /// </summary>
2562
                /// <remarks>
2563
                /// System variable DIMLWE
2564
                /// </remarks>
2565
                [CadSystemVariable("$DIMLWE", 70)]
2566
                public LineweightType ExtensionLineWeight
2567
                {
2568
                        get { return this.DimensionStyleOverrides.ExtensionLineWeight; }
81✔
2569
                        set
2570
                        {
233✔
2571
                                this.DimensionStyleOverrides.ExtensionLineWeight = value;
233✔
2572
                        }
233✔
2573
                }
2574

2575
                /// <summary>
2576
                /// Undocumented
2577
                /// </summary>
2578
                /// <remarks>
2579
                /// System variable DIMPOST
2580
                /// </remarks>
2581
                [CadSystemVariable("$DIMPOST", 1)]
2582
                public string DimensionPostFix
2583
                {
2584
                        get { return this.DimensionStyleOverrides.PostFix; }
96✔
2585
                        set
2586
                        {
273✔
2587
                                this.DimensionStyleOverrides.PostFix = value;
273✔
2588
                        }
273✔
2589
                }
2590

2591
                /// <summary>
2592
                /// Rounding value for dimension distances
2593
                /// </summary>
2594
                /// <remarks>
2595
                /// System variable DIMRND
2596
                /// </remarks>
2597
                [CadSystemVariable("$DIMRND", 40)]
2598
                public double DimensionRounding
2599
                {
2600
                        get { return this.DimensionStyleOverrides.Rounding; }
96✔
2601
                        set
2602
                        {
273✔
2603
                                this.DimensionStyleOverrides.Rounding = value;
273✔
2604
                        }
273✔
2605
                }
2606

2607
                /// <summary>
2608
                /// First extension line suppressed if nonzero
2609
                /// </summary>
2610
                /// <remarks>
2611
                /// System variable DIMSE1
2612
                /// </remarks>
2613
                [CadSystemVariable("$DIMSE1", 70)]
2614
                public bool DimensionSuppressFirstExtensionLine
2615
                {
2616
                        get { return this.DimensionStyleOverrides.SuppressFirstExtensionLine; }
177✔
2617
                        set
2618
                        {
374✔
2619
                                this.DimensionStyleOverrides.SuppressFirstExtensionLine = value;
374✔
2620
                        }
374✔
2621
                }
2622

2623
                /// <summary>
2624
                /// Second extension line suppressed if nonzero
2625
                /// </summary>
2626
                /// <remarks>
2627
                /// System variable DIMSE2
2628
                /// </remarks>
2629
                [CadSystemVariable("$DIMSE2", 70)]
2630
                public bool DimensionSuppressSecondExtensionLine
2631
                {
2632
                        get { return this.DimensionStyleOverrides.SuppressSecondExtensionLine; }
177✔
2633
                        set
2634
                        {
374✔
2635
                                this.DimensionStyleOverrides.SuppressSecondExtensionLine = value;
374✔
2636
                        }
374✔
2637
                }
2638

2639
                /// <summary>
2640
                /// Suppress outside-extensions dimension lines if nonzero
2641
                /// </summary>
2642
                /// <remarks>
2643
                /// System variable DIMSOXD
2644
                /// </remarks>
2645
                [CadSystemVariable("$DIMSOXD", 70)]
2646
                public bool DimensionSuppressOutsideExtensions
2647
                {
2648
                        get { return this.DimensionStyleOverrides.SuppressOutsideExtensions; }
96✔
2649
                        set
2650
                        {
273✔
2651
                                this.DimensionStyleOverrides.SuppressOutsideExtensions = value;
273✔
2652
                        }
273✔
2653
                }
2654

2655
                /// <summary>
2656
                /// Text above dimension line if nonzero
2657
                /// </summary>
2658
                /// <remarks>
2659
                /// System variable DIMTAD
2660
                /// </remarks>
2661
                [CadSystemVariable("$DIMTAD", 70)]
2662
                public DimensionTextVerticalAlignment DimensionTextVerticalAlignment
2663
                {
2664
                        get { return this.DimensionStyleOverrides.TextVerticalAlignment; }
96✔
2665
                        set
2666
                        {
273✔
2667
                                this.DimensionStyleOverrides.TextVerticalAlignment = value;
273✔
2668
                        }
273✔
2669
                }
2670

2671
                /// <summary>
2672
                /// Controls suppression of zeros for alternate unit dimension values
2673
                /// </summary>
2674
                /// <remarks>
2675
                /// System variable DIMUNIT
2676
                /// </remarks>
2677
                [CadSystemVariable("$DIMUNIT", 70)]
2678
                public short DimensionUnit
2679
                {
2680
                        get { return this.DimensionStyleOverrides.DimensionUnit; }
15✔
2681
                        set
2682
                        {
18✔
2683
                                this.DimensionStyleOverrides.DimensionUnit = value;
18✔
2684
                        }
18✔
2685
                }
2686

2687
                /// <summary>
2688
                /// Dimension tolerance display scale factor
2689
                /// </summary>
2690
                /// <remarks>
2691
                /// System variable DIMTFAC
2692
                /// </remarks>
2693
                [CadSystemVariable("$DIMTFAC", 40)]
2694
                public double DimensionToleranceScaleFactor
2695
                {
2696
                        get { return this.DimensionStyleOverrides.ToleranceScaleFactor; }
96✔
2697
                        set
2698
                        {
273✔
2699
                                this.DimensionStyleOverrides.ToleranceScaleFactor = value;
273✔
2700
                        }
273✔
2701
                }
2702

2703
                /// <summary>
2704
                /// Text inside horizontal if nonzero
2705
                /// </summary>
2706
                /// <remarks>
2707
                /// System variable DIMTIH
2708
                /// </remarks>
2709
                [CadSystemVariable("$DIMTIH", 70)]
2710
                public bool DimensionTextInsideHorizontal
2711
                {
2712
                        get { return this.DimensionStyleOverrides.TextInsideHorizontal; }
96✔
2713
                        set
2714
                        {
273✔
2715
                                this.DimensionStyleOverrides.TextInsideHorizontal = value;
273✔
2716
                        }
273✔
2717
                }
2718

2719
                /// <summary>
2720
                /// Force text inside extensions if nonzero
2721
                /// </summary>
2722
                /// <remarks>
2723
                /// System variable DIMTIX
2724
                /// </remarks>
2725
                [CadSystemVariable("$DIMTIX", 70)]
2726
                public bool DimensionTextInsideExtensions
2727
                {
2728
                        get { return this.DimensionStyleOverrides.TextInsideExtensions; }
96✔
2729
                        set
2730
                        {
273✔
2731
                                this.DimensionStyleOverrides.TextInsideExtensions = value;
273✔
2732
                        }
273✔
2733
                }
2734

2735
                /// <summary>
2736
                /// Minus tolerance
2737
                /// </summary>
2738
                /// <remarks>
2739
                /// System variable DIMTM
2740
                /// </remarks>
2741
                [CadSystemVariable("$DIMTM", 40)]
2742
                public double DimensionMinusTolerance
2743
                {
2744
                        get { return this.DimensionStyleOverrides.MinusTolerance; }
96✔
2745
                        set
2746
                        {
273✔
2747
                                this.DimensionStyleOverrides.MinusTolerance = value;
273✔
2748
                        }
273✔
2749
                }
2750

2751
                /// <summary>
2752
                /// If text is outside the extension lines, dimension lines are forced between the extension lines if nonzero
2753
                /// </summary>
2754
                /// <remarks>
2755
                /// System variable DIMTOFL
2756
                /// </remarks>
2757
                [CadSystemVariable("$DIMTOFL", 70)]
2758
                public bool DimensionTextOutsideExtensions
2759
                {
2760
                        get { return this.DimensionStyleOverrides.TextOutsideExtensions; }
96✔
2761
                        set
2762
                        {
273✔
2763
                                this.DimensionStyleOverrides.TextOutsideExtensions = value;
273✔
2764
                        }
273✔
2765
                }
2766

2767
                /// <summary>
2768
                /// Text outside horizontal if nonzero
2769
                /// </summary>
2770
                /// <remarks>
2771
                /// System variable DIMTOH
2772
                /// </remarks>
2773
                [CadSystemVariable("$DIMTOH", 70)]
2774
                public bool DimensionTextOutsideHorizontal
2775
                {
2776
                        get { return this.DimensionStyleOverrides.TextOutsideHorizontal; }
96✔
2777
                        set
2778
                        {
273✔
2779
                                this.DimensionStyleOverrides.TextOutsideHorizontal = value;
273✔
2780
                        }
273✔
2781
                }
2782

2783
                /// <summary>
2784
                /// Dimension limits generated if nonzero
2785
                /// </summary>
2786
                /// <remarks>
2787
                /// System variable DIMLIM
2788
                /// </remarks>
2789
                [CadSystemVariable("$DIMLIM", 70)]
2790
                public bool DimensionLimitsGeneration
2791
                {
2792
                        get { return this.DimensionStyleOverrides.LimitsGeneration; }
96✔
2793
                        set
2794
                        {
273✔
2795
                                this.DimensionStyleOverrides.LimitsGeneration = value;
273✔
2796
                        }
273✔
2797
                }
2798

2799
                /// <summary>
2800
                /// Plus tolerance
2801
                /// </summary>
2802
                /// <remarks>
2803
                /// System variable DIMTP
2804
                /// </remarks>
2805
                [CadSystemVariable("$DIMTP", 40)]
2806
                public double DimensionPlusTolerance
2807
                {
2808
                        get { return this.DimensionStyleOverrides.PlusTolerance; }
96✔
2809
                        set
2810
                        {
273✔
2811
                                this.DimensionStyleOverrides.PlusTolerance = value;
273✔
2812
                        }
273✔
2813
                }
2814

2815
                /// <summary>
2816
                /// Dimensioning text height
2817
                /// </summary>
2818
                /// <remarks>
2819
                /// System variable DIMTXT
2820
                /// </remarks>
2821
                [CadSystemVariable("$DIMTXT", 40)]
2822
                public double DimensionTextHeight
2823
                {
2824
                        get { return this.DimensionStyleOverrides.TextHeight; }
96✔
2825
                        set
2826
                        {
273✔
2827
                                this.DimensionStyleOverrides.TextHeight = value;
273✔
2828
                        }
273✔
2829
                }
2830

2831
                /// <summary>
2832
                /// Undocumented
2833
                /// </summary>
2834
                /// <remarks>
2835
                /// System variable DIMTXTDIRECTION
2836
                /// </remarks>
2837
                [CadSystemVariable("$DIMTXTDIRECTION", 70)]
2838
                public TextDirection DimensionTextDirection
2839
                {
2840
                        get { return this.DimensionStyleOverrides.TextDirection; }
48✔
2841
                        set
2842
                        {
120✔
2843
                                this.DimensionStyleOverrides.TextDirection = value;
120✔
2844
                        }
120✔
2845
                }
2846

2847
                /// <summary>
2848
                /// Undocumented
2849
                /// </summary>
2850
                /// <remarks>
2851
                /// System variable DIMALTMZF
2852
                /// </remarks>
2853
                [CadSystemVariable("$DIMALTMZF", 40)]
2854
                public double DimensionAltMzf
2855
                {
2856
                        get { return this.DimensionStyleOverrides.AltMzf; }
48✔
2857
                        set
2858
                        {
54✔
2859
                                this.DimensionStyleOverrides.AltMzf = value;
54✔
2860
                        }
54✔
2861
                }
2862

2863
                /// <summary>
2864
                /// Undocumented
2865
                /// </summary>
2866
                /// <remarks>
2867
                /// System variable DIMALTMZS
2868
                /// </remarks>
2869
                [CadSystemVariable("$DIMALTMZS", 6)]
2870
                public string DimensionAltMzs
2871
                {
2872
                        get { return this.DimensionStyleOverrides.AltMzs; }
48✔
2873
                        set
2874
                        {
54✔
2875
                                this.DimensionStyleOverrides.AltMzs = value;
54✔
2876
                        }
54✔
2877
                }
2878

2879
                /// <summary>
2880
                /// Undocumented
2881
                /// </summary>
2882
                /// <remarks>
2883
                /// System variable DIMMZF
2884
                /// </remarks>
2885
                [CadSystemVariable("$DIMMZF", 40)]
2886
                public double DimensionMzf
2887
                {
2888
                        get { return this.DimensionStyleOverrides.Mzf; }
48✔
2889
                        set
2890
                        {
54✔
2891
                                this.DimensionStyleOverrides.Mzf = value;
54✔
2892
                        }
54✔
2893
                }
2894

2895
                /// <summary>
2896
                /// Undocumented
2897
                /// </summary>
2898
                /// <remarks>
2899
                /// System variable DIMMZS
2900
                /// </remarks>
2901
                [CadSystemVariable("$DIMMZS", 6)]
2902
                public string DimensionMzs
2903
                {
2904
                        get { return this.DimensionStyleOverrides.Mzs; }
48✔
2905
                        set
2906
                        {
54✔
2907
                                this.DimensionStyleOverrides.Mzs = value;
54✔
2908
                        }
54✔
2909
                }
2910

2911
                /// <summary>
2912
                /// Undocumented
2913
                /// </summary>
2914
                /// <remarks>
2915
                /// System variable DIMLTYPE
2916
                /// </remarks>
2917
                [CadSystemVariable("$DIMLTYPE", 6)]
2918
                public string DimensionLineType { get; set; } = "ByBlock";
568✔
2919

2920
                /// <summary>
2921
                /// Undocumented
2922
                /// </summary>
2923
                /// <remarks>
2924
                /// System variable DIMLTEX1
2925
                /// </remarks>
2926
                [CadSystemVariable("$DIMLTEX1", 6)]
2927
                public string DimensionTex1 { get; set; } = "ByBlock";
568✔
2928

2929
                /// <summary>
2930
                /// Undocumented
2931
                /// </summary>
2932
                /// <remarks>
2933
                /// System variable DIMLTEX2
2934
                /// </remarks>
2935
                [CadSystemVariable("$DIMLTEX2", 6)]
2936
                public string DimensionTex2 { get; set; } = "ByBlock";
568✔
2937

2938
                public Layer CurrentLayer
2939
                {
2940
                        get
2941
                        {
42✔
2942
                                if (this.Document == null)
42✔
2943
                                {
7✔
2944
                                        return this._currentLayer;
7✔
2945
                                }
2946
                                else
2947
                                {
35✔
2948
                                        return this.Document.Layers[this.CurrentLayerName];
35✔
2949
                                }
2950
                        }
42✔
2951
                        private set
2952
                        {
×
2953
                                this._currentLayer = value;
×
2954
                        }
×
2955
                }
2956

2957
                public LineType CurrentLineType
2958
                {
2959
                        get
2960
                        {
32✔
2961
                                if (this.Document == null)
32✔
2962
                                {
2✔
2963
                                        return this._currentLineType;
2✔
2964
                                }
2965
                                else
2966
                                {
30✔
2967
                                        return this.Document.LineTypes[this.CurrentLineTypeName];
30✔
2968
                                }
2969
                        }
32✔
2970
                        private set
2971
                        {
×
2972
                                _currentLineType = value;
×
2973
                        }
×
2974
                }
2975

2976
                public TextStyle CurrentTextStyle
2977
                {
2978
                        get
2979
                        {
37✔
2980
                                if (this.Document == null)
37✔
2981
                                {
2✔
2982
                                        return this._currentTextStyle;
2✔
2983
                                }
2984
                                else
2985
                                {
35✔
2986
                                        return this.Document.TextStyles[this.TextStyleName];
35✔
2987
                                }
2988
                        }
37✔
2989
                        private set
2990
                        {
×
2991
                                this._currentTextStyle = value;
×
2992
                        }
×
2993
                }
2994

2995
                public TextStyle DimensionTextStyle
2996
                {
2997
                        get
2998
                        {
×
2999
                                if (this.Document == null)
×
3000
                                {
×
3001
                                        return this._dimensionTextStyle;
×
3002
                                }
3003
                                else
3004
                                {
×
3005
                                        return this.Document.TextStyles[this.DimensionTextStyleName];
×
3006
                                }
3007
                        }
×
3008
                        private set
3009
                        {
×
3010
                                this._dimensionTextStyle = value;
×
3011
                        }
×
3012
                }
3013

3014
                public DimensionStyle DimensionStyleOverrides
3015
                {
3016
                        get
3017
                        {
18,796✔
3018
                                if (this.Document == null)
18,796✔
3019
                                {
16,860✔
3020
                                        return this._dimensionStyleOverrides;
16,860✔
3021
                                }
3022
                                else
3023
                                {
1,936✔
3024
                                        return this.Document.DimensionStyles[this.DimensionStyleOverridesName];
1,936✔
3025
                                }
3026
                        }
18,796✔
3027
                        private set
3028
                        {
×
3029
                                this._dimensionStyleOverrides = value;
×
3030
                        }
×
3031
                }
3032

3033
                public MLineStyle CurrentMLineStyle
3034
                {
3035
                        get
NEW
3036
                        {
×
NEW
3037
                                if (this.Document == null)
×
NEW
3038
                                {
×
NEW
3039
                                        return this._currentMLineStyle;
×
3040
                                }
3041
                                else
NEW
3042
                                {
×
NEW
3043
                                        return this.Document.MLineStyles[this.MultiLineStyleName];
×
3044
                                }
NEW
3045
                        }
×
3046
                        private set
NEW
3047
                        {
×
NEW
3048
                                this._currentMLineStyle = value;
×
NEW
3049
                        }
×
3050
                }
3051

3052
                //TODO: How header UCS work??
3053
                public UCS ModelSpaceUcs { get; private set; } = new UCS();
1,732✔
3054

3055
                public UCS ModelSpaceUcsBase { get; private set; } = new UCS();
480✔
3056

3057
                public UCS PaperSpaceUcs { get; private set; } = new UCS();
1,732✔
3058

3059
                public UCS PaperSpaceUcsBase { get; private set; } = new UCS();
480✔
3060

3061
                /// <summary>
3062
                /// Document where this header resides
3063
                /// </summary>
3064
                public CadDocument Document { get; internal set; }
22,061✔
3065

3066
                private readonly static PropertyExpression<CadHeader, CadSystemVariableAttribute> _propertyCache;
3067

3068
                private Layer _currentLayer = Layer.Default;
480✔
3069

3070
                private TextStyle _currentTextStyle = TextStyle.Default;
480✔
3071

3072
                private TextStyle _dimensionTextStyle = TextStyle.Default;
480✔
3073

3074
                private DimensionStyle _dimensionStyleOverrides = DimensionStyle.Default;
480✔
3075

3076
                private LineType _currentLineType = LineType.ByLayer;
480✔
3077

3078
                private MLineStyle _currentMLineStyle = MLineStyle.Default;
480✔
3079

3080
                static CadHeader()
3081
                {
1✔
3082
                        _propertyCache = new PropertyExpression<CadHeader, CadSystemVariableAttribute>(
1✔
3083
                                (info, attribute) => attribute.Name);
247✔
3084
                }
1✔
3085

3086
                public CadHeader() : this(ACadVersion.AC1018) { }
906✔
3087

3088
                public CadHeader(CadDocument document) : this(ACadVersion.AC1018)
178✔
3089
                {
178✔
3090
                        this.Document = document;
178✔
3091
                }
178✔
3092

3093
                public CadHeader(ACadVersion version)
480✔
3094
                {
480✔
3095
                        this.Version = version;
480✔
3096
                }
480✔
3097

3098
                /// <summary>
3099
                /// Gets a map of all the system variables and it's codes
3100
                /// </summary>
3101
                /// <returns></returns>
3102
                public static Dictionary<string, CadSystemVariable> GetHeaderMap()
3103
                {
211✔
3104
                        Dictionary<string, CadSystemVariable> map = new Dictionary<string, CadSystemVariable>();
211✔
3105
                        foreach (PropertyInfo p in typeof(CadHeader).GetProperties())
114,151✔
3106
                        {
56,759✔
3107
                                CadSystemVariableAttribute att = p.GetCustomAttribute<CadSystemVariableAttribute>();
56,759✔
3108
                                if (att == null)
56,759✔
3109
                                        continue;
4,853✔
3110

3111
                                map.Add(att.Name, new CadSystemVariable(p));
51,906✔
3112
                        }
51,906✔
3113

3114
                        return map;
211✔
3115
                }
211✔
3116

3117
                /// <summary>
3118
                /// Set a valueo of a system variable by name
3119
                /// </summary>
3120
                /// <param name="systemvar">name of the system var</param>
3121
                /// <param name="values">parameters for the constructor of the value</param>
3122
                public void SetValue(string systemvar, params object[] values)
3123
                {
32,852✔
3124
                        PropertyExpression<CadHeader, CadSystemVariableAttribute>.Prop prop = _propertyCache.GetProperty(systemvar);
32,852✔
3125

3126
                        ConstructorInfo constr = prop.Property.PropertyType.GetConstructor(values.Select(o => o.GetType()).ToArray());
73,164✔
3127

3128
                        if (prop.Property.PropertyType.IsEnum)
32,852✔
3129
                        {
4,650✔
3130
                                int v = Convert.ToInt32(values.First());
4,650✔
3131
                                prop.Setter(this, Enum.ToObject(prop.Property.PropertyType, v));
4,650✔
3132
                        }
4,650✔
3133
                        else if (prop.Property.PropertyType.IsEquivalentTo(typeof(DateTime)))
28,202✔
3134
                        {
620✔
3135
                                double jvalue = (double)values.First();
620✔
3136

3137
                                prop.Setter(this, CadUtils.FromJulianCalendar((double)values.First()));
620✔
3138
                        }
620✔
3139
                        else if (prop.Property.PropertyType.IsEquivalentTo(typeof(TimeSpan)))
27,582✔
3140
                        {
320✔
3141
                                double jvalue = (double)values.First();
320✔
3142

3143
                                prop.Setter(this, CadUtils.EditingTime((double)values.First()));
320✔
3144
                        }
320✔
3145
                        else if (constr == null)
27,262✔
3146
                        {
22,420✔
3147
                                if (prop.Attribute.IsName && values.First() is string name)
22,420✔
3148
                                {
1,512✔
3149
                                        if (!name.IsNullOrEmpty())
1,512✔
3150
                                        {
940✔
3151
                                                prop.Setter(this, Convert.ChangeType(values.First(), prop.Property.PropertyType));
940✔
3152
                                        }
940✔
3153
                                }
1,512✔
3154
                                else
3155
                                {
20,908✔
3156
                                        prop.Setter(this, Convert.ChangeType(values.First(), prop.Property.PropertyType));
20,908✔
3157
                                }
20,908✔
3158
                        }
22,420✔
3159
                        else
3160
                        {
4,842✔
3161
                                prop.Setter(this, Activator.CreateInstance(prop.Property.PropertyType, values));
4,842✔
3162
                        }
4,842✔
3163
                }
32,852✔
3164

3165
                public object GetValue(string systemvar)
3166
                {
×
3167
                        var prop = _propertyCache.GetProperty(systemvar);
×
3168
                        return prop.Getter(this);
×
3169
                }
×
3170

3171
                /// <summary>
3172
                /// Get the primitive values in each dxf code
3173
                /// </summary>
3174
                /// <param name="systemvar"></param>
3175
                /// <returns>dictionary with the codes and values</returns>
3176
                public Dictionary<DxfCode, object> GetValues(string systemvar)
3177
                {
×
3178
                        Dictionary<DxfCode, object> value = null;
×
3179

3180
                        foreach (PropertyInfo p in this.GetType().GetProperties())
×
3181
                        {
×
3182
                                CadSystemVariableAttribute att = p.GetCustomAttribute<CadSystemVariableAttribute>();
×
3183
                                if (att == null)
×
3184
                                        continue;
×
3185

3186
                                if (att.Name == systemvar)
×
3187
                                {
×
3188
                                        value = new Dictionary<DxfCode, object>();
×
3189

3190
                                        if (att.ValueCodes.Length == 1)
×
3191
                                        {
×
3192
                                                value.Add(att.ValueCodes[0], p.GetValue(this));
×
3193
                                        }
×
3194
                                        else
3195
                                        {
×
3196
                                                IVector vector = (IVector)p.GetValue(this);
×
3197
                                                for (int i = 0; i < vector.Dimension; i++)
×
3198
                                                {
×
3199
                                                        value.Add(att.ValueCodes[i], vector[i]);
×
3200
                                                }
×
3201
                                        }
×
3202

3203
                                        break;
×
3204
                                }
3205
                        }
×
3206

3207
                        return value;
×
3208
                }
×
3209
        }
3210
}
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