Añadir las restricciones necesarias.
El código para añadir las restricciones lo incluiremos en el procedimiento correspondiente al
evento Click del botón cmdRestricciones.
Private Sub cmdRestricciones_Click()
...
...
End Sub
Las restricciones del boceto pueden ser geométricas o dimensionales. Primero aplicaremos las
restricciones geométricas y después las restricciones dimensionales. A diferencia de lo que
sucede cuando se dibuja un boceto de manera interactiva, cuando el boceto se crea mediante
programación, nunca se aplican de manera automática las restricciones geométricas
(horizontalidad, verticalidad, perpendicularidad, paralelismo, tangencia, etc.), sino que estas
restricciones 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 deriva
del hecho de utilizar puntos del boceto comunes al definir las líneas y arcos. Si un boceto que
cuenta 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 objeto
Sketch, al que hacemos referencia en la variable oBoceto, Para guardar la referencia a la
colección GeometricConstraints declararemos una variable de ese tipo y la asociaremos con el
correspondiente 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 lineal
que haga de eje de simetría. Ahora lo crearemos, aprovechando esto para demostrar una
manera 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ón
SketchPoints como argumentos, le pasaremos directamente puntos 2D creados por el método
CreatePoint2d. Para referirnos después a esta línea la asociaremos a la variable oLineacentro
de tipo SketchLine. Las coordenadas de los puntos inicial y final de esta línea de centro serán
las 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 Centerline
como verdadera (True).
oLineacentro.Centerline = True
Las restricciones geométricas que vamos a establecer para los diversos componentes del
boceto se muestran en la Tabla 2.
Toda vez que se han de invocar repetidamente métodos de la colección GeometricConstraints
se 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. Para
acceder 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 texto
que representa su valor. Por ese motivo uno de los argumentos que se requieren para añadir
una 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 al
radio de un arco y el AddTwoPointDistance que restringe la distancia entre dos puntos del
boceto.
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 que
previamente 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 a
los 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 boceto
que quedarán restringidos y la posición del texto, debemos definir la orientación de la acotación
a partir de una de tres posibilidades, horizontal, vertical o alineada, definidas a partir de las
constantes 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 en
un 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 queda
desactivarlo 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 debemos
obtener, mostrando todas las restricciones aplicadas se muestra en la Figura 1.
Figura 1. Boceto terminado, mostrando sus restricciones.