Página de inicio Mi Correo






   » Foro
   » Nuevo Foro
   » Mi Correo
   » Mis Actividades...


--- Novedades ---



    
  » CNC » Programación (5 de 8)   

.: CNC - Visor de Archivos PLT Previamente ordenados

Lo que hicimos anteriormente es un programa para reordenar el código de un archivo PLT, de tal modo que pueda ser leído por nuestra máquina, lo que toca hacer ahora es crear un programa que simule el trabajo de la máquina, es decir haremos un Visor de estos archivos, estas preparado...???

.: Primera Parte: Cargando del código de trazado

Lo primero es abrir el archivo, que recuerda, ahora tendrá la extensión *.cnc (vuelvo a repetir, no es realmente un archivo CNC, le cambié la extensión para evitar confundirme entre archivos, podría haberle puesto *.rla o cualquier otro), bien, luego de abrir el archivo hay que cargarlo en un List, que es el que se ve en el programa, esto es así por que me facilita la lectura del código, ya que cada registro del List contiene un bloque de instrucción, a demás, de esta manera, se abre el archivo una sola vez, se lee su contenido, se carga en el programa y finalmente se cierra, y no se lo vuelve a tocar más.

el código sería algo así...

' Presenta el cuadro de diálogo Abrir.
CommonDialog1.ShowOpen
Dim líneareg As String
' Lo abre para lectura.
Open CommonDialog1.FileName For Input As #2
n = 0
' Y ahora la Carga del archivo en el list
While Not EOF(2) 		' lee mientras el archivo no termine
        Line Input #2, líneareg 
        líneareg = Trim(líneareg)
        lstCodigo.AddItem líneareg, n	' lee desde la primera línea
        n = n + 1
        lstCodigo.Refresh
Wend
Close #2

Con esto hemos logrado cargar el archivo en nuestro programa, ahora está listo para comenzar la simulación.

.: Segunda Parte: Lectura de cada Bloque de Instrucciones

La lectura de cada bloque de instrucciones también es sencilla, igual que antes, la lectura se hará letra-por-letra, la diferencia está en que, a medida que se lee, se van activando algunas variables para el trazado, pero, nada mejor que un diagrama para comprenderlo...

Como verás, se simplificó bastante...

A ver... Ya sabemos como cargar el programa, y si recuerdas, cada registro del List es un bloque de instrucciones, y a demás cada bloque de instrucciones está arreglado para que comience con cualquiera de las 4 opciones que se pueden ver en el Diagrama, es decir PA, PU, PD, SP, estas instrucciones son suficientes para trazar cualquier gráfico hecho en AutoCAD (bueno, con algunas excepciones).

La idea consiste en lo siguiente...

Cargar un Bloque de instrucción en una variable, luego leer las dos primeras letras, y aquí se presenta el primer caso, Puede que sea PA, PU, PD ó SP, pero lo analicemos por descarte...

Si es SP: Terminaste de trazar, el programa muestra un mensaje de "Fin de Trazado"

Los que vienen podrían almacenarse en una variable para saber si debes pintar un píxel o no.

Si es PA o PU: No debes trazar nada, es decir, no pintas ningún píxel
Si es PD: Pues, Sí, hay que pintar el píxel actual

El tema es que cualquiera de las 3 instrucciones vistas recién, necesitan de un par de coordenadas que me indiquen hacia donde ir, así que en cualquiera de los 3 casos hay que ir en busca del par que le corresponde. Una vez lo tengas, deberás desplazarte sobre los ejes indicados. Ahora bien, una vez termines de trazar una línea, deberás ir por otro bloque de código, y repetir todo este proceso nuevamente. Todo terminará cuando te encuentres con un bloque SP, Fácil no...?

Esto no es tan complicado, el secreto de que todo funcione se encuentra en el Desplazamiento, Diablos...!!!, ni yo se como comenzar a explicarlo, el código no es tan largo, pero requiere de la comprensión de como se aplican los métodos para graficar funciones lineales, que según tu conocimiento puede ser más o menos complicado, si practicaste lo que vimos al comienzo de esta sección, no deberías tener problemas para comprenderlo.

Ahora veamos como voy a encararlo yo para poder explicarlo, espero se entienda...

.: Tercera Parte: Desplazamiento en los Ejes X-Y

Recuerda que los desplazamientos serán punto-a-punto eso significa que debes pintar píxel por píxel, está?

Lo primero que debemos saber, es si la coordenada a la posición de destino, es distinta a la actual, y vamos por lo más fácil, si la posición es la misma, significa que no habrá desplazamiento en ese eje, es por eso que necesitamos saberlo, entonces preguntamos

NewX <> PrevX?

si es que sí, deberemos averiguar la DISTANCIA hacia el nuevo punto, esto se puede hacer calculando el valor absoluto de la Resta NewX-PrevX y guardándolo en una variable, que podría ser "xi". En resumidas cuentas, para los dos ejes quedaría algo así...

Si NewX <> PrevX Entonces xi=|NewX-PrevX|
Si NewY <> PrevY Entonces yi=|NewY-PrevY|

Bueno ok, sabemos que si la posición de x y de y es la misma, no habrá desplazamiento, lo que nos interesa es cuando lo haya, y como no sabemos dónde estará el punto de destino, deberemos estudiarlo.

y aquí entra toda la teoría de la pendiente de una función lineal, pero veamos en forma animada como es que las dos líneas de código anteriores buscan el punto de destino y luego nos metemos de lleno en la pendiente...

Habrá que tener en cuenta que para nuestro caso el término b de una función lineal será siempre cero, es decir, siempre pasará por el origen, por supuesto, considerando al origen como el Punto Actual en el que te encuentras

<-- Anterior     Reiniciar     Siguiente -->

Antes de continuar y de definir cual de los 4 puntos es el que estamos buscando, sería mejor conocer la pendiente, recuerda que hay que graficar Punto-a-Punto, es decir no puedes avanzar 1 píxel en un eje y en el otro avanzar 2, 4, 6, 7 o más, Debe ser "1" ó "0", para ello debes saber cual de las 2 distancias xi o yi es mayor, y según eso avanzarás por el Eje X o por el Eje Y.

Veamos como sería un trazado Correcto y uno Incorrecto cuando xi>yi. (por si las moscas, actualiza la página)

   
Incorrecto...!!!
Al avanzar 1 punto en Y,
debe avanzar varios puntos en X
Conclusión:
Se están Trazando Segmentos, no puntos
El resultado no es una línea uniforme
    Correcto...!!!
Al avanzar 1 punto en X,
en Y avanzará 1 o ninguno
Conclusión:
El trazado es punto a punto
La línea obtenida es más uniforme.

El resultado de hacer esta observación en la forma de graficar una línea en diagonal, es que, cuando la distancia xi es distinta de yi hay que avanzar incrementando un punto en el mayor de ellos, el otro, se lo puede obtener por cálculo, para eso es que vimos el tema de las pendientes cuando comenzamos esta sección.

Vamos a la siguiente página

<--Anterior   Introducción   Siguiente -->
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8
Tabla de Referencias


    
--| |--