Compartir a través de


Método Master.DrawSpline (Visio)

Crea una forma nueva cuya ruta sigue una secuencia de puntos determinada.

Sintaxis

expresión. DrawSpline( _xyArray()_ , _Tolerance_ , _Flags_ )

Expresión Variable que representa un objeto Master .

Parameters

Nombre Obligatorio/opcional Tipo de datos Descripción
xyArray() Obligatorio Double Matriz de valores x e y que definen puntos de la ruta de la nueva forma.
Tolerance Obligatorio Double Cuánto debe aproximarse la ruta de la nueva forma a los puntos especificados.
Flags Obligatorio Integer Marcas que influyen en cómo se dibuja la forma.

Valor devuelto

Forma

Comentarios

El método DrawSpline crea una forma nueva cuya ruta está dentro de la tolerancia dada para la matriz de puntos especificada. Para que los puntos coincidan exactamente, especifique una tolerancia de (0). Normalmente, el método DrawSpline hace que los segmentos de la spline coincidan con los puntos, pero, en ocasiones, crea segmentos de línea o de arco circular en la nueva forma.

Los puntos de control y la tolerancia se expresan en unidades de dibujo internas (pulgadas) con respecto al espacio de coordenadas de la página, el patrón o el grupo donde se va a crear la nueva forma. La matriz que se pasa debe ser del tipo SAFEARRAY y contener valores de punto flotante de 8 bytes pasados mediante referencia (VT_R8|VT_ARRAY|VT_BYREF). Este es el modo en el que Microsoft Visual Basic pasa las matrices a los objetos de automatización.

El error existente desde los puntos a la ruta de la forma resultante se mantiene aproximadamente dentro de la tolerancia. Si el número de puntos es elevado, el error real podría superar la tolerancia recomendada.

El parámetro Flags es una máscara de bits que especifica las opciones de dibujo para la nueva forma. Su valor debe ser cero o una combinación de uno o varios de los valores siguientes.

Constante Valor
visSplinePeriodic 1(&H1)
visSplineDoCircles 2(&H2)
visSplineAbrupt 4(&H4)
visSpline1D 8(&H8)

Si Flags incluye visSplinePeriodic y se cumplen las condiciones siguientes, la aplicación intenta dibujar una spline periódica. En caso contrario, Visio dibuja una spline no periódica:

  • El último punto debe ser una repetición del primero.

  • Si además se incluye la marca visSplineAbrupt, no deberá haber cambios bruscos de dirección ni de curvatura en ninguna parte de la ruta cerrada que describen los puntos.

Si Flags incluye visSplineDoCircles, Microsoft Visio reconocerá los segmentos circulares de la matriz de puntos especificada y generará arcos en lugar de filas de spline para dichos segmentos.

Si Flags incluye visSplineAbrupt, Visio interrumpirá la spline cada vez que detecte un cambio brusco de dirección o de curvatura en el trazado de los puntos. Un cambio brusco de dirección se define mediante tres puntos consecutivos (A, B, C) en la lista, en los que la distancia entre B y el segmento AC es más del doble de la tolerancia. La aplicación también considera que el punto B es un cambio brusco si la longitud de uno de los segmentos AB o BC es más del doble que la del otro. En el punto en el que detecta un cambio brusco, la aplicación da por finalizada la parte actual (línea, arco o spline) y comienza una nueva.

Si Flags incluye visSpline1D y los puntos primero y último de xyArray() no coinciden, el método DrawSpline genera una forma que tiene un comportamiento unidimensional (1D), de lo contrario, genera una forma que tiene un comportamiento bidimensional (2D).

Si los puntos inicial y final de xyArray() coinciden, el método DrawSpline dará como resultado una forma rellena.

Ejemplo

En el ejemplo siguiente, se muestra cómo dibujar una spline periódica a partir de cinco puntos cualesquiera, siendo la aproximación entre la spline y cada punto de 0,25 pulgadas (de dibujo). Además, permite a Visio comenzar segmentos nuevos en aquellos puntos de la ruta de la nueva forma donde se han detectado cambios bruscos.

 
Public Sub DrawSpline_Example() 
 
 Dim vsoShape As Visio.Shape 
 Dim intCounter As Integer 
 Dim adblXYPoints(1 To (5 * 2)) As Double 
 
 For intCounter = 1 To 5 
 
 'Set x components (array elements 1,3,5,7,9) to 1,2,3,4,5 
 adblXYPoints((intCounter * 2) - 1) = intCounter 
 
 'Set y components (array elements 2,4,6,8,10) to f(i) 
 adblXYPoints(intCounter * 2) = (intCounter * intCounter) - (7 * intCounter) + 15 
 Next intCounter 
 
 Set vsoShape = ActivePage.DrawSpline(adblXYPoints, 0.25, visSplineAbrupt) 
 
End Sub

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.