Ir al contenido


Foto

Problemas varios, creando núcleo programa cad Multiplataforma.


  • Por favor identifícate para responder
16 respuestas en este tema

#1 martinartaza

martinartaza

    Advanced Member

  • Miembros
  • PipPipPip
  • 159 mensajes
  • LocationArgentina, Tucuman

Escrito 13 abril 2013 - 05:24

Hola querida comunidad, de vuelta con el tema este que lo había dejado archivado.
Lo que quiero hacer es crear un programa, que sirva de base a la hora de crear un programa CAD (Design Assisted Computer). Y como primera medida eh decido crear un programa que permita insertar un circulo en un panel, y al mismo poder mover lo, eliminarlo, hacerle zoom, etc. Este programa seria un diseñador de Grafos, pero la misma base se podría usar para un software de diseño de circuito electronicos, o porque no un diseñador de interfaz, en fin el limite seria la imaginación, pero el primer limite con el que me encuentro es en la implementación del núcleo.
Eh creado el siguiente programa que puede insertar nodo (circulitos) y se "puede" mover, cuando se mueve los circulo produce un error que no lo puedo sacar.
Le dejo el código fuente y le explico el erro que produce, digamos que se inserta un circulo en la coordenada (x=50, y = 50) y se lo mueve hacia la coordenada (x=70, y = 60) al soltar el mouse algunas veces funciona y otras el nodo aparece en la coordenada (x=20, y= 10) o sea la diferencia de origen y destino. Eh tratado de guarda las coordenadas iniciales en el evento ControlMouseDown y cosa por el estilo, desde ya aclaro que hago discreto el espacio para simplificar varias cosas después.
Le adjunto el codigo tiene el logo de delphi pero es codigo de lazarus.

Notas: Eh probrado componentes de Jedy, eh visto simplegrafph pero estoy interesado de que el software sea multiplaforma.

Scafandra se que esto para vos seria un lindo desafió.

Desde ya muchas gracias.

PD: Si no me explique bien cual es el problema que tengo, ejecute en el nodo.exe (windows, ya va salir la version linux) y inserten un nodo haciendo clic en Insertar->nodo y luego haciendo clic en el panel punteado, aparecera un circulo, luego hagan clic en insertar->mover y traten de mover el circulo.


  • 0

#2 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 13 abril 2013 - 08:43

Me gusta la idea de crear un programa así. Desde hace tiempo tengo la misma inquietud.  Trataré de colaborar amigo


  • 0

#3 martinartaza

martinartaza

    Advanced Member

  • Miembros
  • PipPipPip
  • 159 mensajes
  • LocationArgentina, Tucuman

Escrito 14 abril 2013 - 07:24

Me gusta la idea de crear un programa así. Desde hace tiempo tengo la misma inquietud.  Trataré de colaborar amigo


Muchas gracias por el interés Poliburro, creo que entre todos se podría avanzar rapidísimo en un software como este y seria de la comunidad.

Desde ya gracias.
  • 0

#4 seoane

seoane

    Advanced Member

  • Administrador
  • 1.259 mensajes
  • LocationEspaña

Escrito 14 abril 2013 - 08:26

Puede que ya lo vieras en el foro, pero hace tiempo publique un ejemplo de algo parecido.

Permite insertar, mover y re dimensionar usando el ratón

Archivos adjuntos


  • 0

#5 martinartaza

martinartaza

    Advanced Member

  • Miembros
  • PipPipPip
  • 159 mensajes
  • LocationArgentina, Tucuman

Escrito 14 abril 2013 - 08:39

Muchas gracias Seoane, ahora me pongo a estudiar tu código, creo que me va a servir mucho para lo que quiero hacer. Es muy parecido a lo que quiero, con la diferencia de que cada (Objeto insertado), se ubique o se mueva en puntos fijos (para poder después conectarlo atreves de lineas), pero la implementación de tu programa seguro que me sirve.

Nota: Eh visto mucho código en el foro, pero este no lo habia visto, me parece muy bueno lo que hiciste. Sobre todo la posibilidad de exportarlo a bmp. Eso esta genial.

:cheesy: :cheesy: :cheesy: :cheesy: :cheesy: :cheesy:
  • 0

#6 martinartaza

martinartaza

    Advanced Member

  • Miembros
  • PipPipPip
  • 159 mensajes
  • LocationArgentina, Tucuman

Escrito 14 abril 2013 - 08:57

Eh migrado tu proyecto a lazarus y el unico problema tuve fue con la siguiente linea



delphi
  1.     property BoundsRect: TRect read FBoundsRect write FBoundsRect;   


La cambie se seccion la pase de   published  a Public y de ahí anda de mil maravilla con la excepción de que el programa inicia con un fondo negro en vez de blanco.
  • 0

#7 seoane

seoane

    Advanced Member

  • Administrador
  • 1.259 mensajes
  • LocationEspaña

Escrito 14 abril 2013 - 04:15

... y de ahí anda de mil maravilla con la excepción de que el programa inicia con un fondo negro en vez de blanco.


Eso se arregla facil


delphi
  1. procedure TfrmMain.Dibujar(Canvas: TCanvas; Width, Height: Integer);
  2. var
  3.   i: Integer;
  4.   Buffer: TBitmap;
  5.   Figura: TFigura;
  6. begin
  7.   Buffer:= TBitmap.Create;
  8.   try
  9.     Buffer.Canvas.Brush.Color:= Canvas.Brush.Color;
  10.     Buffer.Width:= Width;
  11.     Buffer.Height:= Height;
  12.     Buffer.Canvas.FillRect(Buffer.Canvas.ClipRect);      // < -- ANADE ESTA LINEA


  • 0

#8 martinartaza

martinartaza

    Advanced Member

  • Miembros
  • PipPipPip
  • 159 mensajes
  • LocationArgentina, Tucuman

Escrito 14 abril 2013 - 10:51

Muchas gracias Seoane.

Sin embargo seguí con mi código hasta que logre que ande. Ahora se puede mover los nodos y cambiarle de color, también llevarlo para atrás y adelante. Subo el código el próximo desafió es hacer una linea que una 2 nodos y que al moverla se sigan (ya poste esto antes pero con botones) sin embargo quiero ver si la linea sigue el camino discreto.

Subo el código, por si a alguien le interesa.
  • 0

#9 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 14 abril 2013 - 11:31

Muy interesante proyecto. Va muy bien amigo martinartaza (y)

Saludos
  • 0

#10 martinartaza

martinartaza

    Advanced Member

  • Miembros
  • PipPipPip
  • 159 mensajes
  • LocationArgentina, Tucuman

Escrito 17 abril 2013 - 11:30

Muchas gracias por el apoyo Egostar.
Subo la versión 00005, me costo mucho hacer las lineas ya que no me daba cuenta de tomar el evento onmousedown del objeto (nodo) creado en tiempo de ejecución. En fin ya se puede crear una linea que una 2 nodos, ahora falta empezar a crear un registro que vaya guardando las conexiones y que al mover un nodo, se muevan todas las lineas que están conectadas.



  • 0

#11 martinartaza

martinartaza

    Advanced Member

  • Miembros
  • PipPipPip
  • 159 mensajes
  • LocationArgentina, Tucuman

Escrito 01 mayo 2013 - 09:26

  Hola querida comunidad, le comento que por fin "resolví lo básico" ahora pero debo reorganizar todo el código, en está versión ya se pueden insertar varios nodos, insertar lineas y moverlos a cualquiera y las lineas se siguen moviendo.

Muchas gracias por el apoyo, voy a tratar de definir en esta semana un listado de mejoras y en que consistirían cada versión.
  • 0

#12 martinartaza

martinartaza

    Advanced Member

  • Miembros
  • PipPipPip
  • 159 mensajes
  • LocationArgentina, Tucuman

Escrito 02 mayo 2013 - 07:08

Mil disculpa por el apuro me olvide de subir el codigo  *-), ahí va, disculpa por ocupar espacio en el servidor.


  • 0

#13 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 02 mayo 2013 - 07:14

........ disculpa por ocupar espacio en el servidor......


Aún tenemos unos cuantos megas disponibles amigo, no te preocupes :)

Y si se necesitan más pues saltamos al siguiente nivel de hospedaje ;)

Saludos
  • 0

#14 martinartaza

martinartaza

    Advanced Member

  • Miembros
  • PipPipPip
  • 159 mensajes
  • LocationArgentina, Tucuman

Escrito 06 mayo 2013 - 07:07

Gracias Egostar por el apoyo, te comento que ya esta disponible la version 0008, la misma permite guardar y abrir archivo de nodos, también se habilita la opción de "NUEVO" para limpiar todo el lienzo de nodos. En fin, lo único que faltaría seria poder eliminar.

En realidad falta muchas cosas, para poder hacer un diseñador de grafo cometí un error fatal que fue que las lineas se unan de centro a centro, de esa manera no se puede hacer dos lineas distintas que unan los mismo nodos, eso debo cambiar, sin embargo el planteo actual me sirve de maravilla para hacer un diseñador de db o un programa de circuito eléctrico, que es a lo que quiero llegar.

Igual voy a ver de terminar este proyecto y crear un pagina para subirlo. Me sirve de antecedentes, creo que es mejor programar que hacer cursos, aprendo más así.

Con respecto al espacio en el server se puede ir borrando versiones anteriores, creo que se dejaria la 00001, 00005 y esta o la siguiente a esta.
  • 0

#15 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 06 mayo 2013 - 08:23

Puedes usar el servicio de la zona de descargas y ahi agregar tus versiones.

http://www.delphiacc...orum/downloads/

Saludos
  • 0

#16 zamtmn

zamtmn

    Newbie

  • Miembros
  • Pip
  • 1 mensajes

Escrito 03 junio 2013 - 01:48

Echa un vistazo a este programa http://sourceforge.net/projects/zcad/ . resuelto muchos de los problemas allí (pero aún no resuelto en gran medida))). Escrito en Lazarus, utilizando OpenGL, que funciona en Linux y Windows, el código fuente es abierto.
  • 0

#17 martinartaza

martinartaza

    Advanced Member

  • Miembros
  • PipPipPip
  • 159 mensajes
  • LocationArgentina, Tucuman

Escrito 25 junio 2013 - 12:16

Muchisimas gracias, ahora mismo lo estoy viendo.
  • 0




IP.Board spam blocked by CleanTalk.