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

DomCR / ACadSharp / 11957478298

21 Nov 2024 04:28PM UTC coverage: 75.642% (-0.03%) from 75.668%
11957478298

Pull #490

github

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

4944 of 7225 branches covered (68.43%)

Branch coverage included in aggregate %.

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

20 existing lines in 3 files now uncovered.

19784 of 25466 relevant lines covered (77.69%)

36034.9 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
                /// <remarks>
1679
                /// System variable LIGHTGLYPHDISPLAY
1680
                /// </remarks>
1681
                [CadSystemVariable("$LIGHTGLYPHDISPLAY", 280)]
1682
                public char DisplayLightGlyphs { get; set; }
173✔
1683

1684
                /// <remarks>
1685
                /// System variable DWFFRAME
1686
                /// </remarks>
1687
                [CadSystemVariable("$DWFFRAME", 280)]
1688
                public char DwgUnderlayFramesVisibility { get; set; }
173✔
1689

1690
                /// <remarks>
1691
                /// System variable DGNFRAME
1692
                /// </remarks>
1693
                [CadSystemVariable("$DGNFRAME", 280)]
1694
                public char DgnUnderlayFramesVisibility { get; set; }
173✔
1695

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

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

1714
                /// <remarks>
1715
                /// System variable STYLESHEET
1716
                /// </remarks>
1717
                [CadSystemVariable("$STYLESHEET", 1)]
1718
                public string StyleSheetName { get; set; }
260✔
1719

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3063
                public UCS PaperSpaceUcsBase { get; private set; } = new UCS();
480✔
3064

3065
                /// <summary>
3066
                /// Document where this header resides
3067
                /// </summary>
3068
                public CadDocument Document { get; internal set; }
22,061✔
3069

3070
                private readonly static PropertyExpression<CadHeader, CadSystemVariableAttribute> _propertyCache;
3071

3072
                private Layer _currentLayer = Layer.Default;
480✔
3073

3074
                private TextStyle _currentTextStyle = TextStyle.Default;
480✔
3075

3076
                private TextStyle _dimensionTextStyle = TextStyle.Default;
480✔
3077

3078
                private DimensionStyle _dimensionStyleOverrides = DimensionStyle.Default;
480✔
3079

3080
                private LineType _currentLineType = LineType.ByLayer;
480✔
3081

3082
                private MLineStyle _currentMLineStyle = MLineStyle.Default;
480✔
3083

3084
                static CadHeader()
3085
                {
1✔
3086
                        _propertyCache = new PropertyExpression<CadHeader, CadSystemVariableAttribute>(
1✔
3087
                                (info, attribute) => attribute.Name);
248✔
3088
                }
1✔
3089

3090
                public CadHeader() : this(ACadVersion.AC1018) { }
906✔
3091

3092
                public CadHeader(CadDocument document) : this(ACadVersion.AC1018)
178✔
3093
                {
178✔
3094
                        this.Document = document;
178✔
3095
                }
178✔
3096

3097
                public CadHeader(ACadVersion version)
480✔
3098
                {
480✔
3099
                        this.Version = version;
480✔
3100
                }
480✔
3101

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

3115
                                map.Add(att.Name, new CadSystemVariable(p));
52,117✔
3116
                        }
52,117✔
3117

3118
                        return map;
211✔
3119
                }
211✔
3120

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

3130
                        ConstructorInfo constr = prop.Property.PropertyType.GetConstructor(values.Select(o => o.GetType()).ToArray());
73,340✔
3131

3132
                        if (prop.Property.PropertyType.IsEnum)
32,940✔
3133
                        {
4,650✔
3134
                                int v = Convert.ToInt32(values.First());
4,650✔
3135
                                prop.Setter(this, Enum.ToObject(prop.Property.PropertyType, v));
4,650✔
3136
                        }
4,650✔
3137
                        else if (prop.Property.PropertyType.IsEquivalentTo(typeof(DateTime)))
28,290✔
3138
                        {
620✔
3139
                                double jvalue = (double)values.First();
620✔
3140

3141
                                prop.Setter(this, CadUtils.FromJulianCalendar((double)values.First()));
620✔
3142
                        }
620✔
3143
                        else if (prop.Property.PropertyType.IsEquivalentTo(typeof(TimeSpan)))
27,670✔
3144
                        {
320✔
3145
                                double jvalue = (double)values.First();
320✔
3146

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

3169
                public object GetValue(string systemvar)
3170
                {
×
3171
                        var prop = _propertyCache.GetProperty(systemvar);
×
3172
                        return prop.Getter(this);
×
3173
                }
×
3174

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

3184
                        foreach (PropertyInfo p in this.GetType().GetProperties())
×
3185
                        {
×
3186
                                CadSystemVariableAttribute att = p.GetCustomAttribute<CadSystemVariableAttribute>();
×
3187
                                if (att == null)
×
3188
                                        continue;
×
3189

3190
                                if (att.Name == systemvar)
×
3191
                                {
×
3192
                                        value = new Dictionary<DxfCode, object>();
×
3193

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

3207
                                        break;
×
3208
                                }
3209
                        }
×
3210

3211
                        return value;
×
3212
                }
×
3213
        }
3214
}
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