https://foro.gambas-es.org/viewtopic.php?f=24&t=7988 ----------------------------------- tercoIDE Sabado, 25 Abril 2020, 04:28 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.[b] Un programa que nos de placer usar.[/b] [b]Dibuja:[/b] -lineas, rayos -circulo, elipse, arcos -figuras, rectangulo, -textos [b]Herramientas:[/b] -mover, copiar, borrar, escalar, estirar -lee DXF, DWG, SVG -escribe DXF, SVG, PDF, PS [b]Limitaciones:[/b] -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 [img]https://foro.gambas-es.org/files/images/2399/captura_de_pantalla_de_2020_06_02_08_02_21.png[/img] 0.0.52 Nuevas herramientas. Interfaz mejorada. de nuevo en GitHub 0.0.38 Vuelto a OpenGL. Soporte multidocumento con workspace. [strike]0.0.28 Mudado a Cairo[/strike] [strike]0.0.30 Mudando todo a OpenGL luego de comprobar la baja perfomance de Paint en proyectos medianos[/strike] 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 ----------------------------------- tercoIDE Sabado, 25 Abril 2020, 12:56 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: [img]https://foro.gambas-es.org/files/images/2399/captura_de_pantalla_de_2020_04_25_08_50_54.png[/img] Hagan un elemento y lo añadimos! ----------------------------------- tercoIDE Sabado, 25 Abril 2020, 14:20 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. [code linenumbers=false syntax=gambas]Public Const DrawingOrder As Integer = 1 [/code] Este numero es utilizado por el metodo interno que tiene los arrays de objetos [color=#0C00FF]_Compare()[/color] y sirve para ver que clase de elemento se dibuja antes que otra. Un numero alto hará que nunca sea tapada. [code linenumbers=false syntax=gambas]Public Const PointsTotal As Integer = 2 [/code] 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. [code linenumbers=false syntax=gambas]Public Const PointsToDraw As Integer = 1 [/code] 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. [code linenumbers=false syntax=gambas]Public Const OrtogonalIgnorado As Boolean = True Public Const OrtogonalForzado As Boolean = False [/code] Es le indica al constructor clsElementBuilder en que condiciones recibo los puntos. Ortogonal significa que las lineas son verticales u horizontales. [code linenumbers=false syntax=gambas] Public Const HelperTrabajo As String = ("Insert a Slab")[/code] Una ayuda al usuario que se escribe en la parte inferior izquierda del area de dibujo [code linenumbers=false syntax=gambas] 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 [/code] 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 [code linenumbers=false syntax=gambas]' 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 [/code] Esto se implementara a posteriori para poder abrir DXF de otros CAD [code linenumbers=false syntax=gambas]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[/code] ----------------------------------- tincho Sabado, 25 Abril 2020, 16:13 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. ----------------------------------- alessandri Domingo, 26 Abril 2020, 03:10 Re: GambasCAD ----------------------------------- Felicidades tercoIDE. Impresionante :mryellow: . ----------------------------------- jsbsan Domingo, 26 Abril 2020, 10:05 Re: GambasCAD ----------------------------------- Tincho: [quote]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.[/quote] Teneis disponible el código fuente de mi programa "pintascreen", https://github.com/JsbMinino/pintaScreen [youtube]9OdzfN9blK0[/youtube] ----------------------------------- tercoIDE Domingo, 26 Abril 2020, 13:03 Re: GambasCAD ----------------------------------- [quote user="jsbsan" post="48062"]Tincho: Teneis disponible el código fuente de mi programa "pintascreen", [/quote] 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. ----------------------------------- tincho Domingo, 26 Abril 2020, 14:24 Re: GambasCAD ----------------------------------- [quote user="jsbsan" post="48062"]...Teneis disponible el código fuente de mi programa "pintascreen", [/quote] 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. ----------------------------------- tincho Domingo, 26 Abril 2020, 14:42 Re: GambasCAD ----------------------------------- [quote user="tercoIDE" post="48064"]...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). [/quote] Esto es interesante en al caso de simulaciones como las de FreeCAD, pero ya nos vamos al 3D. [quote] 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. [/quote] 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. [quote] 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 [/quote] Si, esto es espectacular pero especifico para Estru3D, me parece. Ojo no es una critica, pero este programa se sale del molde CAD. [quote]- 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[/quote] 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. :roll: [quote] 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.[/quote] 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. ----------------------------------- tercoIDE Domingo, 26 Abril 2020, 15:15 Re: GambasCAD ----------------------------------- [quote] Esto es interesante en al caso de simulaciones como las de FreeCAD, pero ya nos vamos al 3D. [/quote] 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/04/difference-between-cad-and-cae/ y creo que es mas un CAE, pero me gusta mas como suena CAD :mrgreen: [quote] 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. [/quote] la plantilla tipo de cada elemento permite guardar cualquier cosa y no haria falta re codificarla [quote]Si, esto es espectacular pero especifico para Estru3D, me parece. Ojo no es una critica, pero este programa se sale del molde CAD. [/quote] es que lo dije de entrada, esto no busca ser un clon de LibreCAD [quote]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. :roll: [/quote] 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. [quote]No se por que se eligen variables o propiedades, tal vez seria interesante que cada uno argumente ventajas e inconvenientes. [/quote] 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 ----------------------------------- tercoIDE Lunes, 27 Abril 2020, 15:08 Re: GambasCAD ----------------------------------- Esto necesito, por si alguno puede hacerlo: que los botones que representen cosas de la misma familia, como todos esos en la carpeta Buildings, esten todos juntos en un solo boton y se desplieguen al clickar. Yo he visto en algunos progrmaas que este tipo de botones delplegables tienen un triangulito en el borde inferior derecho para indicar esto. [img]https://foro.gambas-es.org/files/images/2399/grupo_de_botones.png[/img] ----------------------------------- tincho Lunes, 27 Abril 2020, 15:35 Re: GambasCAD ----------------------------------- [quote user="tercoIDE" post="48092"]Esto necesito, por si alguno puede hacerlo: que los botones que representen cosas de la misma familia, como todos esos en la carpeta Buildings, esten todos juntos en un solo boton y se desplieguen al clickar. Yo he visto en algunos progrmaas que este tipo de botones delplegables tienen un triangulito en el borde inferior derecho para indicar esto. [/quote] El control se llama MenuButton que es, por ejemplo, el de abrir proyecto en el IDE de Gambas3. Justo estoy tratando de implementar este control en el ejemplo del otro [url=https://foro.gambas-es.org/viewtopic.php?f=5&t=7995]hilo uno para para seleccionar tipos de linea otro para los Layers. En cuando lo tenga preparo también el menú para GambasCAD. Saludos. ----------------------------------- tercoIDE Lunes, 27 Abril 2020, 15:48 Re: GambasCAD ----------------------------------- [quote user="tincho" post="48093"] El control se llama MenuButton que es, por ejemplo, el de abrir proyecto en el IDE de Gambas3. Justo estoy tratando de implementar este control en el ejemplo del otro [url=https://foro.gambas-es.org/viewtopic.php?f=5&t=7995]hilo uno para para seleccionar tipos de linea otro para los Layers. En cuando lo tenga preparo también el menú para GambasCAD. Saludos.[/quote] Genial. Fijate que hice un diagrama de flujo, agregado en el primer post, de como trabaja GambasCADE (nuevo nombre) que te podria servir. ----------------------------------- tincho Lunes, 27 Abril 2020, 18:03 Re: GambasCADE ----------------------------------- TercoIde: Agregue un MenuButton con las herramientas Copiar, mover etc. Me ayudo un [url=https://foro.gambas-es.org/viewtopic.php?f=1&t=5290]post en el que vuott puso un ejemplo muy didáctico. Use una colección para agrupar todo (echale un vistazo pues se puede ahorrar mucho código y queda mas prolijo) Luego me permito hacer algunas sugerencias, que son eso, sugerencias. La interface es mejorable, el contenedor es Arrange = None :shock: Los iconos pueden ser SVG en vez de PNG, lo cual ahorra espacio y ademas permite mas flexibilidad y facilidad de modificación. Como nota final, te digo que no me convence del todo que las herramientas de edicion esten en un menubutton, mis años de experiencia me han hecho renegar de los programas que tenían estas modalidades. Para introducir "comandos", a mi parecer, lo mas practico es hacerlo por texto, al estilo autogarcha o por icono al estilo microcadorcha. Saludos. ----------------------------------- tercoIDE Martes, 28 Abril 2020, 13:04 Re: GambasCADE ----------------------------------- [quote user="tincho" post="48103"]TercoIde: Agregue un MenuButton con las herramientas Copiar, mover etc. [/quote] No me gustan los menus. Los odio con toda mi alma. Por eso al interfaz es limpia. Yo decia otra cosa, un boton igual a los que estan, que despliegue otros botones. Tal vez haya que hacer un control propio. Buscamos algo asi: [img]https://foro.gambas-es.org/files/images/2399/captura_de_pantalla_de_2020_04_28_08_55_24.png[/img] [quote]La interface es mejorable, el contenedor es Arrange = None :shock: [/quote] No tienen contenedores, solo se agranda el dibujo. Pero son necesarios. Do it! [quote]Los iconos pueden ser SVG en vez de PNG, lo cual ahorra espacio y ademas permite mas flexibilidad y facilidad de modificación.[/quote] Nunca use SVG, pero pasalos a SVG si queres. [quote]Como nota final, te digo que no me convence del todo que las herramientas de edicion esten en un menubutton, mis años de experiencia me han hecho renegar de los programas que tenían estas modalidades. [/quote] Las de edicion no, pero los elementos van a tener que agruparse por una cuestion de espacio. [quote]Para introducir "comandos", a mi parecer, lo mas practico es hacerlo por texto, al estilo autogarcha o por icono al estilo microcadorcha.[/quote]de acuerdo en esto, es por texto o por icono si estan disponibles o "a la vista". Me estoy ocupando del tema, pero todavia no entiendo el uso de una Collection . La coleccion puede guardar objetos de cualquier Class? como clases estaticas y/ creatables. Me gustaria si es que se puede lograr, una Sub que al principio lea en runtime todas las clases de Gambas, y se fije en las que tienen una constante llamada "gender" que se usa en todos los elementos y herramientas: [code linenumbers=false syntax=gambas]' Gambas class file ' Represents a simple acotation ' Element maintained by Terco ' V2 Public gender As String = ("Cota") [/code] En base a esto armar una collection [clsCota , "Cota"] entonces cuando alguien escribe un comnando, se busca el texto (que es traducible) en la lista y se establece el trabajo activo clsJob a esta clase por codigo y no por buttonCLick. [code linenumbers=false syntax=gambas] Dim nuevo = New Objeto_de_la_Coleccion_elegido clsJob = clsElementBuilder ' le digo que vamos a construir un nuevo elemento clsElementBuilder.Start(nuevo) ' le paso el elemento a construir y le digo que comience a recibir clicks[/code] ----------------------------------- v3ctor Martes, 28 Abril 2020, 14:06 Re: GambasCADE ----------------------------------- terco y tincho, les voy hacer un aporte, con visorrv1960 he aprendido ciertas cosas una de ellas la separación de ventanas o funciones, no es correcto tener el área de trabajo en un tabStrip mejor seria en un [b]tabpanel[/b], y [b]las herramientas deben ir en otro lugar, tal vez un formulario que se cargue en un panel[/b], pues después con el tiempo se va llenado de herramientas y no habrá lugar, pero si se hace a parte desde un principio en un formulario todo sera mas fácil el diseño grafico con un tabstrip no es correcto ToolBox: [img]https://foro.gambas-es.org/files/images/2261/toolbox.png[/img] ----------------------------------- v3ctor Martes, 28 Abril 2020, 14:21 Re: GambasCADE ----------------------------------- [quote user="tercoIDE" post="48129"][quote user="tincho" post="48103"]TercoIde: Agregue un MenuButton con las herramientas Copiar, mover etc. [/quote] No me gustan los menus. Los odio con toda mi alma. Por eso al interfaz es limpia. Yo decia otra cosa, un boton igual a los que estan, que despliegue otros botones. Tal vez haya que hacer un control propio. Buscamos algo asi: [img]https://foro.gambas-es.org/files/images/2399/captura_de_pantalla_de_2020_04_28_08_55_24.png[/img] [/code][/quote] cada botón debe pertenecer a un grupo asi que a cada herramienta hay que asignarle su grupo, esto quiere decir que cada clase debe tener una propiedad grupo eso iría en la clase padre. no veo una clase padre de las clases de dibujo, hay que hacer una, para tener propiedades o funciones comunes a todas, una de ellas sera su grupo. por ejemplo grupo, construcción o estructuras, grupo geometría, grupo red, grupo, plomeria, grupo, electricidad etc ----------------------------------- tercoIDE Martes, 28 Abril 2020, 14:39 Re: GambasCADE ----------------------------------- [quote user="v3ctor" post="48134"][quote user="tercoIDE" post="48129"][quote user="tincho" post="48103"]TercoIde: Agregue un MenuButton con las herramientas Copiar, mover etc. [/quote] No me gustan los menus. Los odio con toda mi alma. Por eso al interfaz es limpia. Yo decia otra cosa, un boton igual a los que estan, que despliegue otros botones. Tal vez haya que hacer un control propio. Buscamos algo asi: [img]https://foro.gambas-es.org/files/images/2399/captura_de_pantalla_de_2020_04_28_08_55_24.png[/img] [/code][/quote] cada botón debe pertenecer a un grupo asi que a cada herramienta hay que asignarle su grupo, esto quiere decir que cada clase debe tener una propiedad grupo eso iría en la clase padre. no veo una clase padre de las clases de dibujo, hay que hacer una, para tener propiedades o funciones comunes a todas, una de ellas sera su grupo. por ejemplo grupo, construcción o estructuras, grupo geometría, grupo red, grupo, plomeria, grupo, electricidad etc[/quote] No hace falta, ya esta hecho "per se" , la sub-carpeta donde esta el elemento es el Grupo. Si alguno sabe controles bien, estaria bueno tener eso que puse. Y que ademas pueda "Detacharse" de la barra de botones para uso constante si hace falta y que quede suelto por ahi, como en PintaScreen. ----------------------------------- tercoIDE Martes, 28 Abril 2020, 14:46 Re: GambasCADE ----------------------------------- [quote user="v3ctor" post="48133"]terco y tincho, les voy hacer un aporte, con visorrv1960 he aprendido ciertas cosas una de ellas la separación de ventanas o funciones, no es correcto tener el área de trabajo en un tabStrip mejor seria en un [b]tabpanel[/b], y [b]las herramientas deben ir en otro lugar, tal vez un formulario que se cargue en un panel[/b], pues después con el tiempo se va llenado de herramientas y no habrá lugar, pero si se hace a parte desde un principio en un formulario todo sera mas fácil el diseño grafico con un tabstrip no es correcto ToolBox: [img]https://foro.gambas-es.org/files/images/2261/toolbox.png[/img][/quote] No estoy en contra de eso, pero debe mantenerse la simpleza ante todo. Que sea bien claro lo que se puede hacer. Quien no se ha bajado Blender tan solo para sentirse perdido con su interfaz, miles de botones y menus...?? ----------------------------------- tincho Martes, 28 Abril 2020, 15:41 Re: GambasCADE ----------------------------------- [quote user="tercoIDE" post="48129"]Las de edicion no, pero los elementos van a tener que agruparse por una cuestion de espacio.[/quote] Ok, si de acuerdo agrupar es fundamental, Mirate el ejemplo del otro hilo, que si te parece lo tomamos como una especie de laboratorio, y luego, una vez que entendamos el proceso gráfico (lo digo por mi) lo abandonamos. En el ejemplo hice un esbozo de un menu de iconos con grupos (solo hay un grupo de momento) se oculta o muestra al estilo autocad. [quote] [quote]Para introducir "comandos", a mi parecer, lo mas practico es hacerlo por texto, al estilo autogarcha o por icono al estilo microcadorcha.[/quote]de acuerdo en esto, es por texto o por icono si estan disponibles o "a la vista". Me estoy ocupando del tema, pero todavia no entiendo el uso de una Collection. La coleccion puede guardar objetos de cualquier Class? como clases estaticas y/ creatables.[/quote] Las colecciones pueden guardar cualquier objeto, recorda que una clase no es un objeto sino un molde. Fijate el ejemplo del otro hilo que ahí uso collection para todo. [quote]Me gustaria si es que se puede lograr, una Sub que al principio lea en runtime todas las clases de Gambas, y se fije en las que tienen una constante llamada "gender" que se usa en todos los elementos y herramientas: [code linenumbers=false syntax=gambas]' Gambas class file ' Represents a simple acotation ' Element maintained by Terco ' V2 Public gender As String = ("Cota") [/code] [/quote] A priori me parece que se puede hacer, lo investigo y te digo algo. [quote]En base a esto armar una collection [clsCota , "Cota"] entonces cuando alguien escribe un comnando, se busca el texto (que es traducible) en la lista y se establece el trabajo activo clsJob a esta clase por codigo y no por buttonCLick. [code linenumbers=false syntax=gambas] Dim nuevo = New Objeto_de_la_Coleccion_elegido clsJob = clsElementBuilder ' le digo que vamos a construir un nuevo elemento clsElementBuilder.Start(nuevo) ' le paso el elemento a construir y le digo que comience a recibir clicks [/code] [/quote] Lo miramos en un ejemplo si te parece, pero desde ya te digo que las colecciones son muy útiles. No me quiero adelantar pero una vez que tengamos ordenado el tema. me gustaria empezar a investigar otro aspecto que es el de trasmitir las ordenes y recuperar datos con RCP Json. pero eso es para bastante mas adelante. jeje Saludos. ----------------------------------- tincho Martes, 28 Abril 2020, 15:45 Re: GambasCADE ----------------------------------- [quote user="v3ctor" post="48133"]...el diseño grafico con un tabstrip no es correcto...[/quote] Estoy de acuerdo vector, yo de hecho no uso TabStrips para nada, solo TabPanel, y desde hace un tiempo uso mucho Workspaces en los que podes embeber un formulario completo. Estoy trabajando en la interface (de GambasCADE) para lograr una mejor fluidez de trabajo. Saludos. ----------------------------------- tercoIDE Martes, 28 Abril 2020, 16:31 Re: GambasCADE ----------------------------------- [quote user="tincho" post="48138"] No me quiero adelantar pero una vez que tengamos ordenado el tema. me gustaria empezar a investigar otro aspecto que es el de trasmitir las ordenes y recuperar datos con RCP Json. pero eso es para bastante mas adelante. jeje Saludos.[/quote] Anoche estaba pensando en como podían comunicarse lo elementos entre si: Si tengo una Bateria conectada con un Cable a una Lampara, cual seria el protocolo de comunicación? Yo pense que los elementos tengan una colección de cosas que reciben, modifican y transmiten. Por ejemplo un Interruptor, recibe electricidad, y si esta On, transmite electricidad. Un cable recibe y transmite todo el tiempo. Estamos adelentandonos, pero las clases de elementos tienen que estar bien formadas desde ahora. ----------------------------------- tincho Martes, 28 Abril 2020, 18:18 Re: GambasCADE ----------------------------------- Terco: fijate la nueva interface y me decís que te parece. Saludos. ----------------------------------- tercoIDE Martes, 28 Abril 2020, 20:37 Re: GambasCADE ----------------------------------- [quote user="v3ctor" post="48133"] [img]https://foro.gambas-es.org/files/images/2261/toolbox.png[/img][/quote] Me gusta esa ventana detachable. Es una form? hacela para grupos de entidades de la misma familia. Deberia aparecer y desaparecer cuando el user presione el boton comunitario. ----------------------------------- tincho Martes, 28 Abril 2020, 21:41 Re: GambasCADE ----------------------------------- El proyecto ya se encuentra en Github https://github.com/belmotek/GambasCADE Saludos. ----------------------------------- tincho Martes, 28 Abril 2020, 21:50 Re: GambasCADE ----------------------------------- Terco, respecto a los iconos de png y de 48x48 ¿Es posible conseguirlos SVG? Saludos. ----------------------------------- tercoIDE Martes, 28 Abril 2020, 22:19 Re: GambasCADE ----------------------------------- [quote user="tincho" post="48160"]Terco, respecto a los iconos de png y de 48x48 ¿Es posible conseguirlos SVG? Saludos.[/quote] Esta hermosa asiatica los hizo, son libres pero hay que mencionarla. Yo baje en PNG, pero se puede bajar en SVG https://www.flaticon.com/authors/trinh-ho ----------------------------------- tincho Miercoles, 29 Abril 2020, 16:36 Re: GambasCADE ----------------------------------- 123 probando .... la linterna funciona. Terco, el código de linterna funciona perfectamente. [img]https://foro.gambas-es.org/files/images/2590/captura_de_pantalla_2020_04_29_17_35_09.png[/img] Saludos. ----------------------------------- tincho Miercoles, 29 Abril 2020, 16:58 Re: GambasCADE ----------------------------------- Terco y Vector: Les explico donde y como poner mas botones y herramientas en la interface que hice (FCAD.form). Aprovechado la clase Lantern que me envio Terco explico como la agregue, de cara a los menúes. LANTERN - agregando un nuevo tipo de entidad inteligente, que como saben son column, slab, beam, wallcolumn. Todas esta son del grupo etru3d Pasos a seguir: [list] [*] En FCAD.form tomar un ToolButton libre y poner en el TAG el nombre de la entidad, en este caso [b]lantern[/b]. [*] Agregar la linea en [b]ToolsLoad()[/b] [code linenumbers=false syntax=gambas] x.Add(["lantern", pic, ClsLantern, ("Testing compatibility")], "lantern") [/code] [*] Agregar el archivo [b]svg/lantern.svg[/b] [*] Agregar en el evento [b]estru3d_Click()[/b] [code linenumbers=false syntax=gambas] Case "lantern" ent = New ClsLantern [/code] [/list] Para agregar otras herramientas de otros grupos: Agregando herramientas de entidades simples como line, circle etc. [list] [*] En FCAD.form tomar un ToolButton libre y poner en el TAG el nombre de la entidad, en este caso [b]lantern[/b]. [*] Agregar la linea en [b]ToolsLoad()[/b] [code linenumbers=false syntax=gambas] x.Add(["polyline", pic, ClsPolyline, ("Polilínea")], "polyline") [/code] [*] Agregar el archivo [b]svg/polyline.svg[/b] [*] Agregar en el evento [b]menuapp_Click()[/b] Nota: El código no esta definido todavía para elementos simples. [/list] Agregando herramientas de modificación copy, move etc. Es todo igual pero en el evento [b]menumodify_Click()[/b] Pero acá todavía no esta definido el código. Saludos. ----------------------------------- v3ctor Miercoles, 29 Abril 2020, 18:13 Re: GambasCADE ----------------------------------- hay que añadir los componentes gb.settings y gb.desktop saludos ----------------------------------- tercoIDE Miercoles, 29 Abril 2020, 18:29 Re: GambasCADE ----------------------------------- [quote user="v3ctor" post="48182"]hay que añadir los componentes gb.settings y gb.desktop saludos[/quote] yo uso la gb.settings en estru3D , es muy util y facil de usar la gb.desktop no la conozco , agreguen ambas si lo creen necesario ----------------------------------- tincho Miercoles, 29 Abril 2020, 18:38 Re: GambasCADE ----------------------------------- [quote user="v3ctor" post="48182"]hay que añadir los componentes gb.settings y gb.desktop saludos[/quote] gb.desktop ya esta en el proyecto. gb.settings no creo que lo usemos de momento. Saludos. ----------------------------------- tercoIDE Miercoles, 29 Abril 2020, 21:13 Re: GambasCADE ----------------------------------- [quote user="tincho" post="48185"] gb.settings no creo que lo usemos de momento. .[/quote] para mi es re practica, deberian usarla ----------------------------------- v3ctor Miercoles, 29 Abril 2020, 22:15 Re: GambasCADE ----------------------------------- [quote user="tercoIDE" post="48196"][quote user="tincho" post="48185"] gb.settings no creo que lo usemos de momento. .[/quote] para mi es re practica, deberían usarla[/quote] todo programa que necesite recordar datos necesita gb.settigns, yo diría que es el componente básico que necesita toda aplicación. como vamos a guardar las elecciones del usuario de gambasCAD sin gb.settings? ----------------------------------- v3ctor Miercoles, 29 Abril 2020, 22:27 Re: GambasCADE ----------------------------------- [quote user="tercoIDE" post="48155"][quote user="v3ctor" post="48133"] [img]https://foro.gambas-es.org/files/images/2261/toolbox.png[/img][/quote] Me gusta esa ventana detachable. Es una form? hacela para grupos de entidades de la misma familia. Deberia aparecer y desaparecer cuando el user presione el boton comunitario.[/quote] es un formulario si, el cual se puede cargar en cualquier lado, panel, tabpanel, workspace etc, es muy practico e ideal para cuando las cosas se vuelvan mas complejas y allá mas cantidad de herramientas. ----------------------------------- tercoIDE Jueves, 30 Abril 2020, 10:38 Re: GambasCADE ----------------------------------- [quote user="v3ctor" post="48198"][quote user="tercoIDE" post="48155"][quote user="v3ctor" post="48133"] [img]https://foro.gambas-es.org/files/images/2261/toolbox.png[/img][/quote] Me gusta esa ventana detachable. Es una form? hacela para grupos de entidades de la misma familia. Deberia aparecer y desaparecer cuando el user presione el boton comunitario.[/quote] es un formulario si, el cual se puede cargar en cualquier lado, panel, tabpanel, workspace etc, es muy practico e ideal para cuando las cosas se vuelvan mas complejas y allá mas cantidad de herramientas.[/quote] para que puedas avanzar tenemos que entregarte mas entidades, ten un poco de paciencia, estamos en eso ----------------------------------- tincho Jueves, 30 Abril 2020, 17:35 Re: GambasCADE ----------------------------------- [quote user="tercoIDE" post="48196"][quote user="tincho" post="48185"] gb.settings no creo que lo usemos de momento. .[/quote] para mi es re practica, deberian usarla[/quote] Si , yo antes usaba gb.settings para todo es fácil la verdad, pero me sacaba de quicio que si algo era "" o cero o nulo lo quitaba del archivo. la verdad es un control para cosas sencillitas no para algo potente. Llevo usando varios años XML para la configuración y otras cosas mas complejas y no hay nada mejor. Lo siento, GambasCAD no usara settings ya me lo van a agradecer. jeje. Saludos. ----------------------------------- jguardon Jueves, 30 Abril 2020, 18:15 Re: GambasCADE ----------------------------------- Y [b]gb.logging[/b] para crear logs de todo lo que sucede en el programa, muy útil para depurar errores en base a las acciones del usuario de un modo no intrusivo. Saludos ----------------------------------- tincho Jueves, 30 Abril 2020, 19:24 Re: GambasCADE ----------------------------------- [quote user="jguardon" post="48218"]Y [b]gb.logging[/b] para crear logs de todo lo que sucede en el programa, muy útil para depurar errores en base a las acciones del usuario de un modo no intrusivo. Saludos[/quote] Si eso planeo usarlo aquí también, en mis programas lo uso para registrar incidencias y luego poder analizar que sucedió. ademas tiene varios "niveles" de registro, error, información etc. Si señor muy útil este control. Pero a no confundirse que no es para manejar configuraciones ni registrar preferencias en el comportamiento del programa. Saludos. ----------------------------------- tercoIDE Sabado, 02 May 2020, 12:49 Re: GambasCADE ----------------------------------- Pedido: Necesitamos la siguiente mejora en la clase Load/Save: [b]-que guarde String[] [/b] hasta ahora las entidades tienen este parametro [code linenumbers=false syntax=gambas]Public StringData As String ' pero necesitamos pasar esto a Public StringData As String[] [/code] [b]-Que maneje mejor los caracteres especiales:[/b] intente escribir un texto: "GambasCAD&E" , -----> Save y cuando use Load: se transformo en "GambasCAD&E" ----------------------------------- tincho Sabado, 02 May 2020, 15:37 Re: GambasCADE ----------------------------------- [quote user="tercoIDE" post="48260"]Pedido: Necesitamos la siguiente mejora en la clase Load/Save: [b]-que guarde String[] [/b] hasta ahora las entidades tienen este parametro [code linenumbers=false syntax=gambas]Public StringData As String ' pero necesitamos pasar esto a Public StringData As String[] [/code] [b]-Que maneje mejor los caracteres especiales:[/b] intente escribir un texto: "GambasCAD&E" , -----> Save y cuando use Load: se transformo en "GambasCAD&E"[/quote] Ok, lo miro. Saludos. ----------------------------------- tercoIDE Martes, 05 May 2020, 02:37 Re: GambasCADE ----------------------------------- actualizo objetivos, info en la 1er pagina ----------------------------------- tincho Martes, 05 May 2020, 13:09 Re: GambasCAD ----------------------------------- Terco: Fijate esta función que lista las clases (todas, no solo las cargadas). [code linenumbers=false syntax=gambas] 'Listing all the classes For Each f In RDir("./.src", "*.class") Select String.Mid(File.Name(f), 1, 3) Case "cad", "cae" cad.Add(String.UCase(String.Mid(File.BaseName(f), 4))) End Select Next [/code] Ahora esta función la estoy usando en [b]cadAlias.class[/b] para listar las clases (herramientas cad y cade). Pero tal vez se puede poner en una clase estática por ejemplo [b]init.class[/b] por ejemplo y luego accediendo a esta clase se puede saber que herramientas hay disponibles. Luego decime que decidís hacer. Saludos. ----------------------------------- tercoIDE Martes, 05 May 2020, 13:18 Re: GambasCAD ----------------------------------- [quote user="tincho" post="48322"]Terco: Fijate esta función que lista las clases (todas, no solo las cargadas). [code linenumbers=false syntax=gambas] 'Listing all the classes For Each f In RDir("./.src", "*.class") Select String.Mid(File.Name(f), 1, 3) Case "cad", "cae" cad.Add(String.UCase(String.Mid(File.BaseName(f), 4))) End Select Next [/code] Ahora esta función la estoy usando en [b]cadAlias.class[/b] para listar las clases (herramientas cad y cade). Pero tal vez se puede poner en una clase estática por ejemplo [b]init.class[/b] por ejemplo y luego accediendo a esta clase se puede saber que herramientas hay disponibles. Luego decime que decidís hacer. Saludos.[/quote] eso esta MUY bueno, pero ... funcionara luego de armar el ejecutable .gambas ? ----------------------------------- tincho Martes, 05 May 2020, 13:38 Re: GambasCAD ----------------------------------- [quote user="tercoIDE" post="48323"]...eso esta MUY bueno, pero ... funcionara luego de armar el ejecutable .gambas ?[/quote] Tengo que encontrar una función que hice una vez que indicaba si el programa corría de en un IDE o un .gambas pero supongamos el peor de los escenarios, que funciona solo en el entorno IDE, en este caso la clase listaría cero items en ese caso la lista se carga de un archivo tools.txt. y en caso que funcione (en el ide ) la clase crea el archivo tools.txt Al final sea como sea la lista estará disponible. Saludos. ----------------------------------- tincho Martes, 05 May 2020, 20:45 Re: GambasCAD ----------------------------------- Terco: estoy con los formularios secundarios: Alias Layers ¿Cuales mas hacen falta? El caso es que trabajarían mas o menos todos igual. estoy trabajando con Alias que es el mas sencillo y no termina de funcionar. Así que hice el código en un proyectito de pruebas y allí si que funciona correctamente, la única diferencia es que el proyecto de pruebas la clase [b]cadAlias[/b] no hereda de [b]ToolsBase[/b] Dejo el código aquí para que lo veas a ver si te ocurre por que puede no funcionar. Saludos. ----------------------------------- tercoIDE Martes, 05 May 2020, 22:25 Re: GambasCAD ----------------------------------- [quote user="tincho" post="48337"]Terco: estoy con los formularios secundarios: Alias Layers ¿Cuales mas hacen falta? El caso es que trabajarían mas o menos todos igual. estoy trabajando con Alias que es el mas sencillo y no termina de funcionar. Así que hice el código en un proyectito de pruebas y allí si que funciona correctamente, la única diferencia es que el proyecto de pruebas la clase [b]cadAlias[/b] no hereda de [b]ToolsBase[/b] Dejo el código aquí para que lo veas a ver si te ocurre por que puede no funcionar. Saludos.[/quote] heredando Toolsbase funciona de una ----------------------------------- tercoIDE Jueves, 07 May 2020, 22:10 Re: GambasCADE ----------------------------------- Despues de lograr importar archivos DXF tuve la posibilidad de abrir un plano mediano y comprobé que la perfomance de Paint no alcanza para lograr el objetivo. Investigando un poco de la clase Cairo, vi que es mejor, pero no tiene actividad desde el 2017 lo que me da mala espina. Entonces tendremos que ir a la poco intuitiva OpenGL donde podre reciclar algunas cosas del Estru3D. Esto va a demorar la producción un poco. ----------------------------------- tercoIDE Viernes, 08 May 2020, 03:45 Re: GambasCADE ----------------------------------- [quote user="tercoIDE" post="48382"] Esto va a demorar la producción un poco.[/quote] me contesto solo como los locos: eso es justamente lo que no quiero asi que OpenGL no puede ser la alternativa... ----------------------------------- tincho Viernes, 08 May 2020, 10:57 Re: GambasCADE ----------------------------------- [quote user="tercoIDE" post="48384"][quote user="tercoIDE" post="48382"] Esto va a demorar la producción un poco.[/quote] me contesto solo como los locos: eso es justamente lo que no quiero asi que OpenGL no puede ser la alternativa...[/quote] y opencascade? ya se que no hay componente, pero un componente es algo como las clases de C que se implementan en gambas no? Vuott que dices? :roll: Saludos. ----------------------------------- tercoIDE Viernes, 08 May 2020, 12:04 Re: GambasCADE ----------------------------------- no conoczco OpenCAsCADE, pero se que existe Sea cual fuere el renderer o sea el componente que dibuja, tenemos que cambiar parte del esquema, porque siendo el cuello de botella el recorido [code linenumbers=false syntax=gambas] For Each entidad Entidad.Draw Next [/code] cambiar el renderer no solucionara el problema, habra que usar un acumulador de dibujos que es lo habitual en aceleracion por harware, suponiendo que la entidad dibuje lineas: [Etapa de generacion del dibujo] Entidad.Draw --> Acumulador de lineas (No dibuja directo a la pantalla ) [Etapa de dibujo] Paint/Cairo/OpenGL ----> Dibuja lineas acumuladas Estru3D funciona asi y es bastante rapido, excepto los textos donde se traba un poco ----------------------------------- jguardon Miercoles, 13 May 2020, 17:46 Re: GambasCAD ----------------------------------- Se me ocurre que utilices objetos en memoria, como Image o similar y justo después lo vuelques al control visual. Es decir, un buffer intermedio que es lo que se usa generalmente para dibujar en otros lenguajes y para que no haya parpadeos en la superficie de dibujo. Aunque supongo que ya lo habrás tenido en cuenta, me ha venido a la mente al leerte. Saludos ----------------------------------- tercoIDE Miercoles, 13 May 2020, 18:14 Re: GambasCAD ----------------------------------- [quote user="jguardon" post="48475"]Se me ocurre que utilices objetos en memoria, como Image o similar y justo después lo vuelques al control visual. Es decir, un buffer intermedio que es lo que se usa generalmente para dibujar en otros lenguajes y para que no haya parpadeos en la superficie de dibujo. Aunque supongo que ya lo habrás tenido en cuenta, me ha venido a la mente al leerte. Saludos[/quote] si señor, asi es como funciona ahora hay un buffer intermedio que se redibuja cuando hay tiempo iddle o cuando no hay otra opcion como ser al cargar un archivo nuevo ----------------------------------- tercoIDE Miercoles, 20 May 2020, 18:55 Re: GambasCAD ----------------------------------- [quote user="tercoIDE" post="48476"][quote user="jguardon" post="48475"]Se me ocurre que utilices objetos en memoria, como Image o similar y justo después lo vuelques al control visual. Es decir, un buffer intermedio que es lo que se usa generalmente para dibujar en otros lenguajes y para que no haya parpadeos en la superficie de dibujo. Aunque supongo que ya lo habrás tenido en cuenta, me ha venido a la mente al leerte. Saludos[/quote] si señor, asi es como funciona ahora hay un buffer intermedio que se redibuja cuando hay tiempo iddle o cuando no hay otra opcion como ser al cargar un archivo nuevo[/quote] bueno, como no pudimos solucionar el tema del lag y la velocidad de actualizacion de imagen, no nos quedo otra que volver a OpenGL y luego de mucho esfuerzo estamos en una etapa en la que iremos mas rapidamente. El pantallazo esta en el primer post!!! ----------------------------------- tercoIDE Martes, 02 Junio 2020, 12:20 Re: GauchoCAD ----------------------------------- Interfaz mejorada. Herramientas nuevas. ----------------------------------- tincho Lunes, 08 Junio 2020, 21:11 Re: GauchoCAD ----------------------------------- Alguien, ademas de Terco, ha probado GauchoCAD? hay algun feedback? Saludos. ----------------------------------- jsbsan Martes, 09 Junio 2020, 12:57 Re: GauchoCAD ----------------------------------- Tincho: Yo me lo he instalado, pero me pierdo un poco (estoy acostumbrado a Autocad).. ¿podiais subir algun video explicando un ejemplo de uso? Nota: Seria interesante que el propio programa tuviera ejemplos incluidos, para con solo un vistaso a ellos, se pueda ver las capacidades del programa (he visto la presentación que teneis en github y es muy chulo el ejemplo mostrado). Extra: Herramientas como cortar/alargar lineas/arcos serian interesantes añadirlas... ----------------------------------- tincho Martes, 09 Junio 2020, 19:30 Re: GauchoCAD ----------------------------------- [quote user="jsbsan" post="48778"]Tincho: Yo me lo he instalado, pero me pierdo un poco (estoy acostumbrado a Autocad).. ¿podíais subir algún video explicando un ejemplo de uso? Uso? estamos en pre alpha no es posible el uso todavía. por eso pedimos colaboración para que nos ayuden con ciertas cosas y acelerar el trabajo. Nota: Seria interesante que el propio programa tuviera ejemplos incluidos, para con solo un vistazo a ellos, se pueda ver las capacidades del programa (he visto la presentación que tenéis en github y es muy chulo el ejemplo mostrado).[/quote] Por supuesto, pero de momento eso sera para mas adelante ya que hay otras prioridades y como dije antes, tenemos pocos recursos para afrontar la carga de trabajo (somos solo dos programadores). [quote]Extra: Herramientas como cortar/alargar lineas/arcos serian interesantes añadirlas...[/quote] Si esta planeado todo eso, pero es un programa grande y complejo, por eso solicitamos ayuda a los que saben usar un CAD, y saben programar con clases ya que tampoco valdría un desarrollador que no tuviera un background de CAD. Para dejar claro el tema, no estamos buscando un usuario normal que lo abra y haga cosas, lo que nos interesa (en esta etapa) es que lo miren internamente que lo revisen y propongan mejoras o colaboren. Saludos.