|
Página 1 de 1
|
Drawingarea + Dibuja Por Codigo + Exportar PDF
Autor |
Mensaje |
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Drawingarea + Dibuja Por Codigo + Exportar PDF
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.
Descripción: |
Ejemplo de dibujo por codigo |
Descargar |
Nombre del archivo: |
drawingareatest.zip |
Tamaño: |
18.51 KB |
Descargado: |
60 veces |
Descripción: |
Ejemplo de dibujo por codigo |
Descargar |
Nombre del archivo: |
drawingareatest.zip |
Tamaño: |
18.51 KB |
Descargado: |
60 veces |
Descripción: |
Ejemplo de dibujo por codigo |
Descargar |
Nombre del archivo: |
drawingareatest.zip |
Tamaño: |
18.51 KB |
Descargado: |
60 veces |
|
#1 Miercoles, 20 Enero 2016, 20:58 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Drawingarea + Dibuja Por Codigo + Exportar PDF
¿El ejemplo lo guarda en svg. Existe una forma de guardar en pdf directamente, sin tener que recurrir a imagemagick por consola?
...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
Saludos
última edición por vuott el Jueves, 21 Enero 2016, 02:43; editado 1 vez
|
#2 Jueves, 21 Enero 2016, 02:43 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Drawingarea + Dibuja Por Codigo + Exportar PDF
Tincho:
Citar: 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.
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
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
|
#3 Jueves, 21 Enero 2016, 12:17 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Re: Drawingarea + Dibuja Por Codigo + Exportar PDF
Como ves las lineas, tiene las mismas coordenadas invertidas
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: Me parece que vuestro trabajo con el tema del libredwg, es muy bueno e interesante.
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 archivo s dwg (recalco el plural "archivos")
Citar: A ver si podeis ir ampliando el "traductor de dwg" con las siguientes cosas: - capas - colores
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: otras entidades:
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
Descripción: |
Librerías y archivos de ayuda para el desarrollo |
Descargar |
Nombre del archivo: |
librerias.zip |
Tamaño: |
34.32 KB |
Descargado: |
57 veces |
Descripción: |
Librerías y archivos de ayuda para el desarrollo |
Descargar |
Nombre del archivo: |
librerias.zip |
Tamaño: |
34.32 KB |
Descargado: |
57 veces |
Descripción: |
Librerías y archivos de ayuda para el desarrollo |
Descargar |
Nombre del archivo: |
librerias.zip |
Tamaño: |
34.32 KB |
Descargado: |
57 veces |
|
#4 Jueves, 21 Enero 2016, 16:07 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Drawingarea + Dibuja Por Codigo + Exportar PDF
Tincho:
Citar: ¿Como se hace para hacer un "zoom" para ver todo lo que esta dibujado en un DrawingArea?
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
|
#5 Jueves, 21 Enero 2016, 19:18 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Re: Drawingarea + Dibuja Por Codigo + Exportar PDF
Por ejemplo: tengo un Xmax=0 y un Ymax=0, y un Xmin=0 y Ymin=0...
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
saludos.
|
#6 Jueves, 21 Enero 2016, 23:02 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
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.
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: |
51 veces |
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: |
51 veces |
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: |
51 veces |
|
#7 Domingo, 24 Enero 2016, 16:52 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 0 invitados 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
|
|
|
|
|