3.2. Restricciones Geométricas y Dimensionales

Añadir las restricciones necesarias.

 El código para añadir las restricciones lo incluiremos en el procedimiento correspondiente alevento Click del botón cmdRestricciones.

Private Sub cmdRestricciones_Click()
...
...
End Sub

 Las restricciones del boceto pueden ser geométricas o dimensionales. Primero aplicaremos lasrestricciones geométricas y después las restricciones dimensionales. A diferencia de lo quesucede cuando se dibuja un boceto de manera interactiva, cuando el boceto se crea medianteprogramación, nunca se aplican de manera automática las restricciones geométricas(horizontalidad, verticalidad, perpendicularidad, paralelismo, tangencia, etc.), sino que estasrestricciones se deberán aplicar de manera explícita en el programa.

 La única restricción con que podemos contar de antemano es la de coincidencia que se derivadel hecho de utilizar puntos del boceto comunes al definir las líneas y arcos. Si un boceto quecuenta sólo con estas restricciones se edita manualmente comprobaremos que se deforma,las líneas no mantienen la relación de perpendicularidad ni con los arcos la de tangencia.Tampoco se conservan la horizontalidad, verticalidad o paralelismo.

Restricciones Geométricas.

Las restricciones geométricas se guardan en la colección GeometricConstraints del objetoSketch, al que hacemos referencia en la variable oBoceto, Para guardar la referencia a lacolección GeometricConstraints declararemos una variable de ese tipo y la asociaremos con elcorrespondiente objeto de nuestro boceto:

Dim oResGeom As GeometricConstraints
Set oResGeom = oBoceto.GeometricConstraints

Deseamos introducir la condición de simetría para este boceto, pero esto exige un objeto linealque haga de eje de simetría. Ahora lo crearemos, aprovechando esto para demostrar unamanera alternativa de crear objetos, sin necesidad de crear previamente puntos de trabajo.Utilizaremos el mismo método AddByTwoPoints, pero en lugar de dar puntos de la colecciónSketchPoints como argumentos, le pasaremos directamente puntos 2D creados por el métodoCreatePoint2d. Para referirnos después a esta línea la asociaremos a la variable oLineacentrode tipo SketchLine. Las coordenadas de los puntos inicial y final de esta línea de centro seránlas que muestra la Tabla 1.

Para ello declaramos en primer lugar la variable oLineaCentro.

Dim oLineacentro As SketchLine

Y le asociamos el nuevo objeto SketchLine creado.

Set oLineacentro = oLineas.AddByTwoPoints(oTrans.CreatePoint2d(1.6, -0.5), _
oTrans.CreatePoint2d(1.6, 2))

Pero esta línea debe ser del tipo eje, lo que logramos estableciendo su propiedad Centerlinecomo verdadera (True).

oLineacentro.Centerline = True

Las restricciones geométricas que vamos a establecer para los diversos componentes delboceto se muestran en la Tabla 2.

Toda vez que se han de invocar repetidamente métodos de la colección GeometricConstraintsse utilizará aquí también un bloque With.

With oResGeom
.AddHorizontal oLineas(1)
.AddCollinear oLineas(1), oLineas(5)



End With

Restricciones Dimensionales.

Las restricciones dimensionales se guardan en la colección DimensionConstraints. Paraacceder a esta colección se declarará una variable de tipo DimensionConstraints y se asociaráa la correspondiente colección del boceto.

Dim resDim As DimensionConstraints
Set resDim = oBoceto.DimensionConstraints

Las restricciones dimensionales se materializan en objetos acotación, que cuentan con un textoque representa su valor. Por ese motivo uno de los argumentos que se requieren para añadiruna restricción dimensional es el punto donde ha de situarse el texto de la acotación.Los métodos que utilizaremos son el AddRadius, que aplica una restricción dimensional alradio de un arco y el AddTwoPointDistance que restringe la distancia entre dos puntos delboceto.

El método AddRadius sólo requiere dos argumentos, el objeto arco (SketchArc) o círculo(SketchCircle), y el punto 2D (Point2D) donde colocar el texto. Teniendo en cuenta quepreviamente habíamos aplicado la restricción de igualdad a los radios de ambos arcos, bastaráaplicar la restricción dimensional a uno sólo de los arcos. Si se intentara aplicar la restricción alos dos arcos se produciría un error al quedar excesivamente restringido el boceto.

El método AddTwoPointDistance es más complejo pues además de los dos puntos del bocetoque quedarán restringidos y la posición del texto, debemos definir la orientación de la acotacióna partir de una de tres posibilidades, horizontal, vertical o alineada, definidas a partir de lasconstantes de enumeración que se muestran a continuación.


Los argumentos para las restricciones dimensionales que aplicaremos se describen en la Tabla 4.

Igual que en el caso de las restricciones geométricas se recurrirá a agrupar las expresiones enun bloque With para evitar repeticiones.

With resDim
.AddRadius oArcos(1), oTrans.CreatePoint2d(3, 2)
.AddTwoPointDistance oPuntos(1), oPuntos(2), kHorizontalDim, _
oTrans.CreatePoint2d(0.5, -0.5)



End With

Con esto completamos el procedimiento asociado al evento Click de este botón. Sólo quedadesactivarlo y habilitar el siguiente, que a partir del boceto creará la primera extrusión.

cmdRestricciones.Enabled = False
cmdExtDist.Enabled = True

Con esto concluye la tercera parte de este ejercicio. Como indicamos en la Primera parte,ahora toca comprobar la corrección del código ejecutándolo. El resultado que debemosobtener, mostrando todas las restricciones aplicadas se muestra en la Figura 1.

Figura 1. Boceto terminado, mostrando sus restricciones.