Example #1
0
		/*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;
            }
        }
Example #3
0
        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);
        }