Hola a todos.
Debido a varios experimentos para trabajar con archivos dwg, ya hemos logrado extraer la información de lineas(x,y) círculos(x,y,r) y textos(x,y,value) desde un archivo dwg, entonces estamos en el punto adecuado para dibujar estos elementos en un DrawingArea e imprimirlos en un SVG o PDF, me parece que si es vectorial es mejor porque la calidad es mayor y pesan menos los archivos generados.
1) ¿Que es necesario para hacer una clase o módulo que dibuje linea, circulo y texto pasándole los parámetros pertinentes en cada caso?
En el ejemplo (que a su vez esta basado en el ejemplo de jsbsan) podran observar que el programa dibuja algunos elementos, pero hace algo raro, pues debería dibujar 2 lineas y dibuja una sola.
Luego otra cosa rara que hace es que agranda las dimensiones de la imagen, la base se un a4 apaisado y el archivo de salida es mas grande y no se por que hace eso.
2) ¿Una vez dibujado el esquema, como se puede guardar como pdf?
¿El ejemplo lo guarda en svg. Existe una forma de guardar en pdf directamente, sin tener que recurrir a imagemagick por consola?
Pd: Adjunto un ejemplo. por favor echenle una mirada a ver que sugerencias me pueden dar.
saludos.
Drawingarea + Dibuja Por Codigo + Exportar PDF
Objetivo: Drawingarea + Dibuja Por Codigo + Exportar PDF
drawingareatest.zip | ||
Descripción: | Ejemplo de dibujo por codigo | Descargar |
Nombre del archivo: | drawingareatest.zip | |
Tamaño: | 18.51 KB | |
Descargado: | 62 veces |
drawingareatest.zip | ||
Descripción: | Ejemplo de dibujo por codigo | Descargar |
Nombre del archivo: | drawingareatest.zip | |
Tamaño: | 18.51 KB | |
Descargado: | 62 veces |
drawingareatest.zip | ||
Descripción: | Ejemplo de dibujo por codigo | Descargar |
Nombre del archivo: | drawingareatest.zip | |
Tamaño: | 18.51 KB | |
Descargado: | 62 veces |
Objetivo: Re: Drawingarea + Dibuja Por Codigo + Exportar PDF
...usando la propiedad .OutputFile de la Clase Printer .
Exemplum simplex:
Saludos
última edición por vuott el Jueves, 21 Enero 2016, 02:43; editado 1 vez
tincho escribió: [Ver mensaje]
...usando la propiedad .OutputFile de la Clase Printer .
Exemplum simplex:
Public Sub DrawingArea1_Draw()
With Paint
.Brush = Paint.Color(Color.Red)
.MoveTo(200, 200)
.RelLineTo(0, 100)
.Stroke
.DrawText("Texto creado con DrawText", 10, 10, 20, 20)
.Brush = Paint.Color(Color.Blue)
.Ellipse(200, 30, 100, 100)
.Stroke
.End
End With
End
Public Sub Button1_Click()
With Printer1
.Configure
.Orientation = 0
.Paper = 2
.Resolution = Desktop.Resolution
.GrayScale = False
' Crea un archivo .pdf en la carpeta /tmp :
.OutputFile = "/tmp/archivo.pdf"
.Print
End With
End
Public Sub Printer1_Draw()
DrawingArea1_Draw()
End
With Paint
.Brush = Paint.Color(Color.Red)
.MoveTo(200, 200)
.RelLineTo(0, 100)
.Stroke
.DrawText("Texto creado con DrawText", 10, 10, 20, 20)
.Brush = Paint.Color(Color.Blue)
.Ellipse(200, 30, 100, 100)
.Stroke
.End
End With
End
Public Sub Button1_Click()
With Printer1
.Configure
.Orientation = 0
.Paper = 2
.Resolution = Desktop.Resolution
.GrayScale = False
' Crea un archivo .pdf en la carpeta /tmp :
.OutputFile = "/tmp/archivo.pdf"
End With
End
Public Sub Printer1_Draw()
DrawingArea1_Draw()
End
Saludos
última edición por vuott el Jueves, 21 Enero 2016, 02:43; editado 1 vez
Objetivo: Re: Drawingarea + Dibuja Por Codigo + Exportar PDF
Tincho:
He revisado el archivo dwgdata.tsv
Como ves las lineas, tiene las mismas coordenadas invertidas, osea una sale del punto 200.200 y llega al 400, 400, y la otra linea hace justo lo contrario, con lo cual en el dibujo se dibujan una encima de otra, por eso solo ves una linea. Yo he cambiado las coordenadas, y entonces si se ven las dos lineas.
Tincho y Vuot:
Me parece que vuestro trabajo con el tema del libredwg, es muy bueno e interesante.
A ver si podeis ir ampliando el "traductor de dwg" con las siguientes cosas:
- capas
- colores
Y otras entidades:
http://www3.uva.es/dgi-dao/teoria-archivos/b-entidades-5.pdf
Citar:
He revisado el archivo dwgdata.tsv
Line 200 200 400 400 0 0 0 0 0 0 0 0 0 0 0
Text 350 350 0 0 0 0 0 0 texto 400 400 0 0 0 0
Circle 300 300 0 0 200 0 0 0 0 0 0 0 0 0 0
Line 400 400 200 200 0 0 0 0 0 0 0 0 0 0 0
Circle 100 100 0 0 200 0 0 0 0 0 0 0 0 0 0
Text 125 125 0 0 0 0 0 0 texto 400 400 0 0 0 0
Text 350 350 0 0 0 0 0 0 texto 400 400 0 0 0 0
Circle 300 300 0 0 200 0 0 0 0 0 0 0 0 0 0
Line 400 400 200 200 0 0 0 0 0 0 0 0 0 0 0
Circle 100 100 0 0 200 0 0 0 0 0 0 0 0 0 0
Text 125 125 0 0 0 0 0 0 texto 400 400 0 0 0 0
Como ves las lineas, tiene las mismas coordenadas invertidas, osea una sale del punto 200.200 y llega al 400, 400, y la otra linea hace justo lo contrario, con lo cual en el dibujo se dibujan una encima de otra, por eso solo ves una linea. Yo he cambiado las coordenadas, y entonces si se ven las dos lineas.
Tincho y Vuot:
Me parece que vuestro trabajo con el tema del libredwg, es muy bueno e interesante.
A ver si podeis ir ampliando el "traductor de dwg" con las siguientes cosas:
- capas
- colores
Y otras entidades:
http://www3.uva.es/dgi-dao/teoria-archivos/b-entidades-5.pdf
Objetivo: Re: Drawingarea + Dibuja Por Codigo + Exportar PDF
Tienes razón. ya pondré el código que esta mas avanzado. Me refiero a la librería en C y el proyecto (de pruebas) de gambas.
En el zip hay también un .ods con la lógica de los campos de datos extraídos, el orden etc.
Si, creo que además de interesante es necesario, por lo menos, para los que nos dedicamos a la ingeniería. El hecho de poder acceder a la información contenida en archivos dwg (recalco el plural "archivos")
Con el tema de colores y capas (layers en inglés) de momento no logro extraer esa información con la clase load_dwg.c (que adjunto en este post)
Claro , por supuesto que a medida que esto vaya avanzando podremos soportar mas entidades, o por lo menos las que soporte libredwg.
Una pregunta: ¿Como se hace para hacer un "zoom" para ver todo lo que esta dibujado en un DrawingArea?
Saldos
jsbsan escribió: [Ver mensaje]
Tienes razón. ya pondré el código que esta mas avanzado. Me refiero a la librería en C y el proyecto (de pruebas) de gambas.
En el zip hay también un .ods con la lógica de los campos de datos extraídos, el orden etc.
Citar:
Si, creo que además de interesante es necesario, por lo menos, para los que nos dedicamos a la ingeniería. El hecho de poder acceder a la información contenida en archivos dwg (recalco el plural "archivos")
Citar:
Con el tema de colores y capas (layers en inglés) de momento no logro extraer esa información con la clase load_dwg.c (que adjunto en este post)
Citar:
Claro , por supuesto que a medida que esto vaya avanzando podremos soportar mas entidades, o por lo menos las que soporte libredwg.
Una pregunta: ¿Como se hace para hacer un "zoom" para ver todo lo que esta dibujado en un DrawingArea?
Saldos
librerias.zip | ||
Descripción: | Librerías y archivos de ayuda para el desarrollo | Descargar |
Nombre del archivo: | librerias.zip | |
Tamaño: | 34.32 KB | |
Descargado: | 58 veces |
librerias.zip | ||
Descripción: | Librerías y archivos de ayuda para el desarrollo | Descargar |
Nombre del archivo: | librerias.zip | |
Tamaño: | 34.32 KB | |
Descargado: | 58 veces |
librerias.zip | ||
Descripción: | Librerías y archivos de ayuda para el desarrollo | Descargar |
Nombre del archivo: | librerias.zip | |
Tamaño: | 34.32 KB | |
Descargado: | 58 veces |
Objetivo: Re: Drawingarea + Dibuja Por Codigo + Exportar PDF
última edición por jsbsan el Jueves, 21 Enero 2016, 19:28; editado 5 veces
Tincho:
Que yo conozca, no hay un método del drawingArea para ello.
Yo lo haría de la siguiente manera:
- Mientras que dibujo las entidades, compruebo su extensión de lo que estoy dibujano, cogiendo las coordenadas menores y superiores, para ir "acotando" el tamaño de lo que estoy dibujando.
Por ejemplo: tengo un Xmax=0 y un Ymax=0, y un Xmin=0 y Ymin=0 y un tengo que que ir dibujando 10 lineas
Iría comprobando linea por lineas sus coordenadas, y si son mayores que el mayor que tengo, se le asigno a mi mayor (Xmax,Ymax), y si son menores se la asigno al menor (Xmin y Ymin)
Al final obtenemos el tamaño de lo que estamos dibujando.
Saludos
Citar:
Que yo conozca, no hay un método del drawingArea para ello.
Yo lo haría de la siguiente manera:
- Mientras que dibujo las entidades, compruebo su extensión de lo que estoy dibujano, cogiendo las coordenadas menores y superiores, para ir "acotando" el tamaño de lo que estoy dibujando.
Por ejemplo: tengo un Xmax=0 y un Ymax=0, y un Xmin=0 y Ymin=0 y un tengo que que ir dibujando 10 lineas
Iría comprobando linea por lineas sus coordenadas, y si son mayores que el mayor que tengo, se le asigno a mi mayor (Xmax,Ymax), y si son menores se la asigno al menor (Xmin y Ymin)
Al final obtenemos el tamaño de lo que estamos dibujando.
Saludos
última edición por jsbsan el Jueves, 21 Enero 2016, 19:28; editado 5 veces
Objetivo: Re: Drawingarea + Dibuja Por Codigo + Exportar PDF
ok, ya esta lo hice así, pero ahora se complico el ajuste "fit" a la hoja del pdf.
¿Como se le dice printer que ajuste hasta rellenar la hoja? lógicamente cuando es mas grande o reduzca si es mas pequeña.
saludos.
jsbsan escribió: [Ver mensaje]
ok, ya esta lo hice así, pero ahora se complico el ajuste "fit" a la hoja del pdf.
¿Como se le dice printer que ajuste hasta rellenar la hoja? lógicamente cuando es mas grande o reduzca si es mas pequeña.
Public Sub btnPdf_Click()
With Printer1
'.Configure
.Orientation = Printer1.Landscape
.Paper = Printer1.A3
.Resolution = 150 ' DPI
.GrayScale = False
' Crea un archivo .pdf en la carpeta /tmp :
.OutputFile = stPdf '"/tmp/archivo.pdf"
.Print
End With
End
Public Sub Printer1_Draw()
DrawingArea1_Draw()
End
With Printer1
'.Configure
.Orientation = Printer1.Landscape
.Paper = Printer1.A3
.Resolution = 150 ' DPI
.GrayScale = False
' Crea un archivo .pdf en la carpeta /tmp :
.OutputFile = stPdf '"/tmp/archivo.pdf"
End With
End
Public Sub Printer1_Draw()
DrawingArea1_Draw()
End
saludos.
Objetivo: Re: Drawingarea + Dibuja Por Codigo + Exportar PDF
Bueno, ha quedado mas o menos, el programa ya dibuja los elementos y los imprime en pdf. pero no se pueden visualizar adecuadamente.
Parece física cuántica, se donde esta el electrón pero no como es, o se como es pero no donde esta
Por favor si alguien tiene alguna sugerencia, esta sera bienvenida.
También pensé en usar dos DrawingArea, pero no se como hacerlo ya que el método _draw parece no aceptar dos o mas DrawingArea.
Aquí adjunto el código para que si alguien lo desea, pueda estudiarlo.
Parece física cuántica, se donde esta el electrón pero no como es, o se como es pero no donde esta
Por favor si alguien tiene alguna sugerencia, esta sera bienvenida.
También pensé en usar dos DrawingArea, pero no se como hacerlo ya que el método _draw parece no aceptar dos o mas DrawingArea.
Aquí adjunto el código para que si alguien lo desea, pueda estudiarlo.
drawing.zip | ||
Descripción: | Programa para probar el dibujo de elementos extraídos de archivos dwg | Descargar |
Nombre del archivo: | drawing.zip | |
Tamaño: | 15.73 KB | |
Descargado: | 54 veces |
drawing.zip | ||
Descripción: | Programa para probar el dibujo de elementos extraídos de archivos dwg | Descargar |
Nombre del archivo: | drawing.zip | |
Tamaño: | 15.73 KB | |
Descargado: | 54 veces |
drawing.zip | ||
Descripción: | Programa para probar el dibujo de elementos extraídos de archivos dwg | Descargar |
Nombre del archivo: | drawing.zip | |
Tamaño: | 15.73 KB | |
Descargado: | 54 veces |
Página 1 de 1
No puede crear mensajesNo 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
Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.
Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo
Página generada en:: 0.4893s (PHP: -77% SQL: 177%)
Consultas SQL: 48 - Debug off - GZIP Activado