|
Página 3 de 5
|
Autor |
Mensaje |
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
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:
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.
Descripción: |
|
Descargar |
Nombre del archivo: |
libredwg.so.0.0.0.tar.gz |
Tamaño: |
83.92 KB |
Descargado: |
90 veces |
Descripción: |
|
Descargar |
Nombre del archivo: |
libredwg.so.0.0.0.tar.gz |
Tamaño: |
83.92 KB |
Descargado: |
90 veces |
Descripción: |
|
Descargar |
Nombre del archivo: |
libredwg.so.0.0.0.tar.gz |
Tamaño: |
83.92 KB |
Descargado: |
90 veces |
última edición por vuott el Domingo, 17 Enero 2016, 02:38; editado 12 veces
|
#21 Domingo, 17 Enero 2016, 01:15 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
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.
|
#22 Domingo, 17 Enero 2016, 18:31 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
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
|
#23 Domingo, 17 Enero 2016, 20:35 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
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.
|
#24 Domingo, 17 Enero 2016, 23:39 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
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:
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
|
#25 Lunes, 18 Enero 2016, 01:05 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
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.
|
#26 Lunes, 18 Enero 2016, 10:57 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
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
|
#27 Lunes, 18 Enero 2016, 13:12 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Re: LibreDWG En Gambas
vuott escribió: Muy simple, tincho: .......estudiar y aprender el lenguaje C !
Lo sabia , jajaja!!!
|
#28 Lunes, 18 Enero 2016, 15:03 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
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á:
/*****************************************************************************/
/* 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:
Gracias a tincho por sus test de estos codigos.
última edición por vuott el Martes, 19 Enero 2016, 18:09; editado 5 veces
|
#29 Martes, 19 Enero 2016, 17:58 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
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).
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
case DWG_TYPE_INSERT:
insert = dwg.object[i].tio.entity->tio.INSERT;
add_insert(insert->ins_pt.x, insert->ins_pt.y);
break;
Saludos.
|
#30 Martes, 19 Enero 2016, 19:22 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 3 de 5
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
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
|
|
|
|
|