コード例 #1
0
ファイル: Leader.cs プロジェクト: PIBpibPIB/Csevetest
 /// <summary>
 /// Initializes a new instance of the <c>Leader</c> class.
 /// </summary>
 public Leader(Block block, IEnumerable <Vector2> vertexes, DimensionStyle style)
     : base(EntityType.Leader, DxfObjectCode.Leader)
 {
     if (vertexes == null)
     {
         throw new ArgumentNullException(nameof(vertexes));
     }
     this.vertexes = new List <Vector2>(vertexes);
     if (this.vertexes.Count < 2)
     {
         throw new ArgumentOutOfRangeException(nameof(vertexes), this.vertexes.Count, "The leader vertexes list requires at least two points.");
     }
     if (style == null)
     {
         throw new ArgumentNullException(nameof(style));
     }
     this.style          = style;
     this.hasHookline    = false;
     this.showArrowhead  = true;
     this.pathType       = LeaderPathType.StraightLineSegements;
     this.lineColor      = AciColor.ByLayer;
     this.elevation      = 0.0;
     this.offset         = Vector2.Zero;
     this.styleOverrides = new DimensionStyleOverrideDictionary();
     this.styleOverrides.BeforeAddItem    += this.StyleOverrides_BeforeAddItem;
     this.styleOverrides.AddItem          += this.StyleOverrides_AddItem;
     this.styleOverrides.BeforeRemoveItem += this.StyleOverrides_BeforeRemoveItem;
     this.styleOverrides.RemoveItem       += this.StyleOverrides_RemoveItem;
     this.annotation = this.BuildAnnotation(block);
     this.annotation.AddReactor(this);
 }
コード例 #2
0
ファイル: Leader.cs プロジェクト: WKleinschmit/netDxf
 /// <summary>
 /// Initializes a new instance of the <c>Leader</c> class.
 /// </summary>
 public Leader(string text, IEnumerable <Vector2> vertexes, DimensionStyle style)
     : base(EntityType.Leader, DxfObjectCode.Leader)
 {
     if (vertexes == null)
     {
         throw new ArgumentNullException(nameof(vertexes));
     }
     this.vertexes = new List <Vector2>(vertexes);
     if (this.vertexes.Count < 2)
     {
         throw new ArgumentOutOfRangeException(nameof(vertexes), this.vertexes.Count, "The leader vertexes list requires at least two points.");
     }
     if (style == null)
     {
         throw new ArgumentNullException(nameof(style));
     }
     this.style     = style;
     hasHookline    = true;
     showArrowhead  = true;
     pathType       = LeaderPathType.StraightLineSegements;
     lineColor      = AciColor.ByLayer;
     elevation      = 0.0;
     offset         = Vector2.Zero;
     styleOverrides = new DimensionStyleOverrideDictionary();
     styleOverrides.BeforeAddItem    += StyleOverrides_BeforeAddItem;
     styleOverrides.AddItem          += StyleOverrides_AddItem;
     styleOverrides.BeforeRemoveItem += StyleOverrides_BeforeRemoveItem;
     styleOverrides.RemoveItem       += StyleOverrides_RemoveItem;
     annotation = BuildAnnotation(text);
     annotation.AddReactor(this);
     this.vertexes.Insert(this.vertexes.Count - 1, CalculateHookLine());
 }
コード例 #3
0
 private void StyleOverrides_BeforeAddItem(DimensionStyleOverrideDictionary sender, DimensionStyleOverrideDictionaryEventArgs e)
 {
     if (sender.TryGetValue(e.Item.Type, out DimensionStyleOverride old))
     {
         if (ReferenceEquals(old.Value, e.Item.Value))
         {
             e.Cancel = true;
         }
     }
 }
コード例 #4
0
ファイル: Dimension.cs プロジェクト: Core2D/netdxf
 /// <summary>
 /// Initializes a new instance of the <c>Dimension</c> class.
 /// </summary>
 protected Dimension(DimensionType type)
     : base(EntityType.Dimension, DxfObjectCode.Dimension)
 {
     this.definitionPoint = Vector3.Zero;
     this.midTextPoint = Vector3.Zero;
     this.dimensionType = type;
     this.attachmentPoint = MTextAttachmentPoint.MiddleCenter;
     this.lineSpacingStyle = MTextLineSpacingStyle.AtLeast;
     this.lineSpacing = 1.0;
     this.block = null;
     this.style = DimensionStyle.Default;
     this.userText = null;
     this.elevation = 0.0;
     this.styleOverrides = new DimensionStyleOverrideDictionary();
     this.styleOverrides.BeforeAddItem += this.StyleOverrides_BeforeAddItem;
     this.styleOverrides.AddItem += this.StyleOverrides_AddItem;
     this.styleOverrides.BeforeRemoveItem += this.StyleOverrides_BeforeRemoveItem;
     this.styleOverrides.RemoveItem += this.StyleOverrides_RemoveItem;
 }
コード例 #5
0
 /// <summary>
 /// Initializes a new instance of the <c>Dimension</c> class.
 /// </summary>
 protected Dimension(DimensionType type)
     : base(EntityType.Dimension, DxfObjectCode.Dimension)
 {
     this.definitionPoint                  = Vector3.Zero;
     this.midTextPoint                     = Vector3.Zero;
     this.dimensionType                    = type;
     this.attachmentPoint                  = MTextAttachmentPoint.MiddleCenter;
     this.lineSpacingStyle                 = MTextLineSpacingStyle.AtLeast;
     this.lineSpacing                      = 1.0;
     this.block                            = null;
     this.style                            = DimensionStyle.Default;
     this.userText                         = null;
     this.elevation                        = 0.0;
     this.styleOverrides                   = new DimensionStyleOverrideDictionary();
     this.styleOverrides.BeforeAddItem    += this.StyleOverrides_BeforeAddItem;
     this.styleOverrides.AddItem          += this.StyleOverrides_AddItem;
     this.styleOverrides.BeforeRemoveItem += this.StyleOverrides_BeforeRemoveItem;
     this.styleOverrides.RemoveItem       += this.StyleOverrides_RemoveItem;
 }
コード例 #6
0
ファイル: Dimension.cs プロジェクト: WKleinschmit/netDxf
 /// <summary>
 /// Initializes a new instance of the <c>Dimension</c> class.
 /// </summary>
 protected Dimension(DimensionType type)
     : base(EntityType.Dimension, DxfObjectCode.Dimension)
 {
     defPoint                         = Vector2.Zero;
     textRefPoint                     = Vector2.Zero;
     dimensionType                    = type;
     attachmentPoint                  = MTextAttachmentPoint.MiddleCenter;
     lineSpacingStyle                 = MTextLineSpacingStyle.AtLeast;
     lineSpacing                      = 1.0;
     block                            = null;
     style                            = DimensionStyle.Default;
     textRotation                     = 0.0;
     userText                         = null;
     elevation                        = 0.0;
     styleOverrides                   = new DimensionStyleOverrideDictionary();
     styleOverrides.BeforeAddItem    += StyleOverrides_BeforeAddItem;
     styleOverrides.AddItem          += StyleOverrides_AddItem;
     styleOverrides.BeforeRemoveItem += StyleOverrides_BeforeRemoveItem;
     styleOverrides.RemoveItem       += StyleOverrides_RemoveItem;
 }
コード例 #7
0
ファイル: Dimension.cs プロジェクト: WKleinschmit/netDxf
 private void StyleOverrides_RemoveItem(DimensionStyleOverrideDictionary sender, DimensionStyleOverrideDictionaryEventArgs e)
 {
     OnDimensionStyleOverrideRemovedEvent(e.Item);
 }
コード例 #8
0
ファイル: Dimension.cs プロジェクト: WKleinschmit/netDxf
 private void StyleOverrides_BeforeRemoveItem(DimensionStyleOverrideDictionary sender, DimensionStyleOverrideDictionaryEventArgs e)
 {
 }
コード例 #9
0
ファイル: Leader.cs プロジェクト: PIBpibPIB/Csevetest
 private void StyleOverrides_AddItem(DimensionStyleOverrideDictionary sender, DimensionStyleOverrideDictionaryEventArgs e)
 {
     this.OnDimensionStyleOverrideAddedEvent(e.Item);
 }
コード例 #10
0
ファイル: Dimension.cs プロジェクト: Core2D/netdxf
 private void StyleOverrides_RemoveItem(DimensionStyleOverrideDictionary sender, DimensionStyleOverrideDictionaryEventArgs e)
 {
     this.OnDimensionStyleOverrideRemovedEvent(e.Item);
 }
コード例 #11
0
ファイル: Dimension.cs プロジェクト: Core2D/netdxf
 private void StyleOverrides_BeforeRemoveItem(DimensionStyleOverrideDictionary sender, DimensionStyleOverrideDictionaryEventArgs e)
 {
 }
コード例 #12
0
ファイル: Dimension.cs プロジェクト: Core2D/netdxf
 private void StyleOverrides_BeforeAddItem(DimensionStyleOverrideDictionary sender, DimensionStyleOverrideDictionaryEventArgs e)
 {
     DimensionStyleOverride old;
     if (sender.TryGetValue(e.Item.Type, out old))
         if (ReferenceEquals(old.Value, e.Item.Value))
             e.Cancel = true;
 }
コード例 #13
0
ファイル: DxfDocument.cs プロジェクト: Core2D/netdxf
        private void RemoveDimensionStyleOverrides(DimensionStyleOverrideDictionary overrides, DxfObject entity)
        {
            // remove the style override referenced DxfObjects
            DimensionStyleOverride styleOverride;

            // add referenced text style
            overrides.TryGetValue(DimensionStyleOverrideType.TextStyle, out styleOverride);
            if (styleOverride != null)
            {
                TextStyle dimtxtsty = (TextStyle) styleOverride.Value;
                this.textStyles.References[dimtxtsty.Name].Remove(entity);
            }

            // add referenced blocks
            overrides.TryGetValue(DimensionStyleOverrideType.LeaderArrow, out styleOverride);
            if (styleOverride != null)
            {
                Block block = (Block) styleOverride.Value;
                if (block != null)
                {
                    this.blocks.References[block.Name].Remove(entity);
                }
            }

            overrides.TryGetValue(DimensionStyleOverrideType.DimArrow1, out styleOverride);
            if (styleOverride != null)
            {
                Block block = (Block) styleOverride.Value;
                if (block != null)
                {
                    this.blocks.References[block.Name].Remove(entity);
                }
            }

            overrides.TryGetValue(DimensionStyleOverrideType.DimArrow2, out styleOverride);
            if (styleOverride != null)
            {
                Block block = (Block) styleOverride.Value;
                if (block != null)
                {
                    this.blocks.References[block.Name].Remove(entity);
                }
            }

            // add referenced line types
            overrides.TryGetValue(DimensionStyleOverrideType.DimLineLinetype, out styleOverride);
            if (styleOverride != null)
            {
                Linetype linetype = (Linetype) styleOverride.Value;
                this.linetypes.References[linetype.Name].Remove(entity);
            }

            overrides.TryGetValue(DimensionStyleOverrideType.ExtLine1Linetype, out styleOverride);
            if (styleOverride != null)
            {
                Linetype linetype = (Linetype) styleOverride.Value;
                this.linetypes.References[linetype.Name].Remove(entity);
            }

            overrides.TryGetValue(DimensionStyleOverrideType.ExtLine2Linetype, out styleOverride);
            if (styleOverride != null)
            {
                Linetype linetype = (Linetype) styleOverride.Value;
                this.linetypes.References[linetype.Name].Remove(entity);
            }
        }
コード例 #14
0
ファイル: DxfWriter.cs プロジェクト: Core2D/netdxf
        private void AddDimensionStyleOverridesXData(XDataDictionary xdata, DimensionStyleOverrideDictionary overrides, EntityObject entity)
        {
            XData xdataEntry;
            if (xdata.ContainsAppId(ApplicationRegistry.DefaultName))
            {
                xdataEntry = xdata[ApplicationRegistry.DefaultName];
                xdataEntry.XDataRecord.Clear();
            }
            else
            {
                xdataEntry = new XData(new ApplicationRegistry(ApplicationRegistry.DefaultName));
                xdata.Add(xdataEntry);
            }
            xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.String, "DSTYLE"));
            xdataEntry.XDataRecord.Add(XDataRecord.OpenControlString);
            bool writeDIMPOST = false;
            string prefix = string.Empty;
            string suffix = string.Empty;
            bool writeDIMSAH = false;
            bool writeDIMZIN = false;
            bool writeDIMAZIN = false;
            bool suppressLinearLeadingZeros = false;
            bool suppressLinearTrailingZeros = false;
            bool suppressAngularLeadingZeros = false;
            bool suppressAngularTrailingZeros = false;
            bool suppressZeroFeet = true;
            bool suppressZeroInches = true;
            foreach (DimensionStyleOverride styleOverride in overrides.Values)
            {
                switch (styleOverride.Type)
                {
                    case DimensionStyleOverrideType.DimLineColor:
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 176));
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, ((AciColor) styleOverride.Value).Index));
                        break;
                    case DimensionStyleOverrideType.DimLineLinetype:
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 345));
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.DatabaseHandle, ((Linetype) styleOverride.Value).Handle));
                        break;
                    case DimensionStyleOverrideType.DimLineLineweight:
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 371));
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) (Lineweight) styleOverride.Value));
                        break;
                    case DimensionStyleOverrideType.DimLineExtend:
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 46));
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Real, (double) styleOverride.Value));
                        break;
                    case DimensionStyleOverrideType.ExtLineColor:
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 177));
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, ((AciColor) styleOverride.Value).Index));
                        break;
                    case DimensionStyleOverrideType.ExtLine1Linetype:
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 346));
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.DatabaseHandle, ((Linetype) styleOverride.Value).Handle));
                        break;
                    case DimensionStyleOverrideType.ExtLine2Linetype:
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 347));
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.DatabaseHandle, ((Linetype) styleOverride.Value).Handle));
                        break;
                    case DimensionStyleOverrideType.ExtLineLineweight:
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 372));
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) (Lineweight) styleOverride.Value));
                        break;
                    case DimensionStyleOverrideType.ExtLine1:
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 75));
                        if ((bool) styleOverride.Value)
                            xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 1));
                        else
                            xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 0));
                        break;
                    case DimensionStyleOverrideType.ExtLine2:
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 76));
                        if ((bool) styleOverride.Value)
                            xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 1));
                        else
                            xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 0));
                        break;
                    case DimensionStyleOverrideType.ExtLineOffset:
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 42));
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Real, (double) styleOverride.Value));
                        break;
                    case DimensionStyleOverrideType.ExtLineExtend:
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 44));
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Real, (double) styleOverride.Value));
                        break;
                    case DimensionStyleOverrideType.ArrowSize:
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 41));
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Real, (double) styleOverride.Value));
                        break;
                    case DimensionStyleOverrideType.CenterMarkSize:
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 141));
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Real, (double) styleOverride.Value));
                        break;
                    case DimensionStyleOverrideType.LeaderArrow:
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 341));
                        xdataEntry.XDataRecord.Add(styleOverride.Value != null
                            ? new XDataRecord(XDataCode.DatabaseHandle, ((Block) styleOverride.Value).Record.Handle)
                            : new XDataRecord(XDataCode.DatabaseHandle, "0"));
                        break;
                    case DimensionStyleOverrideType.DimArrow1:
                        writeDIMSAH = true;
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 343));
                        xdataEntry.XDataRecord.Add(styleOverride.Value != null
                            ? new XDataRecord(XDataCode.DatabaseHandle, ((Block) styleOverride.Value).Record.Handle)
                            : new XDataRecord(XDataCode.DatabaseHandle, "0"));
                        break;
                    case DimensionStyleOverrideType.DimArrow2:
                        writeDIMSAH = true;
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 344));
                        xdataEntry.XDataRecord.Add(styleOverride.Value != null
                            ? new XDataRecord(XDataCode.DatabaseHandle, ((Block) styleOverride.Value).Record.Handle)
                            : new XDataRecord(XDataCode.DatabaseHandle, "0"));
                        break;
                    case DimensionStyleOverrideType.TextStyle:
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 340));
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.DatabaseHandle, ((TextStyle) styleOverride.Value).Handle));
                        break;
                    case DimensionStyleOverrideType.TextColor:
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 178));
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, ((AciColor) styleOverride.Value).Index));
                        break;
                    case DimensionStyleOverrideType.TextHeight:
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 140));
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Real, (double) styleOverride.Value));
                        break;
                    case DimensionStyleOverrideType.TextOffset:
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 147));
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Real, (double) styleOverride.Value));
                        break;
                    case DimensionStyleOverrideType.DimScaleOverall:
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 40));
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Real, (double) styleOverride.Value));
                        break;
                    case DimensionStyleOverrideType.AngularPrecision:
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 179));
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) styleOverride.Value));
                        break;
                    case DimensionStyleOverrideType.LengthPrecision:
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 271));
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) styleOverride.Value));
                        break;
                    case DimensionStyleOverrideType.DimPrefix:
                        writeDIMPOST = true;
                        prefix = (string) styleOverride.Value;
                        break;
                    case DimensionStyleOverrideType.DimSuffix:
                        writeDIMPOST = true;
                        suffix = (string) styleOverride.Value;
                        break;
                    case DimensionStyleOverrideType.DecimalSeparator:
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 278));
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) (char) styleOverride.Value));
                        break;
                    case DimensionStyleOverrideType.DimScaleLinear:
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 144));
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Real, (double) styleOverride.Value));
                        break;
                    case DimensionStyleOverrideType.DimLengthUnits:
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 277));
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) (LinearUnitType) styleOverride.Value));
                        break;
                    case DimensionStyleOverrideType.DimAngularUnits:
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 275));
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) (AngleUnitType) styleOverride.Value));
                        break;
                    case DimensionStyleOverrideType.FractionalType:
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 276));
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) (FractionFormatType) styleOverride.Value));
                        break;
                    case DimensionStyleOverrideType.SuppressZeroFeet:
                        writeDIMZIN = true;
                        suppressZeroFeet = (bool) styleOverride.Value;
                        break;
                    case DimensionStyleOverrideType.SuppressZeroInches:
                        writeDIMZIN = true;
                        suppressZeroInches = (bool) styleOverride.Value;
                        break;
                    case DimensionStyleOverrideType.SuppressLinearLeadingZeros:
                        writeDIMZIN = true;
                        suppressLinearLeadingZeros = (bool) styleOverride.Value;
                        break;
                    case DimensionStyleOverrideType.SuppressLinearTrailingZeros:
                        writeDIMZIN = true;
                        suppressLinearTrailingZeros = (bool) styleOverride.Value;
                        break;
                    case DimensionStyleOverrideType.SuppressAngularLeadingZeros:
                        writeDIMAZIN = true;
                        suppressAngularLeadingZeros = (bool) styleOverride.Value;
                        break;
                    case DimensionStyleOverrideType.SuppressAngularTrailingZeros:
                        writeDIMAZIN = true;
                        suppressAngularTrailingZeros = (bool) styleOverride.Value;
                        break;
                    case DimensionStyleOverrideType.DimRoundoff:
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 45));
                        xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) styleOverride.Value));
                        break;
                }
            }

            if (writeDIMSAH)
            {
                xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 173));
                xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 1));
            }

            if (writeDIMPOST)
            {
                xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 3));
                xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.String, this.EncodeNonAsciiCharacters(string.Format("{0}<>{1}", prefix, suffix))));
            }

            if (writeDIMZIN)
            {
                short linSupress = 0;
                if (suppressZeroFeet && suppressZeroInches)
                    linSupress = 0;
                else if (!suppressZeroFeet && !suppressZeroInches)
                    linSupress += 1;
                else if (!suppressZeroFeet && suppressZeroInches)
                    linSupress += 2;
                else if (suppressZeroFeet && !suppressZeroInches)
                    linSupress += 3;

                if (!suppressLinearLeadingZeros && !suppressLinearTrailingZeros)
                    linSupress += 0;
                else if (suppressLinearLeadingZeros && !suppressLinearTrailingZeros)
                    linSupress += 4;
                else if (!suppressLinearLeadingZeros && suppressLinearTrailingZeros)
                    linSupress += 8;
                else if (suppressLinearLeadingZeros && suppressLinearTrailingZeros)
                    linSupress += 12;

                xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 78));
                xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, linSupress));
            }

            if (writeDIMAZIN)
            {
                short angSupress = 3;
                if (suppressAngularLeadingZeros && suppressAngularTrailingZeros)
                    angSupress = 3;
                else if (!suppressAngularLeadingZeros && !suppressAngularTrailingZeros)
                    angSupress = 0;
                else if (!suppressAngularLeadingZeros && suppressAngularTrailingZeros)
                    angSupress = 2;
                else if (suppressAngularLeadingZeros && !suppressAngularTrailingZeros)
                    angSupress = 1;

                xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 79));
                xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, angSupress));
            }

            // this information is only required by the Leader entity
            Leader leader = entity as Leader;
            if (leader != null)
            {
                MText mText = leader.Annotation as MText;
                if (mText != null)
                {
                    xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 70));
                    xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) mText.AttachmentPoint));
                    xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) 77));
                    xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Int16, (short) leader.TextVerticalPosition));
                }
            }

            xdataEntry.XDataRecord.Add(XDataRecord.CloseControlString);
        }