Portal    Foro    Buscar    FAQ    Registrarse    Conectarse

Drawingarea + Dibuja Por Codigo + Exportar PDF

Drawingarea + Dibuja Por Codigo + Exportar PDF
Artículo
Responder citando    Descargar mensaje  
Mensaje 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.

drawingareatest.zip
Descripción: Ejemplo de dibujo por codigo 
Descargar
Nombre del archivo: drawingareatest.zip
Tamaño: 18.51 KB
Descargado: 61 veces
drawingareatest.zip
Descripción: Ejemplo de dibujo por codigo 
Descargar
Nombre del archivo: drawingareatest.zip
Tamaño: 18.51 KB
Descargado: 61 veces
drawingareatest.zip
Descripción: Ejemplo de dibujo por codigo 
Descargar
Nombre del archivo: drawingareatest.zip
Tamaño: 18.51 KB
Descargado: 61 veces




 
tincho - Ver perfil del usuario Enviar mensaje privado  
tincho [ Miercoles, 20 Enero 2016, 20:58 ]
 


Drawingarea + Dibuja Por Codigo + Exportar PDF
Comentarios
Responder citando    Descargar mensaje  
Mensaje Re: Drawingarea + Dibuja Por Codigo + Exportar PDF 
 
tincho escribió: [Ver mensaje]
¿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 
vuott - Ver perfil del usuario Enviar mensaje privado  
vuott [ Jueves, 21 Enero 2016, 02:43 ]
Responder citando    Descargar mensaje  
Mensaje 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



 
jsbsan - Ver perfil del usuario Enviar mensaje privado  
jsbsan [ Jueves, 21 Enero 2016, 12:17 ]
Responder citando    Descargar mensaje  
Mensaje Re: Drawingarea + Dibuja Por Codigo + Exportar PDF 
 
jsbsan escribió: [Ver mensaje]
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 archivos 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

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




 
tincho - Ver perfil del usuario Enviar mensaje privado  
tincho [ Jueves, 21 Enero 2016, 16:07 ]
Responder citando    Descargar mensaje  
Mensaje 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 
jsbsan - Ver perfil del usuario Enviar mensaje privado  
jsbsan [ Jueves, 21 Enero 2016, 19:18 ]
Responder citando    Descargar mensaje  
Mensaje Re: Drawingarea + Dibuja Por Codigo + Exportar PDF 
 
jsbsan escribió: [Ver mensaje]
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.



 
tincho - Ver perfil del usuario Enviar mensaje privado  
tincho [ Jueves, 21 Enero 2016, 23:02 ]
Responder citando    Descargar mensaje  
Mensaje 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.

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: 51 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: 51 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: 51 veces




 
tincho - Ver perfil del usuario Enviar mensaje privado  
tincho [ Domingo, 24 Enero 2016, 16:52 ]
Mostrar mensajes anteriores:    
 
Publicar nuevo tema  Responder al tema  Página 1 de 1
 
 

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


 



 

cron