/*Draw Attribute*/ public static void DrawAttribute(netDxf.Entities.Attribute xTxt, Canvas mainCanvas) { System.Windows.Controls.TextBlock wTxt = new System.Windows.Controls.TextBlock(); TextUtils.CADTxtToInlineCollection(wTxt.Inlines, xTxt.Value.ToString(), wTxt.FontSize); wTxt.FontSize = TypeConverter.PointsToPixels(xTxt.Height); wTxt.FontFamily = new FontFamily(xTxt.Style.FontFamilyName); wTxt.Foreground = TypeConverter.AciColorToBrush(xTxt.getColor()); wTxt.LineHeight = xTxt.Height * 1.66; wTxt.Padding = new Thickness(0, 0, 0, 0); wTxt.Margin = new Thickness(-1, -1, 0, 0); wTxt.LineStackingStrategy = LineStackingStrategy.BlockLineHeight; wTxt.FontStretch = FontStretches.UltraExpanded; wTxt.TextWrapping = TextWrapping.Wrap; Size txtSize = TypeConverter.MeasureString(wTxt, xTxt.Value.ToString()); wTxt.Width = txtSize.Width; wTxt.Height = txtSize.Height; Vector3 newPosition = TypeConverter.TextAlignmentToPosition(xTxt.Alignment, xTxt.Position, wTxt.Width, xTxt.Height); Canvas.SetLeft(wTxt, newPosition.X); Canvas.SetTop(wTxt, mainCanvas.Height - newPosition.Y); mainCanvas.Children.Add(wTxt); /*DrawUtils.DrawPoint(newPosition,mainCanvas,Colors.Red,10,1);*/ }
private void WriteAttribute(Attribute attrib) { this.chunk.Write(0, attrib.CodeName); this.chunk.Write(5, attrib.Handle); this.chunk.Write(330, attrib.Owner.Handle); this.chunk.Write(100, SubclassMarker.Entity); this.chunk.Write(8, this.EncodeNonAsciiCharacters(attrib.Layer.Name)); this.chunk.Write(62, attrib.Color.Index); if (attrib.Color.UseTrueColor) this.chunk.Write(420, AciColor.ToTrueColor(attrib.Color)); if (attrib.Transparency.Value >= 0) this.chunk.Write(440, Transparency.ToAlphaValue(attrib.Transparency)); this.chunk.Write(6, this.EncodeNonAsciiCharacters(attrib.LineType.Name)); this.chunk.Write(370, attrib.Lineweight.Value); this.chunk.Write(48, attrib.LineTypeScale); this.chunk.Write(60, attrib.IsVisible ? (short)0 : (short)1); this.chunk.Write(100, SubclassMarker.Text); Vector3 ocsInsertion = MathHelper.Transform(attrib.Position, attrib.Normal, CoordinateSystem.World, CoordinateSystem.Object); this.chunk.Write(10, ocsInsertion.X); this.chunk.Write(20, ocsInsertion.Y); this.chunk.Write(30, ocsInsertion.Z); this.chunk.Write(40, attrib.Height); this.chunk.Write(41, attrib.WidthFactor); this.chunk.Write(7, this.EncodeNonAsciiCharacters(attrib.Style.Name)); object value = attrib.Value; if (value == null) this.chunk.Write(1, string.Empty); else if (value is string) this.chunk.Write(1, this.EncodeNonAsciiCharacters((string) value)); else this.chunk.Write(1, value.ToString()); switch (attrib.Alignment) { case TextAlignment.TopLeft: this.chunk.Write(72, (short) 0); break; case TextAlignment.TopCenter: this.chunk.Write(72, (short) 1); break; case TextAlignment.TopRight: this.chunk.Write(72, (short) 2); break; case TextAlignment.MiddleLeft: this.chunk.Write(72, (short) 0); break; case TextAlignment.MiddleCenter: this.chunk.Write(72, (short) 1); break; case TextAlignment.MiddleRight: this.chunk.Write(72, (short) 2); break; case TextAlignment.BottomLeft: this.chunk.Write(72, (short) 0); break; case TextAlignment.BottomCenter: this.chunk.Write(72, (short) 1); break; case TextAlignment.BottomRight: this.chunk.Write(72, (short) 2); break; case TextAlignment.BaselineLeft: this.chunk.Write(72, (short) 0); break; case TextAlignment.BaselineCenter: this.chunk.Write(72, (short) 1); break; case TextAlignment.BaselineRight: this.chunk.Write(72, (short) 2); break; case TextAlignment.Aligned: this.chunk.Write(72, (short) 3); break; case TextAlignment.Middle: this.chunk.Write(72, (short) 4); break; case TextAlignment.Fit: this.chunk.Write(72, (short) 5); break; } this.chunk.Write(11, attrib.Position.X); this.chunk.Write(21, attrib.Position.Y); this.chunk.Write(31, attrib.Position.Z); this.chunk.Write(50, attrib.Rotation); this.chunk.Write(51, attrib.ObliqueAngle); this.chunk.Write(210, attrib.Normal.X); this.chunk.Write(220, attrib.Normal.Y); this.chunk.Write(230, attrib.Normal.Z); this.chunk.Write(100, SubclassMarker.Attribute); this.chunk.Write(2, this.EncodeNonAsciiCharacters(attrib.Tag)); this.chunk.Write(70, (short) attrib.Flags); switch (attrib.Alignment) { case TextAlignment.TopLeft: this.chunk.Write(74, (short) 3); break; case TextAlignment.TopCenter: this.chunk.Write(74, (short) 3); break; case TextAlignment.TopRight: this.chunk.Write(74, (short) 3); break; case TextAlignment.MiddleLeft: this.chunk.Write(74, (short) 2); break; case TextAlignment.MiddleCenter: this.chunk.Write(74, (short) 2); break; case TextAlignment.MiddleRight: this.chunk.Write(74, (short) 2); break; case TextAlignment.BottomLeft: this.chunk.Write(74, (short) 1); break; case TextAlignment.BottomCenter: this.chunk.Write(74, (short) 1); break; case TextAlignment.BottomRight: this.chunk.Write(74, (short) 1); break; case TextAlignment.BaselineLeft: this.chunk.Write(74, (short) 0); break; case TextAlignment.BaselineCenter: this.chunk.Write(74, (short) 0); break; case TextAlignment.BaselineRight: this.chunk.Write(74, (short) 0); break; case TextAlignment.Aligned: this.chunk.Write(74, (short) 0); break; case TextAlignment.Middle: this.chunk.Write(74, (short) 0); break; case TextAlignment.Fit: this.chunk.Write(74, (short) 0); break; } }
private void WriteAttribute(Attribute attrib, Vector3d puntoInsercion) { this.WriteCodePair(0, DxfObjectCode.Attribute); this.WriteCodePair(5, attrib.Handle); this.WriteCodePair(100, SubclassMarker.Entity); this.WriteEntityCommonCodes(attrib); this.WriteCodePair(100, SubclassMarker.Text); this.WriteCodePair(10, attrib.Definition.BasePoint.X + puntoInsercion.X); this.WriteCodePair(20, attrib.Definition.BasePoint.Y + puntoInsercion.Y); this.WriteCodePair(30, attrib.Definition.BasePoint.Z + puntoInsercion.Z); this.WriteCodePair(1, attrib.Value); this.WriteCodePair(40, attrib.Definition.Height); this.WriteCodePair(41, attrib.Definition.WidthFactor); this.WriteCodePair(50, attrib.Definition.Rotation); this.WriteCodePair(7, attrib.Definition.Style); this.WriteCodePair(100, SubclassMarker.Attribute); this.WriteCodePair(2, attrib.Definition.Id); this.WriteCodePair(70, (int) attrib.Definition.Flags); this.WriteCodePair(11, attrib.Definition.BasePoint.X + puntoInsercion.X); this.WriteCodePair(21, attrib.Definition.BasePoint.Y + puntoInsercion.Y); this.WriteCodePair(31, attrib.Definition.BasePoint.Z + puntoInsercion.Z); }