Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 3 de 5
Ir a la página Anterior  1, 2, 3, 4, 5  Siguiente
 
LibreDWG En Gambas
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Re: LibreDWG En Gambas 
 
vuott escribió:  
Aquì la su traducción a Gambas:
.......
Este codigo funziona.


Bueno, tincho, busqué esta pagina web:
 https://knowledge.autodesk.com/supp...mple-files.html

Tincho, intenta utilizar con el mi programito los archivos ejemplos que estan en:  " AutoCAD 2010 Sample Files "  y mira la console lo que muestra.

saludos


......

opss  
Compartiendo todo eso con los otros miembros del foro.    

Bueno, amigos, como probar aquel mi codigo traducido de el C ?

1) Descargad la libreria .so adjunta abajo (...claramente... descomprimidla).

2) Pónedla en una carpeta (por ejemplo en: /tmp ).

3) en un proyecto gambas pegad este codigo:
Código: [Descargar] [Ocultar] [Seleccionar]
Library "/tmp/libredwg:0.0.0"      ' He puesto la libreria en /tmp  !!!

' int dwg_read_file(char *filename, Dwg_Data * dwg)
Private Extern dwg_read_file(filename As String, dwg As Pointer) As Integer


Public Sub Main()

  Dim filename_in As String
  Dim p_dwg As Pointer
  Dim err As Integer
  
    filename_in = "/ruta/del/archivo.dwg"
    
' Asignación de memoria para el Puntero:
    p_dwg = Alloc(2832)

' Lee el archivo .dwg:
    err = dwg_read_file(filename_in, p_dwg)
    If err Then
      Error.Raise("Imposible leer el archivo " & filename_in & " !")
    Else
      Print "\n¡La lectura del archivo ha tenido éxito!"
    Endif

' Libera la memoria:
    Free(p_dwg)

End


4) descargad un archivo ejemplo en la sección  " AutoCAD 2010 Sample Files " de esta pagina web:
https://knowledge.autodesk.com/supp...mple-files.html

5) Usadlo en el codigo.

6) Mirad lo que es escrito en console.

libredwg.so.0.0.0.tar.gz
Descripción:  
Descargar
Nombre del archivo: libredwg.so.0.0.0.tar.gz
Tamaño: 83.92 KB
Descargado: 81 veces
libredwg.so.0.0.0.tar.gz
Descripción:  
Descargar
Nombre del archivo: libredwg.so.0.0.0.tar.gz
Tamaño: 83.92 KB
Descargado: 81 veces
libredwg.so.0.0.0.tar.gz
Descripción:  
Descargar
Nombre del archivo: libredwg.so.0.0.0.tar.gz
Tamaño: 83.92 KB
Descargado: 81 veces

 



 
última edición por vuott el Domingo, 17 Enero 2016, 02:38; editado 12 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: LibreDWG En Gambas 
 
vuott escribió:  

1) Descargad la libreria .so adjunta abajo (...claramente... descomprimidla).

Yo he usado la libreria original de gnu, que descargue y compile como describo antes en "Compilación de la librería libreDWG, intento 3"

vuott escribió:  

2) Pónedla en una carpeta (por ejemplo en: /tmp ).

La ubucación de la libreria es /usr/local/lib/libredwg.so.0.0.0


vuott escribió:  

3) en un proyecto gambas pegad este codigo:

Ok

vuott escribió:  

4) descargad un archivo ejemplo en la sección  " AutoCAD 2010 Sample Files " de esta pagina web:

ok

vuott escribió:  

5) Usadlo en el codigo.

ok
vuott escribió:  

6) Mirad lo que es escrito en console.

No escribe nada, devuelve en err = -1

¿Como es el procedimiento que usaste para compilar tu librería .so? ya que tienen diferente tamaño en comparación a la que genera el procedimiento 3 que explico antes.
¿Que es lo que te aparece a ti en la consola?

Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: LibreDWG En Gambas 
 
tincho escribió:  
¿Como es el procedimiento que usaste para compilar tu librería .so? ya que tienen diferente tamaño en comparación a la que genera el procedimiento 3 que explico antes.

Sì, lo vì.
No he compilado la libreria .so que yo usé, la descargué - ya compilada (para Fedora) - desde este enlace:
http://download.opensuse.org/reposi...-6.1.x86_64.rpm (Binary package)


tincho escribió:  
¿Que es lo que te aparece a ti en la consola?

El texto es muuy largo.

Ahora he usado el file " plot_screening_and_fill_patterns.dwg ", que puedes hallar en la sección AutoCAD 2010 Sample Files de esta pagina web:
https://knowledge.autodesk.com/supp...mple-files.html

Bueno, abajo como adjunto un archivo de texto donde puedes ver lo que apareció en la console.

Saludos
 




===================
Nomen flori mei Daníla.
 
última edición por vuott el Domingo, 17 Enero 2016, 20:41; editado 3 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: LibreDWG En Gambas 
 
vuott escribió:  
...he usado el file " plot_screening_and_fill_patterns.dwg

este archivo funciono, supongo que porque es versión 2007, y antes estaba probando con otro que es 2011.
Para verificar la version del dwg hay que abrir el archivo con nano, y al principio del archivo esta alguno de los siguientes textos:
AC1024 AutoCAD 2011
AC1024 AutoCAD 2010
AC1021 AutoCAD 2007/2008/2009
AC1018 AutoCAD 2004/2005/2006
AC1015 AutoCAD 2000/2000i/2002
AC1014 Release 14
AC1012 Release 13
AC1009 Release 11/12
AC1006 Release 10
La libreria es compatible hasta erchivos AC1021 pero no tengo en clario si para 2008/2009, pues solo se mensiona 2007.

Luego, también instale la librería pslib (en linuxmint) supongo que en debian también. y me aparecieron los textos que comentas.
Una pregunta, ¿Debería aparecer por alguna parte algun fichero .ps? yo no he encontrado ninguno.

Esto va tomando color eh!! en cualquier momento tenemos un CAD gambas que lea dwg.

Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: LibreDWG En Gambas 
 
tincho escribió:  
antes estaba probando con otro que es 2011.

Lo sospeché.    



tincho escribió:  
AC1021 AutoCAD 2007/2008/2009

Es como un magic number del fichero.
Para verlo con gambas puedes usar este simple codigo:
Código: [Descargar] [Ocultar] [Seleccionar]
Public Sub Main()

  Dim s As String
  
    s = File.Load("/ruta/del/archivo.dwg")

    Print Left(s, 6)

End



tincho escribió:  
Una pregunta, ¿Debería aparecer por alguna parte algun fichero .ps? yo no he encontrado ninguno.

No comprendo la pregunta. Es decir ?  
Vas buscando en internet ficheros .ps ? O que ?
 



 
última edición por vuott el Lunes, 18 Enero 2016, 02:09; editado 2 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: LibreDWG En Gambas 
 
vuott escribió:  
Para verlo con gambas puedes usar este simple codigo

Si es un especie de número mágico, que permite hacer una primera verificación de versión de archivo y el código que propones lo voy a incluir en Destornishador para "leer" esa información del archivo dwg.
Lo del archivo .ps te lo preguntaba por si el código anterior lo generaba, pero veo que no, que esa es la etapa siguiente cuando logremos "traducir" dwg_ps.c
Por cierto. ¿Como puedo hacer para traducir un archivo.c a gambas.class? ¿Hay un método? ¿Puedes darme un pequeño cursillo para hacer el intento de traducción por mi cuenta?

Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: LibreDWG En Gambas 
 
tincho escribió:  
¿Como puedo hacer para traducir un archivo.c a gambas.class? ¿Hay un método? ¿Puedes darme un pequeño cursillo para hacer el intento de traducción por mi cuenta?


Muy simple, tincho: .......estudiar y aprender el lenguaje C !    


Saludos
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: LibreDWG En Gambas 
 
vuott escribió:  
Muy simple, tincho: .......estudiar y aprender el lenguaje C !    

Lo sabia , jajaja!!!
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: LibreDWG En Gambas 
 
tincho me pedió que volviera disponible para gambas, usando Shell, este programa escrito en C:
   https://github.com/ArchimedesCAD/li...ples/load_dwg.c

Bueno, he modificado un po' aquel codigo y añadí unas lineas para completarlo y para permitir a gambas que coja unas informaciones enviadas por aquella aplicación escrita en C.

Hace falta por supuesto que sea instalado el recurso LibreDWG, como fue explicado en estos enlances:
http://foro.gambas-es.org/show_post.php?p=29669
http://foro.gambas-es.org/show_post.php?p=29675
http://foro.gambas-es.org/show_post.php?p=29676

El nuevo codigo en C será:
Código: [Descargar] [Ocultar] [Seleccionar]
/*****************************************************************************/
/*  LibreDWG - free implementation of the DWG file format                    */
/*                                                                           */
/*  Copyright (C) 2009 Free Software Foundation, Inc.                        */
/*  Copyright (C) 2010 Thien-Thi Nguyen                                      */
/*                                                                           */
/*  This library is free software, licensed under the terms of the GNU       */
/*  General Public License as published by the Free Software Foundation,     */
/*  either version 3 of the License, or (at your option) any later version.  */
/*  You should have received a copy of the GNU General Public License        */
/*  along with this program.  If not, see <http://www.gnu.org/licenses/>.    */
/*****************************************************************************/

/*
 * load_dwg.c: load a DWG, get lines, text and circles
 * written by Felipe Castro
 * modified by Felipe Corrêa da Silva Sances
 * modified by Thien-Thi Nguyen
 * mutatum a vuott (www.gambas-it.org, foro.gambas-es.org)
 */


#include <dwg.h>
#include <stdio.h>

void
add_line(double x1, double y1, double x2, double y2)
{
  
        printf("%lf", x1);
        printf("%lf", y1);
        printf("%lf", x2);
        printf("%lf", y2);

}

void
add_circle(double x, double y, double R)
{
  
        printf("%lf", x);
        printf("%lf", y);
        printf("%lf", R);

}

void
add_text(double x, double y, char *txt)
{
  
        printf("%lf", x);
        printf("%lf", y);
        printf("%s", txt);

}


int main (int argc, char *argv[]) {
  unsigned int i;
  int success;
  Dwg_Data dwg;

  dwg.num_objects = 0;
  success = dwg_read_file(argv[1], &dwg);
  if (success) {
        printf("Imposible cargar el archivo %s !\n", argv[1]);
        return success;
  }

  for (i = 0; i < dwg.num_objects; i++)
    {
      Dwg_Entity_LINE *line;
      Dwg_Entity_CIRCLE *circle;
      Dwg_Entity_TEXT *text;

      switch (dwg.object[i].type)
        {
      case DWG_TYPE_LINE:
        line = dwg.object[i].tio.entity->tio.LINE;
        add_line(line->start.x, line->end.x, line->start.y, line->end.y);
        break;
      case DWG_TYPE_CIRCLE:
        circle = dwg.object[i].tio.entity->tio.CIRCLE;
        add_circle(circle->center.x, circle->center.y, circle->radius);
        break;
      case DWG_TYPE_TEXT:
        text = dwg.object[i].tio.entity->tio.TEXT;
        add_text(text->insertion_pt.x, text->insertion_pt.y, text->text_value);
        break;
        }
    }

  dwg_free(&dwg);

  return (0);

}

Guardamos este codigo en un simple archivo de texto, por ejemplo en la ruta: /tmp/load_dwg.c
Este codigo debe ser compilado como sigue:
 gcc -o /tmp/load_dwg /tmp/load_dwg.c -lredwg


El codigo gambas para coger los valores enviados por la aplicación load.dwg.c será muy sencillo:
Código: [Descargar] [Ocultar] [Seleccionar]
Private pr As Process


Public Sub Main()

' Abre el programa "load_dwg", pasandole un archivo .dwg, y lo maneja con "Process" poniendolo tambien en "observación":
  pr = Shell "/tmp/load_dwg /ruta/de/un/archivo.dwg" For Read As "Lee"

End


Public Sub Lee_Read()   ' Si estan entrando datos, será activata esta sub-routine

  Dim s As String

   Read #pr, s, -256
   Print s

End



Gracias a tincho por sus test de estos codigos.
 



 
última edición por vuott el Martes, 19 Enero 2016, 18:09; editado 5 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: LibreDWG En Gambas 
 
vuott escribió:  
Gracias a tincho por sus test de estos códigos.

El que debo dar las gracias soy yo. aprendí a usar las librerías de C desde la consola, es mas, acá pongo una modificación de load_dwg para que saque la información mas ordenada (no se si sera el estilo mas adecuado de usar printf).

Código: [Descargar] [Ocultar] [Seleccionar]
void
add_line(double x1, double y1, double x2, double y2)
{
printf("[Lin]|");
printf("X1:");
printf("%lf", x1);
printf("|");

printf("Y1:");
printf("%lf", y1);
printf("|");

printf("X2:");
printf("%lf", x2);
printf("|");

printf("Y2: ");
printf("%lf", y2);
printf("\n");

}

void
add_circle(double x, double y, double R)
{

printf("[Cir]|");

printf("X:");
printf("%lf", x);
printf("|");

printf("Y:");
printf("%lf", y);
printf("|");

printf("R:");
printf("%lf", R);
printf("\n");

}

void
add_text(double x, double y, char *txt)
{

printf("[Tex]|");

printf("X:");
printf("%lf", x);
printf("|");

printf("Y:");
printf("%lf", y);
printf("|");

printf("T:");
printf("%s", txt);
printf("\n");

}

void
add_insert(double x, double y)
{

printf("[Blk]|");

printf("X:");
printf("%lf", x);
printf("|");

printf("Y:");
printf("%lf", y);
//printf("|");

//printf("N:");
//printf("%s", txt);
// Aca le quiero agregar el nombre del bloque pero no se como todavia.
printf("\n");


y luego esta

Código: [Descargar] [Ocultar] [Seleccionar]
case DWG_TYPE_INSERT:
insert = dwg.object[i].tio.entity->tio.INSERT;
add_insert(insert->ins_pt.x, insert->ins_pt.y);
break;


Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Comunicar Un Movil Con Gambas: Bluetooth Â... jsbsan General 2 Sabado, 14 Julio 2012, 23:37 Ver último mensaje
sebikul
No hay nuevos mensajes Consulta Sobre Componentes Al Migrar Progr... drdr15 Controles/Librerías/Componentes 2 Miercoles, 24 Abril 2013, 19:01 Ver último mensaje
jsbsan
No hay nuevos mensajes Cerrar Gambas Para Abrir Otro Proyecto De ... Shell General 5 Jueves, 21 Septiembre 2017, 19:42 Ver último mensaje
shordi
No hay nuevos mensajes Gambas Book. Manual Online Alemán De Gamb... Shell General 3 Martes, 19 Febrero 2019, 14:29 Ver último mensaje
tincho
 

Publicar nuevo tema  Responder al tema  Página 3 de 5
Ir a la página Anterior  1, 2, 3, 4, 5  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron