GauchoCAD


Ir a la página 1, 2, 3, 4, 5, 6  Siguiente

Objetivo: GauchoCAD
Despues de varias semanas de desarrollo, me he dado cuenta que debemos plantearnos objetivos mas reales compatibles con nuestras posibildades.
Creo que con un buen CAD comunitario tendremos por logrado el objetivo. Algo sencillo y robusto, con algunas limitaciones pero que nos sirva para dibujar planos, importar archivos DXF y otras tareas de uso diario de cualquier técnico. Un programa que nos de placer usar.

Dibuja:
-lineas, rayos
-circulo, elipse, arcos
-figuras, rectangulo,
-textos

Herramientas:
-mover, copiar, borrar, escalar, estirar
-lee DXF, DWG, SVG
-escribe DXF, SVG, PDF, PS

Limitaciones:
-MultipleTextos o texto multilinea
-Sombreado
-Enganche a intersección, tangente
-SPLineas de mas de 4 puntos

Si alguien quiere tomar alguna tarea, bienvenido.

Desde ya mi agradecimiento a todos los que se dignan a responder mis, a veces tontas, preguntas. En especial al "topo" del codigo Voutt.
Screenshot
captura_de_pantalla_de_2020_06_02_08_02_21
0.0.52 Nuevas herramientas. Interfaz mejorada. de nuevo en GitHub
0.0.38 Vuelto a OpenGL. Soporte multidocumento con workspace.
0.0.28 Mudado a Cairo
0.0.30 Mudando todo a OpenGL luego de comprobar la baja perfomance de Paint en proyectos medianos
0.0.21 Bloques, barras de herramientas desplegables. Salimos de GitHub. Renombrado a CAD
0.0.20 Llamado a clases via comando. Eje Y apunta hacia arriba. Mas entidades.
0.0.14 Nueva version con nombre de cosas similares a los CAD actuales. Tincho la va a subir a Github.
por favor trabajen sobre esta.
0.0.8 Actualizo Load/Save Version4 para mas propiedades de los elementos. Pulido de codigo.
0.0.6 Tincho reparo Load/Save. Se agrega entrada de coordenadas por texto.
0.0.1 Primer alfa

última edición por tercoIDE el Martes, 02 Junio 2020, 12:18; editado 13 veces
Perfil MP  
Objetivo: Re: GambasCAD: Presentacion Del Primer Alfa 0.0.1
Es probable que muchos de ustedes nunca hayan usado un CAD, pero en arquitectura/ingenieria es obligatorio. Yo fui el primer alumno de mi universisdad en presentar planos en CAD y no a mano.
Si lo han hecho, saben que a esto le faltaria:

-Elementos de formas graficas simples: circulo, linea, poligonos, polilinea, texto
-Herramientas: des/agrupar, Rotar, Espejar, Copiar en cuadricula, Imprimir, Propiedades (color, tipo de linea, espesor de linea)
-Ayudas del dibujo: Snap, que es cuando uno se acerca un vertice de una cosa, el mouse se "pega" ahi
Este es el esquema de como se crean y acoplan los nuevos elementos al programa:

captura_de_pantalla_de_2020_04_25_08_50_54

Hagan un elemento y lo añadimos!

última edición por tercoIDE el Domingo, 26 Abril 2020, 02:24; editado 1 vez
Perfil MP  
Objetivo: Re: GambasCAD: Presentacion Del Primer Alfa 0.0.1
Analisis de las clases de elementos. Cada "elemento" es una cosa que se dibuja en el grafico. En realidad se autodibuja.


Public Const DrawingOrder As Integer = 1


Este numero es utilizado por el metodo interno que tiene los arrays de objetos _Compare() y sirve para ver que clase de elemento se dibuja antes que otra. Un numero alto hará que nunca sea tapada.

Public Const PointsTotal As Integer = 2

Este es el total de puntos del elemento. Por ejemplo un triangulo tendrá 3 vértices. A partir de la V0.0.2 se puede dejar en 0 para que el numero de vértices sea determinado por el usuario, por ejemplo una polilinea.

Public Const PointsToDraw As Integer = 1

Esto se usa durante la construcción y establece la mínima cantidad de puntos necesarios para que pueda dibujarse mientras muevo el mouse. Es ignorado una vez construido.

Public Const OrtogonalIgnorado As Boolean = True
Public Const OrtogonalForzado As Boolean = False

Es le indica al constructor clsElementBuilder en que condiciones recibo los puntos. Ortogonal significa que las lineas son verticales u horizontales.
Public Const HelperTrabajo As String = ("Insert a Slab")

Una ayuda al usuario que se escribe en la parte inferior izquierda del area de dibujo
Public Px As New Float[]
Public Pz As New Float[]
Public StringData as String ' nuevo parametro de los elementos

Public Bx As New Float[] ' Backup de los X
Public Bz As New Float[] ' Backup de los Z
Public Psel As New Boolean[] ' selected points


Basicamente son los vertices de mi elemento, en metros. Pero tambien puede ser cualquier parametro que nos sirva. Tambien guardo puntos backup y boolean para ver si los han seleccionado

' For future use in CAD implementation
Public Layer As Integer ' Capa o Layer
Public Block As Integer ' Para tener la posibilidade de juntar cosas en un block
Public _Color As Integer ' Para darle un color distinto al del layer
Public LineType As Integer
Public LineWidth As Integer

Esto se implementara a posteriori para poder abrir DXF de otros CAD


Public PointsDone As Integer = 0 ' La cantidad de puntos que el usuario marco para el elementoo actual, usado durante la construccion.
Public Selected As Boolean ' Determina si ha sido seleccionado para ser modificado por una Herramienta
Public ForDeletion As Boolean = True ' Como hemos visto, a una clase le cuesta inmolarse. Usamos esta Flag para eliminarla en alguna purga.
Public DrawAble As Boolean = False ' esta Flag es chequeada por el metodo .Draw para ver si se va a dibujar. Si la tengo que eliminar, o no tiene suficientes puntos marcados, no vale la pena dibujarla.
Public Finished As Boolean = False ' se coloca en True cuando se llegue a completar la construccion. A veces el usuario se arrepiente en el camino con presionando Esc
Public Group As Integer = 0 ' Pertenecemos a un grupo? Para uso futuro

última edición por tercoIDE el Domingo, 26 Abril 2020, 02:23; editado 1 vez
Perfil MP  
Objetivo: Re: GambasCAD: Presentacion Del Primer Alfa 0.0.1
Espectacular, me alegra disponer de un CAD en gambas seguramente habrá mas personas que se sumen al proyecto.
Respecto a la característica guardar / abrir, deje estar un poco el tema hasta que se "estabilice" el tema de clases, pero lo retomare.
Luego, hay un aspecto que hay que tener en cuenta, que no es menor. Guardar un dibujo en SVG no representa problemas, me parece, ya que creo que se puede guardar el contenido de un DrawingArea como SVG. El trabajo ronda en como nombrar y agrupar los elementos gráficos para que sean susceptibles de volver a convertir en clases que usa GambasCAD.
Saludos.

Perfil MP  
Objetivo: Re: GambasCAD
Felicidades tercoIDE.
Impresionante .

Perfil MP  
Objetivo: Re: GambasCAD
Tincho:

Citar:
El trabajo ronda en como nombrar y agrupar los elementos gráficos para que sean susceptibles de volver a convertir en clases que usa GambasCAD.

Teneis disponible el código fuente de mi programa "pintascreen",

https://github.com/JsbMinino/pintaScreen



Link

Objetivo: Re: GambasCAD
jsbsan escribió:  
Tincho:

Teneis disponible el código fuente de mi programa "pintascreen",



PintaScreen esta en mi HD hace años, muy bueno para explicar codigo. El concepto es similar. Cada entidad en el dibujo es una New Class. En el caso de GambasCAD las entidades tienen mucha libertad de acción y pueden hacer cualquier cosa, hasta podrían moverse como en el ejemplo de donde nació: MuchosCirculos (busquenlo aqui) .

Y las herramientas, tiene mas libertad todavía, pues reciben todos los eventos del mouse y textos; pueden abrir forms, acceder a archivos, todo lo que la imaginacion desee, no solamente Copiar, Escalar, Etc. No se busca un clon de LibreCAD, sino algo mucho mas amplio.

Yo ya tengo dos usos para futuras herramientas:
-una que me genere una render en 3D de N cantidad de pisos segun las losas, vigas y columnas que haya en el grafico, ya lo han visto en un post mio anterior de realidad virtual
-una que me genere un archivo legible por Estru3D, que en definitiva fue lo que motivo a esto
- a Tincho se le ocurrio hacer una herramienta que inspeccione codigo gambas y auto-genere un diagrama como el que les hice en el segundo post de este hilo


Julio, tu "inspector de propiedades" es smililar a lo que pretendo, pero Object.SetProperty no puede ser usado porque en mi caso las clases de entidades tienen variables, no property.

última edición por tercoIDE el Domingo, 26 Abril 2020, 13:32; editado 1 vez
Perfil MP  
Objetivo: Re: GambasCAD
jsbsan escribió:  
...Teneis disponible el código fuente de mi programa "pintascreen",

Descargado, por lo que vi hasta ahora, PintaScreen se parece mas a un CAD que el programa de Terco, que se parece mas a un CAE.
Nota: cuando lo presentaste hace mucho ya, no lo estudie porque en ese momento me pareció muy complejo.
Gracias por el video y por compartir el código.
Saludos.

Perfil MP  
Objetivo: Re: GambasCAD
tercoIDE escribió:  
...PintaScreen esta en mi HD hace años, muy bueno para explicar codigo. El concepto es similar. Cada entidad en el dibujo es una New Class. En el caso de GambasCAD las entidades tienen mucha libertad de acción y pueden hacer cualquier cosa, hasta podrían moverse como en el ejemplo de donde nació: MuchosCirculos (busquenlo aqui).

Esto es interesante en al caso de simulaciones como las de FreeCAD, pero ya nos vamos al 3D.

Citar:

Y las herramientas, tiene mas libertad todavía, pues reciben todos los eventos del mouse y textos; pueden abrir forms, acceder a archivos, todo lo que la imaginacion desee, no solamente Copiar, Escalar, Etc. No se busca un clon de LibreCAD, sino algo mucho mas amplio.

El problema en este punto es que al guardar/recuperar objetos en un archivo en el caso de, por ejemplo, losas vigas etc. estas son entidades muy especificas no son lineas o círculos y ahí esta el inconveniente ya que GambasCAD no se comporta como CAD sino como CAE u otra cosa especifica.

Citar:

Yo ya tengo dos usos para futuras herramientas:
-una que me genere una render en 3D de N cantidad de pisos segun las losas, vigas y columnas que haya en el grafico, ya lo han visto en un post mio anterior de realidad virtual
-una que me genere un archivo legible por Estru3D, que en definitiva fue lo que motivo a esto

Si, esto es espectacular pero especifico para Estru3D, me parece. Ojo no es una critica, pero este programa se sale del molde CAD.

Citar:
- a Tincho se le ocurrio hacer una herramienta que inspeccione codigo gambas y auto-genere un diagrama como el que les hice en el segundo post de este hilo

Si, la parte del listar las clases y los módulos de un proyecto ya la tengo mas o menos lista. Dibujar el esquema dinamicamente en un DrawingArea es lo que no he resuelto todavia.
Citar:

Julio, tu "inspector de propiedades" es smililar a lo que pretendo, pero Object.SetProperty no puede ser usado porque en mi caso las clases de entidades tienen variables, no property.

No se por que se eligen variables o propiedades, tal vez seria interesante que cada uno argumente ventajas e inconvenientes.
Por mi parte estoy haciendo un ejemplo muy muy simple de CAD que por el momento quiero que sea capaz de hacer una linea. Luego lo iremos ampliando pero manteniendo la simpllicidad para aprender a usar estos controles y clases.
Saludos.

Perfil MP  
Objetivo: Re: GambasCAD
Citar:

Esto es interesante en al caso de simulaciones como las de FreeCAD, pero ya nos vamos al 3D.

3D escapa al alcance de GambasCAD, que si prefieren le ponemos GambasCAE , es la primera vez que leo CAE. Pero acabo de ver esto:

https://www.simscale.com/blog/2017/...en-cad-and-cae/

y creo que es mas un CAE, pero me gusta mas como suena CAD

Citar:

El problema en este punto es que al guardar/recuperar objetos en un archivo en el caso de, por ejemplo, losas vigas etc. estas son entidades muy especificas no son lineas o círculos y ahí esta el inconveniente ya que GambasCAD no se comporta como CAD sino como CAE u otra cosa especifica.


la plantilla tipo de cada elemento permite guardar cualquier cosa y no haria falta re codificarla

Citar:
Si, esto es espectacular pero especifico para Estru3D, me parece. Ojo no es una critica, pero este programa se sale del molde CAD.


es que lo dije de entrada, esto no busca ser un clon de LibreCAD

Citar:
Si, la parte del listar las clases y los módulos de un proyecto ya la tengo mas o menos lista. Dibujar el esquema dinamicamente en un DrawingArea es lo que no he resuelto todavia.


tienes que esperar que madure un poco GambasCAD: que haya entidades que dibujen polilineas, flechas, recuadros y texto. Yo te guio cuando llegue el momento.

Citar:
No se por que se eligen variables o propiedades, tal vez seria interesante que cada uno argumente ventajas e inconvenientes.

3 razones:

-porque las propiedades nos llenan de codigo las clases con sus Private Function xxxxx_read() y xxxxx_write
-porque las variables son mas rapidas de acceder en memoria
-porque necesito arrays y las propiedades no pueden serlo

Perfil MP  
Ir a la página 1, 2, 3, 4, 5, 6  Siguiente

Página 1 de 6


  
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

   

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:: 3.9056s (PHP: -97% SQL: 197%)
Consultas SQL: 48 - Debug off - GZIP Activado