Obtener First, Second, Leader Dimstyle

Obtener First, Second, Leader Dimstyle

j_cordero
Advocate Advocate
236 Views
1 Reply
Message 1 of 2

Obtener First, Second, Leader Dimstyle

j_cordero
Advocate
Advocate

estilo autocad.JPG

 

hola alguien me puede ayudar a extraer 1, 2, 3 ya que cuando trato de extraerlo solo puedo extraer las variables del sistema,

using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
using System.IO;
using System.Windows.Forms;
using Application = Autodesk.AutoCAD.ApplicationServices.Application;
using SaveFileDialog = Autodesk.AutoCAD.Windows.SaveFileDialog;

namespace EXPORT_DIM_STYLE
{
    public class Commands
    {
        [CommandMethod("ExportDimStyleToTxt")]
        public static void ExportDimStyleToTxt()
        {
            Document doc = Application.DocumentManager.MdiActiveDocument;
            Database db = doc.Database;
            Editor editor = doc.Editor;

            using (Transaction tr = db.TransactionManager.StartTransaction())
            {
                try
                {
                    DimStyleTable dimStyleTable = (DimStyleTable)tr.GetObject(db.DimStyleTableId, OpenMode.ForRead);
                    var dimStyles = new System.Collections.Generic.List<string>();

                    foreach (ObjectId dimStyleId in dimStyleTable)
                    {
                        DimStyleTableRecord dimStyle = (DimStyleTableRecord)tr.GetObject(dimStyleId, OpenMode.ForRead);
                        dimStyles.Add(dimStyle.Name);
                    }

                    // Crear y mostrar el formulario de selección
                    using (Form selectionForm = new Form())
                    {
                        selectionForm.Text = "Seleccione un Estilo de Dimensión";
                        selectionForm.Width = 300;
                        selectionForm.Height = 400;

                        ListBox listBox = new ListBox()
                        {
                            Dock = DockStyle.Fill,
                            SelectionMode = System.Windows.Forms.SelectionMode.One
                        };

                        listBox.Items.AddRange(dimStyles.ToArray());

                        Button confirmButton = new Button()
                        {
                            Text = "Confirmar",
                            Dock = DockStyle.Bottom
                        };

                        confirmButton.Click += (s, e) => selectionForm.DialogResult = DialogResult.OK;

                        selectionForm.Controls.Add(listBox);
                        selectionForm.Controls.Add(confirmButton);

                        if (selectionForm.ShowDialog() == DialogResult.OK && listBox.SelectedItem != null)
                        {
                            string dimStyleName = listBox.SelectedItem.ToString();

                            if (!dimStyleTable.Has(dimStyleName))
                            {
                                editor.WriteMessage($"\nEl estilo de dimensión '{dimStyleName}' no existe.");
                                return;
                            }

                            DimStyleTableRecord selectedDimStyle = (DimStyleTableRecord)tr.GetObject(dimStyleTable[dimStyleName], OpenMode.ForRead);

                            // Crear un archivo de texto
                            SaveFileDialog saveFileDialog = new SaveFileDialog("Guardar archivo", "", "txt", "Guardar como", SaveFileDialog.SaveFileDialogFlags.DoNotTransferRemoteFiles);

                            if (saveFileDialog.ShowDialog() != System.Windows.Forms.DialogResult.OK)
                            {
                                editor.WriteMessage("\nExportación cancelada.");
                                return;
                            }

                            string filePath = saveFileDialog.Filename;

                            // Asegurarse de que la extensión sea .txt
                            if (!filePath.EndsWith(".txt"))
                            {
                                filePath += ".txt";
                            }

                            ExportToTxt(selectedDimStyle, filePath);

                            editor.WriteMessage("\nExportación completada exitosamente.");
                        }
                        else
                        {
                            editor.WriteMessage("\nSelección cancelada por el usuario.");
                        }
                    }
                }
                catch (Autodesk.AutoCAD.Runtime.Exception ex)
                {
                    editor.WriteMessage("Error al exportar el estilo de dimensión: " + ex.Message);
                }
                catch (System.Exception ex)
                {
                    editor.WriteMessage("Error general al exportar el estilo de dimensión: " + ex.Message);
                }
                finally
                {
                    tr.Commit();
                }
            }
        }

        private static void ExportToTxt(DimStyleTableRecord dimStyle, string filePath)
        {
            using (StreamWriter writer = new StreamWriter(filePath))
            {
                // Escribir encabezados
                writer.WriteLine("Nombre\tFirstArrowhead\tSecondArrowhead\tLeaderArrowhead\tDimColor\tDimLinetype\tDimLineweight\tExtColor\tExtLinetype1\tExtLinetype2\tExtLineweight\t" +
                                 "ArrowSize\tCenterMarkType\tCenterMarkSize\t" +
                                 "ArcLengthSymbol\tJogAngle\tJogHeight\t" +
                                 "TextStyle\tTextColor\tTextHeight\tVerticalPlacement\tHorizontalPlacement\tViewDirection\tOffsetFromDimLine\tTextAlignment\t" +
                                 "ScaleDimensionFeatures\tDrawDimLineBetweenExtLines\t" +
                                 "UnitFormat\tPrecision\tScaleFactor\tLeadingZeroSuppression\tTrailingZeroSuppression\tSubUnitsFactor\tAngularUnitFormat\tAngularPrecision");

                // Escribir valores
                writer.WriteLine($"{dimStyle.Name}\t" +
                                 $"{(dimStyle.Dimblk1.IsNull ? "None" : dimStyle.Dimblk1.ToString())}\t" + // First Arrowhead
                                 $"{(dimStyle.Dimblk2.IsNull ? "None" : dimStyle.Dimblk2.ToString())}\t" + // Second Arrowhead
                                 $"{(dimStyle.Dimldrblk.IsNull ? "None" : dimStyle.Dimldrblk.ToString())}\t" + // Leader Arrowhead
                                 $"{dimStyle.Dimclrd.ColorIndex}\t" + // Color de las líneas de dimensión
                                 $"{(dimStyle.Dimltype.IsNull ? "ByBlock" : dimStyle.Dimltype.ToString())}\t" + // Tipo de línea de las líneas de dimensión
                                 $"{dimStyle.Dimlwd.ToString()}\t" + // Grosor de las líneas de dimensión
                                 $"{dimStyle.Dimclre.ColorIndex}\t" + // Color de las líneas de extensión
                                 $"{(dimStyle.Dimltex1.IsNull ? "ByBlock" : dimStyle.Dimltex1.ToString())}\t" + // Tipo de línea de la primera línea de extensión
                                 $"{(dimStyle.Dimltex2.IsNull ? "ByBlock" : dimStyle.Dimltex2.ToString())}\t" + // Tipo de línea de la segunda línea de extensión
                                 $"{dimStyle.Dimlwe.ToString()}\t" + // Grosor de las líneas de extensión
                                 $"{dimStyle.Dimasz}\t" + // Arrow Size
                                 $"{(dimStyle.Dimcen != 0 ? "Mark" : "None")}\t" + // Center Mark Type (None or Mark)
                                 $"{(dimStyle.Dimcen != 0 ? dimStyle.Dimcen.ToString() : "N/A")}\t" + // Center Mark Size
                                 $"{dimStyle.Dimtmove}\t" + // Arc Length Symbol (Preceding or Above)
                                 $"{dimStyle.Dimjogang}\t" + // Jog Angle
                                 $"{dimStyle.Dimtxt}\t" + // Jog Height (Text Height)
                                 $"{(dimStyle.Dimtxsty.IsValid ? dimStyle.Dimtxsty.ToString() : "None")}\t" + // Text Style
                                 $"{dimStyle.Dimclrt.ColorIndex}\t" + // Text Color
                                 $"{dimStyle.Dimtxt}\t" + // Text Height
                                 $"{dimStyle.Dimtad}\t" + // Vertical Placement
                                 $"{dimStyle.Dimjust}\t" + // Horizontal Placement
                                 $"{(dimStyle.Dimtih ? "Right-to-Left" : "Left-to-Right")}\t" + // View Direction
                                 $"{dimStyle.Dimtvp}\t" + // Offset from Dim Line
                                 $"{dimStyle.Dimtad}\t" + // Text Alignment
                                 $"{dimStyle.Dimscale}\t" + // Scale Dimension Features
                                 $"{(dimStyle.Dimtmove == 1 ? "Yes" : "No")}\t" + // Draw Dim Line Between Ext Lines
                                 $"{dimStyle.Dimlunit}\t" + // Unit Format
                                 $"{dimStyle.Dimdec}\t" + // Precision
                                 $"{dimStyle.Dimlfac}\t" + // Scale Factor
                                 $"{dimStyle.Dimzin}\t" + // Leading Zero Suppression
                                 $"{dimStyle.Dimzin}\t" + // Trailing Zero Suppression
                                 $"{dimStyle.Dimlfac}\t" + // Sub-Units Factor
                                 $"{dimStyle.Dimadec}\t" + // Angular Unit Format
                                 $"{dimStyle.Dimadec}" // Angular Precision
                                );
            }
        }
    }
}

pero no las del estilo que muestro en pantalla. 

0 Likes
237 Views
1 Reply
Reply (1)
Message 2 of 2

_gile
Consultant
Consultant

Hi,

 

Try replacing

$"{(dimStyle.Dimblk1.IsNull ? "None" : dimStyle.Dimblk1.ToString())}\t" + // First Arrowhead
$"{(dimStyle.Dimblk2.IsNull ? "None" : dimStyle.Dimblk2.ToString())}\t" + // Second Arrowhead
$"{(dimStyle.Dimldrblk.IsNull ? "None" : dimStyle.Dimldrblk.ToString())}\t" + // Leader Arrowhead

with:

$"{(dimStyle.Dimblk1.IsNull ? "Closed filled" : dimStyle.Dimblk1.ToString())}\t" + // First Arrowhead
$"{(dimStyle.Dimblk2.IsNull ? "Closed filled" : dimStyle.Dimblk2.ToString())}\t" + // Second Arrowhead
$"{(dimStyle.Dimldrblk.IsNull ? "Closed filled" : dimStyle.Dimldrblk.ToString())}\t" + // Leader Arrowhead


Gilles Chanteau
Programmation AutoCAD LISP/.NET
GileCAD
GitHub

0 Likes