Alineamiento Horizontal. Parte 1

Alineamiento horizontal

Una vez obtenido el modelo digital del terreno en Autocad, se pueden aplicar las herramientas correspondientes para obtener las soluciones que buscamos como parte del diseño de ingeniería. La más común de ellas es la obtención de los volúmenes de movimientos de tierras en cimentaciones de edificaciones, terraplenes, canales, líneas de conducción, carreteras, reservorios, etc.

Las obras de tipo lineal como canales, líneas de conducción, carreteras, entre otros, requiere, como un primer paso, la definición de un eje que determina la dirección y sentido de la obra, mediante este eje se identifica el espacio geométrico por el que se desarrollará el proyecto el mismo que podrá expresarse en planta y/o en elevación. Cuando el eje se presenta en planta se trata del alineamiento horizontal si se presenta en elevación se trata del perfil longitudinal.

Un alineamiento horizontal para un proyecto de camino es una sucesión de líneas rectas y curvas cuyos parámetros geométricos deben cumplir las condiciones establecidas en la normativa de diseño geométrico vial.

La opción más sencilla de dibujo de un alineamiento horizontal es mediante una polilínea. Cuando se dibuja una polilinea en autocad se usa el comando PLINE (en versión en español:  POL). Lo recomendable es empezar el dibujo mediante líneas quebradas, las intersecciones de estas líneas o vértices vienen a ser los PI del alineamiento. Para completar el desarrollo del alineamiento se aplica el comando FILLET (EMPALME) vértice por vértice  proporcionando el radio de curvatura necesario.
Un proceso de definición del alineamiento con frecuencia requiere de una serie de ajustes para los cuales hay que auxiliarse con las opciones de modificación seleccionando los “grips”, usando el comando de edición PEDIT (EDITPOL), varias veces el FILLET, etc. Todo se complica un poco más si hay que eliminar algún PI.

Al final o antes tendremos necesidad de colocar el estacado o las progresivas al alineamiento, directamente con Autocad lo más que se puede hacer es usar MEASURE con un bloque que es un segmento de línea para tener las marcas, colocar los números es otra complicación.

En conclusión: es mejor programar las herramientas para automatizar estas operaciones y, la buena noticia es que estas herramientas ya existen.

Si la opción es desarrollar herramientas propias, el uso de Autolisp es, para mí, la mejor vía.

Estacado de un alineamiento

Empezamos con lo más complicado de hacer "manualmente" con autocad y que es más sencillo de programar: el estacado del alineamiento.
Funciones a utilizar:
  • vlax-curve-getPointAtDist  : nos da la coordenada del punto a una distancia dada desde el inicio del alineamiento.
  • vlax-curve-getFirstDeriv : nos da la tangente del alineamiento cuando éste tiene un parámetro dado:
  • vlax-curve-getParamAtdDist : nos da el parámetro del alineamiento a una distancia dada desde el inicio del alineamiento. El valor obtenido es el que se usa en la función anterior.

Tener en mente que el alineamiento sobre el que se trabaje debe ser una sola entidad polilinea, sino no se obtendrán los resultados deseados.
Se entiende que debe existir, como dato previo, el valor de la estaca que corresponde al punto de inicio del alineamiento en la mayoría de los casos es 0.00 o 0+000.00. Un esquema simplificado de programación de esta herramienta sería:

  1. Pedir seleccionar el alineamiento al que se aplicará el estacado
  2. Pedir el valor de la estaca inicial y el espaciamiento para aplicar estacas
  3. Iterar a lo largo del alineamiento obteniendo el punto de la estaca, su orientación y escribiendo la estaca que le corresponde

Parte 1. Seleccionar el alineamiento al que se aplicará el estacado
Una manera sencilla de implementar esta parte es usando la función ENTSEL como sigue:
       (setq alinea (entsel “señalar alineamiento a estacar…”))
En la variable alinea se guardará una lista con 2 componentes el primero es el nombre interno de la entidad de alineamiento (de la polilinea) y el segundo viene a ser una lista que define las coordenadas del punto donde se hizo el “click” de selección. Así que para obtener el nombre usaremos (car alinea) y para obtener el punto de selección usaremos (cadr alinea).

Si solo nos interesa el nombre de la entidad podemos modificar la expresión así:
       (setq alinea (car (entsel “señalar alineamiento a estacar…”)))

Parte 2. Pedir el valor de la estaca inicial y el espaciamiento para aplicar estacas
En Autolisp se usa la función GETREAL para ingresar valores numéricos y la forma más sencilla de usarla es con:
     (setq est_inicio (getreal “Estaca Inicial:”))
     (setq espaciado (getreal “Espaciamiento de estacas:”))

Parte 3. Iterar a lo largo del alineamiento obteniendo el punto de la estaca, su orientación y escribiendo la estaca que le corresponde.
Este sería el núcleo de la rutina y donde deben intervenir las funciones especiales que presentamos más arriba:

vlax-curve-getPointAtDist
vlax-curve-getFirstDeriv
vlax-curve-getParamAtdDist


Si vamos a usar WHILE debemos prever que la iteración se detenga con alguna condición y la única que se me ocurre es verficar la longitud total del alineamiento. Así la iteración requiere de algunos pasos previos y podría quedar como sigue:

(setq Ltot (vlax-curve-getDistAtParam alinea  (vlax-curve-getEndParam alinea)))
(setq estak (* (+ (fix (/est_inicio espaciado)) 1) espaciado) )
(while (< (- estak est_inicio) Ltot)
    (setq punto (vlax-curve-getPointAtDist alinea (- estak est_inicio))
             beta   (vlax-curve-getFirstDeriv alinea
(vlax-curve-getParamAtdDist alinea (- estak est_inicio))))
      (progresiva estak punto beta) )
    (setq estak (+ estak espaciado)  )
    )

La expresión (progresiva punto beta) hace llamado a otra función que es la que dibuja la señal que define la ubicación de la estaca y escribe el número en el formato #+###.

Juntando las 3 partes explicadas podemos tener una rutina que al ejecutarla solo nos pide elegir el alineamiento, proporcionar la estaca de inicio y proporcionar el espaciamiento de estacas, para efectuar un inmediato estacado del alineamiento. No olvidar incluir la orden (vl-load-com) antes de que se haga algun llamado a las funciones VisualLisp.

Pero no es suficiente, la presentación del estacado de un alineamiento requiere otros parámetros, la posibilidad de cometer errores durante la ejecución requiere añadir controles especiales, etc. Con todo esto una rutina tendrá una presentación más complicada pero la base siempre será como la que se mostró arriba.

Alternativas de presentación del estacado:

Como pueden ver, incluso la introducción de datos puede ser más complicada, para tener una rutina aceptable y funcional se puede añadir un cuadro de dialogo que facilite la elección de opciones especiales.

Ejemplos de opciones a elegir:

 El estacado alineado con el eje, sobre el alineamiento

 El estacado alineado con el eje, debajo del alineamiento

 El estacado transversal al eje, a la izquierda del alineamiento

El estacado transversal al eje, a la derecha del alineamiento

Para facilitar el funcionamiento muestro un ejemplo de cuadro de dialogo que se puede programar:



Una vez lograda la programación de la herramienta para el estacado, lo siguiente que nos preguntamos es:
¿ y si debo marcar las estacas de los PC y PT de las curvas?
¿ y si el alineamiento tiene curvas de transición?, etc. ¿como proceder?

No hay otra que ahondar en la programación si queremos superar más obstáculos.

Continuará…