la clave proporcionada no se encontró en el diccionario...

Mar 22, 2013 at 9:36 PM
Edited Mar 22, 2013 at 9:39 PM
esto me aparece al intentar abrir un dxf version 1015 generado por sketchup:

imagen con el error

alguna idea ?

gracias.
Coordinator
Mar 23, 2013 at 7:02 PM
¿Estás seguro de estar utilizando la última versión? Hace un par de revisiones convertí la función Load del DxfDocument en estática, por lo que para cargar un archivo dxf deberías utilizar:
DxfDocument dxf = DxfDocument.Load(filename);
Si el problema persiste, lo mejor sería que me facilitaras el dxf para probar en que punto del código se esta generando el error. He probado a importar archivos sencillos desde Sketchup y no he tenido problemas. Si estás utilizando bloques anidados, que tanto te preocupaban, puede que haya un problema con su importación.

Daniel
Mar 26, 2013 at 11:02 PM
Edited Mar 26, 2013 at 11:08 PM
Hola, aquí hay dos archivos que, al intentar cargarlos, dan errores distintos.

el primero, muy simple, creado en sketchup 8:
simple_2_bloques_4_lineas

el anterior me da el error:
"Keynotfoundexception.
La clave no se encontró en el diccionario



el segundo, generado desde la suite de acústica EASE:
estadio

este me da el error:

"El parametro no puede ser nulo.
Nombre del parámetro: name"

*Yo esto en vb.net por lo tanto para cargar el archivo estoy usando
dim dxf as new DxfDocument.Load(filename)

gracias.
Coordinator
Apr 5, 2013 at 3:50 PM
Con los dxf me ha sido bastante mas fácil localizar los problemas. En estos casos no son específicamente un problema con la librería, si no que tanto el sketchup como el EASE no estaban generando un archivo estrictamente correcto. En la próxima actualización permitiré que estos problemas no generen errores para que se puedan cargar los archivos. La librería es bastante más estricta que la importación del AutoCad.

En el primer caso, sketchup estaba creando inserciones con atributos sin que estos estuvieran definidos en la definición del bloque, teóricamente esto debería ser incorrecto. AutoCad permite que aparezcan los atributos sin definición en el bloque, aunque si se intenta reutilizar el bloque, las nuevas inserciones no contendrán dichos atributos. Por el momento lo que haré será eliminar los atributos de la inserción si estos no estan definidos en el bloque, más adelante puede que opte por la misma solución del AutoCad.

En el segundo caso, EASE estaba generando bloques con códigos 2 y 3, que de acuerdo a la documentación ambos contienen el nombre del bloque, desconozco la razón de esta duplicidad, pero EASE estaba generando un codigo 3 con un nombre vacío de aquí el error de parámetro nulo.

En VB.net deberías utilizar
Dim dxf As DxfDocument
dxf = DxfDocument.Load(filename)
No entiendo como te esta permitiendo con la última versión del código inicializar el documento de esa forma. Las funciones estáticas son llamadas directamente desde la clase y por lo tanto no requieren de una instancia de dicha clase.

Daniel
Apr 5, 2013 at 3:54 PM
Muy amable Daniel, estaré muy atento a este desarrollo, y le haré propaganda a través de mis contactos. Gracias.