Version 0.9.1 versus versión 1.0.1

Jun 3, 2015 at 4:23 PM
(De Gonzalo Arranz, Bilbao/España).
Antes que nada felicitarte por tu trabajo.
Estuve mirando la versión 0.9.1 y no me dio problemas importantes.
Con el mismo dxf pero versión 1.0.1 me desaparecen elementos de dibujo, creo que son elementos SOLID.
En principio lo he relacionado con el cambio de en los atributos (Attribute, Attributeefinition) pero no lo tengo claro.
Un saludo.
Coordinator
Jun 3, 2015 at 5:29 PM
No se lo que puede estar ocurriendo, las entidades SOLID se leen sin problemas. En el código fuente hay un dibujo de muestra "sample.dxf" que contiene todas las entidades que la librería es capaz de leer, puedes probarlo, ninguna de las entidades que contiene debería desaparecer al cargar el archivo, solo las no compatibles desaparecerán. En la página principal del proyecto puedes encontrar la lista de entidades que netDxf es capaz de leer.

Sin más información o con un archivo con el que pueda reproducir tu problema no sabría decirte lo que puede estar pasando.

Daniel
Jun 4, 2015 at 9:37 AM
Hola.
Ante todo Daniel felicitarte y agradecerte por el trabajo que te tomas en el desarrollo y mantenimiento del proyecto netDxf, así como por la diligencia con que respondes a las cuestiones que te planteamos los usuarios.

Como te comenté brevemente a través de CodePlex, en Octubre del 2014 aproximadamente estuve probando y usando a nivel superficial la versión 0_9_1 de tu librería y no vi nada extraño; hice unos pequeños programas de test, etc…

Retomé el asunto hace una semana y ví que la librería netDxf había vanzado hasta la versión 1_0_1 con una serie de mejoras que a mí me resultaban interesantes.
Ejecute mis probramas de test con al nueva librería, 1_0_1 , y vi algo extraño que paso a relatarte.

Con este código:

void CargaYSalva()
{
    string file = "SLD_BCU_2013.dxf"; 
    DxfDocument dxf= DxfDocument.Load(file);
    dxf.Save("SLD_BCU_2013_0_9_1.dxf");
}

linkado con la versión 0_9_1 de tu librería genero el fichero SLD_BCU_2013_0_9_1.dxf ,

y con este código:
void CargaYSalva()
{
    string file = "SLD_BCU_2013.dxf";ç
    DxfDocument dxf= DxfDocument.Load(file);
    dxf.Save("SLD_BCU_2013_1_0_1.dxf");
}
linkado con la versión 1_0_1 de tu librería genero el fichero SLD_BCU_2013_1_0_1.dxf ,


Observando el fichero de partida y los dos resultados con DraftSight (y con autodesk ocurre lo mismo) se visualizan diferentes resultados.
HE INTENTADO ENVIARTE DIRECTAMENTE DESDE MI CORREO IMÁGENES Y FICHEROS, PERO CODEPLEX NO ME DEJA, NO SÉ COMO HACERLO; DESDE AQUÍ SOLO TE PUEDO ENVIAR TEXTO. :-(
Jun 4, 2015 at 3:49 PM
Daniel, espero que en el link:

http://dropcanvas.com/hzpf7

encuentres seis ficheros:

SLD_BCU_2013_simplificado_muy_simplificado.dxf es el fichero de partida, tiene una figura blanca y un texto

SLD_BCU_2013_simplificado_muy_simplificado_0_9_1.dxf es el fichero generado al cargar y salvar con netDxf 0.9.1, correcto, tiene una figura blanca y un texto

SLD_BCU_2013_simplificado_muy_simplificado_1_0_1.dxf es el fichero generado al cargar y salvar con netDxf 1.0.1, incorrecto, tiene un texto pero no está la figura blanca.

Los respectivos pngs son los volcados de pantalla respectivos.

Un saludo.
Coordinator
Jun 8, 2015 at 3:21 PM
Tu dibujo realmente lo que contiene son entidades TRACE, tienen distinto nombre pero son exactamente iguales a las entidades SOLID. Desconozco la razón de esta duplicidad, parece innecesaria, incluso el código SubClassMarker es igual para las dos, AcDbTrace. En la versión antigua debía utilizar este código y no el de entidad, el par 0, para seleccionar el tipo a leer.

En la próxima revisión añadiré este tipo de entidad deforma independiente aunque sean iguales. Tal vez, DraftSight debería generar entidades SOLID y no TRACE, ya que son las de uso común.

Daniel
Jun 9, 2015 at 7:40 AM
Muy agradecido, Daniel.

Hay un equivoco.

En realidad yo no genero los dxf con DraftSight, sino que me los dan generados, con AutoCAD, y yo los visualizo y manipulo con DraftSight, y con AutoDesk si tengo alguna duda.

Un saludo.
Jun 9, 2015 at 8:33 AM
Asunto aclarado.
En realidad yo manipulé la librería 0.9.1 para adaptarla a mis necesidades, por eso podía mostrar los objetos TRACE.
  • En DxfObjectCode.cs:
    /// <summary>
    /// Solid.
    /// </summary>
    public const string Solid = "SOLID";
    
    /// <summary>
    /// Trace.GAC.
    /// </summary>
    public const string Trace = "TRACE";
    
    /// <summary>
    /// Text string.
    /// </summary>
    public const string Text = "TEXT";
    
  • En DxfReader.cs:
            case DxfObjectCode.Trace:   // GAC: aparéntemente TRACE y SOLID son objetos idénticos,... al menos así los consideraremos 
            case DxfObjectCode.Solid:   // (mientras no den problemas)                     
                entity = this.ReadSolid();
                break;