Comentarios |
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 [ Domingo, 17 Enero 2016, 18:31 ]
|
|
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
última edición por vuott el Domingo, 17 Enero 2016, 20:41; editado 3 veces
|
vuott [ Domingo, 17 Enero 2016, 20:35 ]
|
|
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 [ Domingo, 17 Enero 2016, 23:39 ]
|
|
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
|
vuott [ Lunes, 18 Enero 2016, 01:05 ]
|
|
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 [ Lunes, 18 Enero 2016, 10:57 ]
|
|
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 [ Lunes, 18 Enero 2016, 13:12 ]
|
|
Re: LibreDWG En Gambas
|
vuott escribió: Muy simple, tincho: .......estudiar y aprender el lenguaje C !
Lo sabia , jajaja!!!
|
tincho [ Lunes, 18 Enero 2016, 15:03 ]
|
|
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
|
vuott [ Martes, 19 Enero 2016, 17:58 ]
|
|
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.
|
tincho [ Martes, 19 Enero 2016, 19:22 ]
|
|
|