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

DomCR / ACadSharp / 14305968221

07 Apr 2025 09:41AM UTC coverage: 75.187% (-1.0%) from 76.181%
14305968221

push

github

DomCR
badge fix

5615 of 8186 branches covered (68.59%)

Branch coverage included in aggregate %.

22386 of 29056 relevant lines covered (77.04%)

72281.98 hits per line

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

84.21
/src/ACadSharp/Entities/MultiLeader.cs
1
using System;
2
using System.Collections.Generic;
3
using ACadSharp.Attributes;
4
using ACadSharp.Objects;
5
using ACadSharp.Tables;
6

7
using CSMath;
8

9
namespace ACadSharp.Entities
10
{
11
        /// <summary>
12
        /// Represents a <see cref="MultiLeader"/> entity.
13
        /// </summary>
14
        /// <remarks>
15
        /// Object name <see cref="DxfFileToken.EntityMultiLeader"/> <br/>
16
        /// Dxf class name <see cref="DxfSubclassMarker.MultiLeader"/>
17
        /// </remarks>
18
        [DxfName(DxfFileToken.EntityMultiLeader)]
19
        [DxfSubClass(DxfSubclassMarker.MultiLeader)]
20
        public partial class MultiLeader : Entity
21
        {
22
                /// <summary>
23
                /// Gets or sets a <see cref="BlockRecord"/> representing the arrowhead
24
                /// (see <see cref="MultiLeaderStyle.Arrowhead"/>) to be displayed with every leader line.
25
                /// This property overrides the value from <see cref="MultiLeaderStyle"/>
26
                /// when the <see cref="MultiLeaderPropertyOverrideFlags.Arrowhead"/> flag is set in the
27
                /// <see cref="MultiLeader.PropertyOverrideFlags"/> property.
28
                /// </summary>
29
                /// <remarks>
30
                /// The value for all leader lines can be overridden for each individual leader line by the
31
                /// <see cref="MultiLeaderAnnotContext.LeaderLine.Arrowhead"/> property when the
32
                /// <see cref="LeaderLinePropertOverrideFlags.Arrowhead"/> flag is set in the
33
                /// <see cref="MultiLeaderAnnotContext.LeaderLine.OverrideFlags"/> property.
34
                /// </remarks>
35
                [DxfCodeValue(342)]
36
                public BlockRecord Arrowhead { get; set; }
×
37

38
                /// <summary>
39
                /// Gets or sets the arrowhead size (see <see cref="MultiLeaderStyle.Arrowhead"/>)
40
                /// for every leader line
41
                /// when the <see cref="MultiLeaderPropertyOverrideFlags.ArrowheadSize"/> flag is set in the
42
                /// <see cref="MultiLeader.PropertyOverrideFlags"/> property.
43
                /// </summary>
44
                /// <remarks>
45
                /// <para>
46
                /// The value for all leader lines can be overridden for each individual leader line by the
47
                /// <see cref="MultiLeaderAnnotContext.LeaderLine.ArrowheadSize"/> property when the
48
                /// <see cref="LeaderLinePropertOverrideFlags.ArrowheadSize"/> flag is set in the
49
                /// <see cref="MultiLeaderAnnotContext.LeaderLine.OverrideFlags"/> property.
50
                /// </para><para>
51
                /// This property is also exposed by the <see cref="MultiLeaderAnnotContext"/> class. Values
52
                /// should be equal, the value <see cref="MultiLeaderAnnotContext.ArrowheadSize"/> is
53
                /// assumed to be used.
54
                /// </para>
55
                /// </remarks>
56
                [DxfCodeValue(42)]
57
                public double ArrowheadSize { get; set; }
2,210✔
58

59
                ///<subject>
60
                /// Gets a list of <see cref="BlockAttribute"/> objects representing
61
                /// a reference to a "block attribute"? and some properties to adjust
62
                /// the attribute.
63
                /// </subject>
64
                public IList<BlockAttribute> BlockAttributes { get; } = new List<BlockAttribute>();
4,002✔
65

66
                /// <summary>
67
                /// Gets or sets a value indicating whether the content of this <see cref="MultiLeader"/>
68
                /// is a text label, a content block, or a tolerance.
69
                /// </summary>
70
                [DxfCodeValue(172)]
71
                public LeaderContentType ContentType { get; set; }
2,205✔
72

73
                /// <summary>
74
                /// Contains the multileader content (block/text) and the leaders.
75
                /// </summary>
76
                public MultiLeaderAnnotContext ContextData { get; set; }
4,300✔
77

78
                /// <summary>
79
                /// Enable Annotation Scale
80
                /// </summary>
81
                [DxfCodeValue(293)]
82
                public bool EnableAnnotationScale { get; set; }
2,210✔
83

84
                /// <summary>
85
                /// Gets or sets a value indicating that leader lines of this <see cref="MultiLeader"/>
86
                /// are to be drawn with a dogleg (see <see cref="MultiLeaderStyle.EnableDogleg"/>).
87
                /// This property overrides the value from <see cref="MultiLeaderStyle"/>
88
                /// when the <see cref="MultiLeaderPropertyOverrideFlags.EnableDogleg"/> flag is set in the
89
                /// <see cref="MultiLeader.PropertyOverrideFlags"/> property.
90
                /// </summary>
91
                [DxfCodeValue(291)]
92
                public bool EnableDogleg { get; set; }
2,210✔
93

94
                /// <summary>
95
                /// Gets or sets a value indicating whether landing is enabled.
96
                /// This property overrides the value from <see cref="MultiLeaderStyle"/>
97
                /// when the <see cref="MultiLeaderPropertyOverrideFlags.EnableLanding"/> flag is set in the
98
                /// <see cref="PropertyOverrideFlags"/> property.
99
                /// </summary>
100
                [DxfCodeValue(290)]
101
                public bool EnableLanding { get; set; }
2,210✔
102

103
                /// <summary>
104
                /// Leader extended to text
105
                /// </summary>
106
                public bool ExtendedToText { get; set; }
575✔
107

108
                /// <summary>
109
                /// Gets or sets the landing distance, i.e. the length of the dogleg, for this <see cref="MultiLeader"/>.
110
                /// This property overrides the value from <see cref="MultiLeaderStyle"/>
111
                /// when the <see cref="MultiLeaderPropertyOverrideFlags.LandingDistance"/> flag is set in the
112
                /// <see cref="MultiLeader.PropertyOverrideFlags"/> property.
113
                /// </summary>
114
                /// <remarks><para>
115
                /// There is only one field for the landing distance in the multileader property grid.
116
                /// The value entered arrives in this property and the <see cref="Objects.MultiLeaderAnnotContext.LeaderRoot.LandingDistance"/>
117
                /// property. If two leader roots exist both receive the same value. I seems
118
                /// <see cref="MultiLeaderPropertyOverrideFlags.LandingDistance"/> flag is never set.
119
                /// </para>
120
                /// </remarks>
121
                [DxfCodeValue(41)]
122
                public double LandingDistance { get; set; }
2,304✔
123

124
                //  TODO Additional Line Type? see Entity.LineType.
125
                /// <summary>
126
                /// Gets or sets <see cref="LineType"/> of the leader lines of this <see cref="MultiLeader"/>
127
                /// (see <see cref="MultiLeaderStyle.LeaderLineType"/>).
128
                /// This property overrides the value from <see cref="MultiLeaderStyle"/>
129
                /// when the <see cref="MultiLeaderPropertyOverrideFlags.LeaderLineType"/> flag is set in the
130
                /// <see cref="PropertyOverrideFlags"/> property.
131
                /// </summary>
132
                /// <remarks>
133
                /// The setting for all leader lines can be overridden for each individual leader line by the
134
                /// <see cref="MultiLeaderAnnotContext.LeaderLine.LineType"/> property when the
135
                /// <see cref="LeaderLinePropertOverrideFlags.LineType"/> flag is set in the
136
                /// <see cref="MultiLeaderAnnotContext.LeaderLine.OverrideFlags"/> property.
137
                /// </remarks>
138
                [DxfCodeValue(341)]
139
                public LineType LeaderLineType { get; set; }
1,995✔
140

141
                //  TODO Additional Line Weight? see Entity.LineWeight.
142
                /// <summary>
143
                /// Gets or sets a value specifying the line weight to be applied to all leader lines of this
144
                /// <see cref="MultiLeader"/> (see <see cref="MultiLeaderStyle.LeaderLineWeight"/>).
145
                /// This property overrides the value from <see cref="MultiLeaderStyle"/>
146
                /// when the <see cref="MultiLeaderPropertyOverrideFlags.LeaderLineWeight"/> flag is set in the
147
                /// <see cref="PropertyOverrideFlags"/> property.
148
                /// </summary>
149
                /// <remarks>
150
                /// The value for all leader lines can be overridden for each individual leader line by the
151
                /// <see cref="MultiLeaderAnnotContext.LeaderLine.LineWeight"/> property when the
152
                /// <see cref="LeaderLinePropertOverrideFlags.LineWeight"/> flag is set in the
153
                /// <see cref="MultiLeaderAnnotContext.LeaderLine.OverrideFlags"/> property.
154
                /// </remarks>
155
                [DxfCodeValue(171)]
156
                public LineweightType LeaderLineWeight { get; set; }
2,205✔
157

158
                /// <summary>
159
                /// Gets or sets color of the leader lines of this <see cref="MultiLeader"/>
160
                /// (see <see cref="MultiLeaderStyle.LineColor"/>).
161
                /// This property overrides the value from <see cref="MultiLeaderStyle"/>
162
                /// when the <see cref="MultiLeaderPropertyOverrideFlags.LineColor"/> flag is set in the
163
                /// <see cref="PropertyOverrideFlags"/> property.
164
                /// </summary>
165
                /// <remarks>
166
                /// The value for all leader lines can be overridden for each individual leader line by the
167
                /// <see cref="MultiLeaderAnnotContext.LeaderLine.LineColor"/> property when the
168
                /// <see cref="LeaderLinePropertOverrideFlags.LineColor"/> flag is set in the
169
                /// <see cref="MultiLeaderAnnotContext.LeaderLine.OverrideFlags"/> property.
170
                /// </remarks>
171
                [DxfCodeValue(91)]
172
                public Color LineColor { get; set; }
2,210✔
173

174
                /// <inheritdoc/>
175
                public override string ObjectName => DxfFileToken.EntityMultiLeader;
211✔
176

177
                /// <inheritdoc/>
178
                public override ObjectType ObjectType => ObjectType.UNLISTED;
1✔
179

180
                /// <summary>
181
                /// Gets or sets a value indicating the path type of this <see cref="MultiLeader"/>
182
                /// (see <see cref="MultiLeaderStyle.PathType"/>).
183
                /// This property overrides the value from <see cref="MultiLeaderStyle"/>
184
                /// when the <see cref="MultiLeaderPropertyOverrideFlags.PathType"/> flag is set in the
185
                /// <see cref="PropertyOverrideFlags"/> property.
186
                /// </summary>
187
                [DxfCodeValue(170)]
188
                public MultiLeaderPathType PathType { get; set; }
2,205✔
189

190
                /// <summary>
191
                /// Gets or sets a value containing a list of flags indicating which multileader
192
                /// properties specified by the associated <see cref="MultiLeaderStyle"/>
193
                /// are to be overridden by properties specified by this <see cref="MultiLeader"/>
194
                /// or the attached <see cref="MultiLeaderAnnotContext"/>.
195
                /// </summary>
196
                [DxfCodeValue(90)]
197
                public MultiLeaderPropertyOverrideFlags PropertyOverrideFlags { get; set; }
2,205✔
198

199
                /// <summary>
200
                /// Gets or sets a scale factor (see <see cref="MultiLeaderStyle.ScaleFactor"/>).
201
                /// This property overrides the value from <see cref="MultiLeaderStyle"/>
202
                /// when the <see cref="MultiLeaderPropertyOverrideFlags.ScaleFactor"/> flag is set (see
203
                /// <see cref="MultiLeader.PropertyOverrideFlags"/> property).
204
                /// The scale factor is applied by AutoCAD.
205
                /// </summary>
206
                /// <remarks>
207
                /// This property is also exposed by the <see cref="MultiLeaderAnnotContext"/> class. Values
208
                /// should be equal, the value <see cref="MultiLeaderAnnotContext.ScaleFactor"/> is
209
                /// assumed to be relevant.
210
                /// </remarks>
211
                [DxfCodeValue(45)]
212
                public double ScaleFactor { get; set; }
2,210✔
213

214
                /// <summary>
215
                /// Gets a <see cref="MultiLeaderStyle"/> providing reusable style information
216
                /// for this <see cref="MultiLeader"/>.
217
                /// </summary>
218
                [DxfCodeValue(340)]
219
                public MultiLeaderStyle Style { get; set; }
1,065✔
220

221
                /// <inheritdoc/>
222
                public override string SubclassMarker => DxfSubclassMarker.MultiLeader;
2✔
223

224
                #region Text Menu Properties
225

226
                /// <summary>
227
                /// Gets or sets the text alignement type.
228
                /// </summary>
229
                /// <remarks><para>
230
                /// The Open Design Specification for DWG documents this property as <i>Unknown</i>,
231
                /// DXF reference as <i>Text Aligment Type</i>.
232
                /// Available DWG and DXF sample documents saved by AutoCAD return always 0=Left.
233
                /// </para><para>
234
                /// This property is also exposed by the <see cref="MultiLeaderAnnotContext"/> class. Values
235
                /// should be equal, the value <see cref="MultiLeaderAnnotContext.TextAlignment"/> is
236
                /// assumed to be used.
237
                /// </para>
238
                /// </remarks>
239
                [DxfCodeValue(175)]
240
                public TextAlignmentType TextAlignment { get; set; }
2,205✔
241

242
                //        TODO How to set this value?
243
                /// <summary>
244
                /// Gets or sets a value indicating the text angle.
245
                /// This property overrides the value from <see cref="MultiLeaderStyle"/>
246
                /// when the <see cref="MultiLeaderPropertyOverrideFlags.TextAngle"/> flag is set (see
247
                /// <see cref="PropertyOverrideFlags"/> property).
248
                /// </summary>
249
                [DxfCodeValue(174)]
250
                public TextAngleType TextAngle { get; set; }
2,205✔
251

252
                /// <summary>
253
                /// Gets or sets the color for the display of the text label.
254
                /// This property overrides the value from <see cref="MultiLeaderStyle"/>
255
                /// when the <see cref="MultiLeaderPropertyOverrideFlags.TextColor"/> flag is set (see
256
                /// <see cref="PropertyOverrideFlags"/> property).
257
                /// </summary>
258
                /// <remarks>
259
                /// This property is also exposed by the <see cref="MultiLeaderAnnotContext"/> class. Values
260
                /// should be equal, the value <see cref="MultiLeaderAnnotContext.TextColor"/> is
261
                /// assumed to be used.
262
                /// </remarks>
263
                [DxfCodeValue(92)]
264
                public Color TextColor { get; set; }
2,210✔
265

266
                /// <summary>
267
                /// Gets or sets a value indicating that the text label is to be drawn with a frame.
268
                /// This property overrides the value from <see cref="MultiLeaderStyle"/>
269
                /// when the <see cref="MultiLeaderPropertyOverrideFlags.TextFrame"/> flag is set (see
270
                /// <see cref="PropertyOverrideFlags"/> property).
271
                /// </summary>
272
                [DxfCodeValue(292)]
273
                public bool TextFrame { get; set; }
2,304✔
274

275
                /// <summary>
276
                /// Gets or sets the text left attachment type (see <see cref="MultiLeaderStyle.TextLeftAttachment"/>).
277
                /// This property overrides the value from <see cref="MultiLeaderStyle"/>
278
                /// when the <see cref="MultiLeaderPropertyOverrideFlags.TextLeftAttachment"/> flag is set (see
279
                /// <see cref="PropertyOverrideFlags"/> property).
280
                /// </summary>
281
                /// <remarks>
282
                /// This property is also exposed by the <see cref="MultiLeaderAnnotContext"/> class. Values
283
                /// should be equal, the value <see cref="MultiLeaderAnnotContext.TextLeftAttachment"/> is
284
                /// assumed to be used.
285
                /// </remarks>
286
                /// <value>
287
                /// A <see cref="TextAttachmentType"/> having the values 0-8 can be used
288
                /// ("horizontal" attachment types).
289
                /// </value>
290
                [DxfCodeValue(173)]
291
                public TextAttachmentType TextLeftAttachment { get; set; }
2,299✔
292

293
                /// <summary>
294
                /// Gets or sets the text right attachment type (see <see cref="MultiLeaderStyle.TextRightAttachment"/>).
295
                /// This property overrides the value from <see cref="MultiLeaderStyle"/>
296
                /// when the <see cref="MultiLeaderPropertyOverrideFlags.TextRightAttachment"/> flag is set (see
297
                /// <see cref="PropertyOverrideFlags"/> property).
298
                /// </summary>
299
                /// <remarks>
300
                /// This property is also exposed by the <see cref="MultiLeaderAnnotContext"/> class. Values
301
                /// should be equal, the value <see cref="MultiLeaderAnnotContext.TextRightAttachment"/> is
302
                /// assumed to be used.
303
                /// </remarks>
304
                /// <value>
305
                /// A <see cref="TextAttachmentType"/> having the values 0-8 can be used
306
                /// ("horizontal" attachment types).
307
                /// </value>
308
                [DxfCodeValue(95)]
309
                public TextAttachmentType TextRightAttachment { get; set; }
2,205✔
310

311
                /// <summary>
312
                /// Gets or sets the <see cref="TextStyle"/> to be used to display the text label of this
313
                /// <see cref="MultiLeader"/>.
314
                /// This property overrides the value from <see cref="MultiLeaderStyle"/>
315
                /// when the <see cref="MultiLeaderPropertyOverrideFlags.TextStyle"/> flag is set in the
316
                /// <see cref="MultiLeader.PropertyOverrideFlags"/> property.
317
                /// </summary>
318
                /// <remarks>
319
                /// This property is also exposed by the <see cref="MultiLeaderAnnotContext"/> class
320
                /// (<see cref="MultiLeaderAnnotContext.TextStyle"/>).
321
                /// Values should be equal, the <see cref="MultiLeaderAnnotContext.TextStyle"/>
322
                /// is assumed to be used.
323
                /// </remarks>
324
                [DxfCodeValue(343)]
325
                public TextStyle TextStyle { get; set; }
2,205✔
326

327
                #endregion Text Menu Properties
328

329
                #region Block Content Properties
330

331
                /// <summary>
332
                /// Gets a <see cref="BlockRecord"/> containing elements
333
                /// to be drawn as content for the multileader.
334
                /// This property overrides the value from <see cref="MultiLeaderStyle"/>
335
                /// when the <see cref="MultiLeaderPropertyOverrideFlags.BlockContent"/> flag is set (see
336
                /// <see cref="PropertyOverrideFlags"/> property).
337
                /// </summary>
338
                /// <remarks>
339
                /// This property is also exposed by the <see cref="MultiLeaderAnnotContext"/> class. Values
340
                /// should be equal, the value <see cref="MultiLeaderAnnotContext.BlockContent"/> is
341
                /// assumed to be used.
342
                /// </remarks>
343
                [DxfCodeValue(344)]
344
                public BlockRecord BlockContent { get; set; }
×
345

346
                /// <summary>
347
                /// Gets or sets the block-content color.
348
                /// This property overrides the value from <see cref="MultiLeaderStyle"/>
349
                /// when the <see cref="MultiLeaderPropertyOverrideFlags.BlockContentColor"/> flag is set (see
350
                /// <see cref="PropertyOverrideFlags"/> property).
351
                /// </summary>
352
                /// <remarks>
353
                /// This property is also exposed by the <see cref="MultiLeaderAnnotContext"/> class. Values
354
                /// should be equal, the value <see cref="MultiLeaderAnnotContext.BlockContentColor"/> is
355
                /// assumed to be used.
356
                /// </remarks>
357
                [DxfCodeValue(93)]
358
                public Color BlockContentColor { get; set; }
2,210✔
359

360
                /// <summary>
361
                /// Gets or sets a value indicating whether the multileader connects to the content-block extents
362
                /// or to the content-block base point
363
                /// when the <see cref="MultiLeaderPropertyOverrideFlags.BlockContentConnection"/> flag is set in the
364
                /// <see cref="PropertyOverrideFlags"/> property.
365
                /// </summary>
366
                /// <remarks>
367
                /// This property is also exposed by the <see cref="MultiLeaderAnnotContext"/> class. Values
368
                /// should be equal, the value <see cref="MultiLeaderAnnotContext.BlockContentConnection"/> is
369
                /// assumed to be used.
370
                /// </remarks>
371
                [DxfCodeValue(176)]
372
                public BlockContentConnectionType BlockContentConnection { get; set; }
2,205✔
373

374
                /// <summary>
375
                /// Gets or sets the rotation of the block content of the multileader.
376
                /// </summary>
377
                /// <remarks>
378
                /// This property is also exposed by the <see cref="MultiLeaderAnnotContext"/> class. Values
379
                /// should be equal, the value <see cref="MultiLeaderAnnotContext.BlockContentRotation"/> is
380
                /// assumed to be used.
381
                /// </remarks>
382
                [DxfCodeValue(DxfReferenceType.IsAngle, 43)]
383
                public double BlockContentRotation { get; set; }
2,210✔
384

385
                /// <summary>
386
                /// Gets or sets the scale factor for block content.
387
                /// This property overrides the value from <see cref="MultiLeaderStyle"/>
388
                /// when the <see cref="MultiLeaderPropertyOverrideFlags.BlockContentScale"/> flag is set (see
389
                /// <see cref="MultiLeader.PropertyOverrideFlags"/> property).
390
                /// </summary>
391
                /// <remarks>
392
                /// This property is also exposed by the <see cref="MultiLeaderAnnotContext"/> class. Values
393
                /// should be equal, the value <see cref="MultiLeaderAnnotContext.BlockContentScale"/> is
394
                /// assumed to be used.
395
                /// </remarks>
396
                [DxfCodeValue(10, 20, 30)]
397
                public XYZ BlockContentScale { get; set; }
2,210✔
398

399
                #endregion Block Content Properties
400

401
                //        TODO According to the OpenDesign_Specification_for_.dwg_files
402
                //        a list of arror head AND a list of block attributes can occur.
403
                //        If both list are empty it ist expected that two BL-fields should
404
                //        occur yielding count=0 for both lists. But when we read two
405
                //        BL-fields we get out of sync. If we read one BL-field everything
406
                //        works fine.
407
                //        We do not understand what a list of arroheads can be used for,
408
                //        and we do not know how to create such a list.
409
                //        The documentation for arrowheads list in OpenDesign_Specification_for_.dwg_files
410
                //        and the DXF Reference are contradicting.
411
                //        Decision:
412
                //                Ommit the Arrowheads property,
413
                //                try to keep the block attributes.
414

415
                /// <summary>
416
                /// Text Align in IPE (meaning unknown)
417
                /// </summary>
418
                [DxfCodeValue(178)]
419
                public short TextAligninIPE { get; set; }
2,210✔
420

421
                /// <summary>
422
                /// Gets or sets the Text attachment direction for text or block contents.
423
                /// This property overrides the value from <see cref="MultiLeaderStyle"/>
424
                /// when the <see cref="MultiLeaderPropertyOverrideFlags.TextAttachmentDirection"/> flag is set in the
425
                /// <see cref="MultiLeader.PropertyOverrideFlags"/> property.
426
                /// </summary>
427
                /// <remarks>
428
                /// <para>
429
                /// This property defines whether the leaders attach to the left/right of the content block/text,
430
                /// or attach to the top/bottom.
431
                /// </para><para>
432
                /// The value for all leader lines can be overridden for each individual leader line by the
433
                /// <see cref="Objects.MultiLeaderAnnotContext.LeaderRoot.TextAttachmentDirection"/> property when the
434
                /// <see cref="MultiLeaderPropertyOverrideFlags.TextAttachmentDirection"/> flag is set in the
435
                /// <see cref="MultiLeaderAnnotContext.LeaderLine.OverrideFlags"/> property.
436
                /// </para>
437
                /// </remarks>
438
                /// <value>
439
                /// A <see cref="TextAttachmentDirectionType"/>.
440
                /// </value>
441
                [DxfCodeValue(271)]
442
                public TextAttachmentDirectionType TextAttachmentDirection { get; set; }
1,159✔
443

444
                /// <summary>
445
                /// Gets or sets a value indicating the text attachment point.
446
                /// </summary>
447
                /// <remarks><para>
448
                ///        The Open Design Specification for DWG files documents this property as <i>Justification</i>,
449
                /// the DXF reference as <i>Text Attachments point</i>.
450
                /// </para><para>
451
                /// This property is also exposed by the <see cref="MultiLeader"/> class
452
                /// (<see cref="MultiLeader.TextAttachmentPoint"/>).
453
                /// The <see cref="MultiLeaderAnnotContext.TextAttachmentPoint"/> property always has the same value
454
                /// and seems to have the respective value as <see cref="MultiLeaderAnnotContext.TextAlignment"/>.
455
                /// The <see cref="MultiLeaderAnnotContext.TextAttachmentPoint"/> property is to be used.
456
                /// </para>
457
                /// </remarks>
458
                [DxfCodeValue(179)]
459
                public TextAttachmentPointType TextAttachmentPoint { get; set; }
2,299✔
460

461
                /// <summary>
462
                /// Gets or sets the text bottom attachment type (see <see cref="MultiLeaderStyle.TextBottomAttachment"/>).
463
                /// This property override the value from <see cref="MultiLeaderStyle"/>
464
                /// when the <see cref="MultiLeaderPropertyOverrideFlags.TextBottomAttachment"/> flag is set (see
465
                /// <see cref="PropertyOverrideFlags"/> property).
466
                /// </summary>
467
                /// <remarks>
468
                /// This property is also exposed by the <see cref="MultiLeaderAnnotContext"/> class. Values
469
                /// should be equal, the value <see cref="MultiLeaderAnnotContext.TextBottomAttachment"/> is
470
                /// assumed to be used.
471
                /// </remarks>
472
                /// <value>
473
                /// A <see cref="TextAttachmentType"/> having the values
474
                ///         9 = Center,
475
                ///         10 = Underline and Center
476
                /// can be used ("vertical" attachment types).
477
                /// </value>
478
                [DxfCodeValue(272)]
479
                public TextAttachmentType TextBottomAttachment { get; set; }
1,065✔
480

481
                //  public IList<ArrowheadAssociation> Arrowheads { get; } = new List<ArrowheadAssociation>();
482
                /// <summary>
483
                /// Text Direction Negative
484
                /// </summary>
485
                [DxfCodeValue(294)]
486
                public bool TextDirectionNegative { get; set; }
2,210✔
487

488
                /// <summary>
489
                /// Gets or sets the text top attachment type (see <see cref="MultiLeaderStyle.TextTopAttachment"/>).
490
                /// This property override the value from <see cref="MultiLeaderStyle"/>
491
                /// when the <see cref="MultiLeaderPropertyOverrideFlags.TextTopAttachment"/> flag is set (see
492
                /// <see cref="PropertyOverrideFlags"/> property).
493
                /// </summary>
494
                /// <remarks>
495
                /// This property is also exposed by the <see cref="MultiLeaderAnnotContext"/> class. Values
496
                /// should be equal, the value <see cref="MultiLeaderAnnotContext.TextTopAttachment"/> is
497
                /// assumed to be used.
498
                /// </remarks>
499
                /// <value>
500
                /// A <see cref="TextAttachmentType"/> having the values
501
                ///         9 = Center,
502
                ///         10 = Underline and Center
503
                /// can be used ("vertical" attachment types).
504
                /// </value>
505
                [DxfCodeValue(273)]
506
                public TextAttachmentType TextTopAttachment { get; set; }
1,065✔
507

508
                /// <inheritdoc/>
509
                public override void ApplyTransform(Transform transform)
510
                {
×
511
                }
×
512

513
                /// <inheritdoc/>
514
                public override CadObject Clone()
515
                {
3✔
516
                        MultiLeader clone = (MultiLeader)base.Clone();
3✔
517

518
                        clone.ContextData = (MultiLeaderAnnotContext)this.ContextData?.Clone();
3!
519

520
                        clone.BlockAttributes.Clear();
3✔
521
                        foreach (var att in this.BlockAttributes)
9!
522
                        {
×
523
                                clone.BlockAttributes.Add((BlockAttribute)att.Clone());
×
524
                        }
×
525

526
                        return clone;
3✔
527
                }
3✔
528

529
                /// <inheritdoc/>
530
                public override BoundingBox GetBoundingBox()
531
                {
1✔
532
                        return BoundingBox.Null;
1✔
533
                }
1✔
534
        }
535
}
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