La subrutina gpuser solicita al usuario la información necesaria para dibujar un camino de jardín. Escriba lo siguiente después de la función distance:
' Adquisición de información para el camino del jardín
Private Sub gpuser()
Dim varRet As Variant
varRet = ThisDrawing.Utility.GetPoint( _
, "Punto inicial del camino: ")
sp(0) = varRet(0)
sp(1) = varRet(1)
sp(2) = varRet(2)
varRet = ThisDrawing.Utility.GetPoint( _
, "Punto final del camino: ")
ep(0) = varRet(0)
ep(1) = varRet(1)
ep(2) = varRet(2)
hwidth = ThisDrawing.Utility. _
GetDistance(sp, "Mitad de anchura del camino: ")
trad = ThisDrawing.Utility. _
GetDistance(sp, "Radio de las losetas: ")
tspac = ThisDrawing.Utility. _
GetDistance(sp, "Espacio entre losetas: ")
pangle = ThisDrawing.Utility.AngleFromXAxis( _
sp, ep)
totalwidth = 2 * hwidth
plength = distance(sp, ep)
angp90 = pangle + dtr(90)
angm90 = pangle - dtr(90)
End Sub
En la subrutina gpuser, la línea Dim varRet As Variant declara la variable varRet. Puesto que esta variable se utiliza solamente en esta subrutina, puede declararse aquí localmente, en vez de hacerlo en la sección (Declaraciones).
La siguiente línea, varRet = ThisDrawing.Utility.GetPoint( , "Punto inicial del camino: "), llama al método GetPoint. El carácter de subrayado sirve para que una línea larga sea más fácil de leer, ya que indica a VBA que debe leer esa línea y la siguiente como si formaran una sola línea. El carácter de subrayado puede eliminarse colocando todo el código en una única línea.
Para acceder al método GetPoint, antes debe ir al objeto ThisDrawing que representa el dibujo actual. Después de escribir ThisDrawing se escribe un punto (.), lo que significa que va a acceder a algo que hay dentro de ese objeto. Después del punto, se escribe Utility y otro punto. Una vez más, va a acceder a algo que hay dentro del objeto Utility. Finalmente, escriba GetPoint, que es el nombre del método que se está invocando.
El método GetPoint toma dos parámetros. El primer parámetro es opcional y no se utilizará. Deje el parámetro en blanco y escriba únicamente una coma para marcar su ubicación. El segundo parámetro es la solicitud, que también es opcional. Para este parámetro, ha escrito una cadena que solicita al usuario que especifique el punto inicial. El punto especificado por el usuario se coloca en la variable varRet. Las tres líneas siguientes de la subrutina copian el punto devuelto por el usuario en la matriz sp.
El punto final se obtiene de la misma forma.
El método GetDistance se utiliza para obtener la mitad de la anchura del camino (hwidth), el radio de las losetas (trad), y el espacio entre éstas (tspac). El método GetDistance utiliza dos parámetros. El primer parámetro es un punto base. Para este valor, usted determina el punto inicial. El segundo parámetro es la solicitud, para la que proporciona una cadena que solicita al usuario el dato correspondiente. Lo interesante acerca del método GetDistance es que puede devolver tanto un valor escrito en la línea de comando como la distancia entre el punto inicial y un punto seleccionado en AutoCAD.
La subrutina continua calculando diversas variables utilizadas más tarde en la macro. La variable pangle se define con el ángulo entre los puntos inicial y final y se halla utilizando el método AngleFromXAxis. La anchura del camino se halla multiplicando la mitad de la anchura por dos. La variable plength se define como la longitud del camino y se halla utilizando la función distancia escrita anteriormente. Finalmente, se calcula y se guarda el ángulo del camino más y menos 90 grados en angp90 y angm90, respectivamente.
La siguiente ilustración muestra la forma en la que las variables obtenidas por gpuser especifican las dimensiones del camino.