En el tema anterior hemos creado el Proyecto de Usuario CreaParte, diseñado el Formulario e implementado la primera de sus acciones: Crear el Documento de Parte. Ahora abordaremos la creación del Boceto 2D que servirá como base para crear nuestra Pieza 3D.
El boceto también será de uso común a varios procedimientos, por lo que debemos tambiéndeclarar la variable oBoceto que hace referencia a este objeto como global, al inicio del módulode código.
Dim oBoceto As PlanarSketch
Los bocetos utilizados para crear una parte se guardan en la colección Sketches que a su vezforma parte de la colección ComponentDefinition del documento. Para ello se utiliza el métodoAdd de la colección Sketches. Para crear el nuevo boceto le daremos como argumento uno delos planos de trabajo que vienen predefinidos con el documento, en este caso el plano XY quees el tercer elemento de la colección WorkPlanes del mismo objeto ComponentDefinition:WorkPlanes.Item(3)
.
Set oBoceto = oDoc.ComponentDefinition.Sketches.Add _
(oDoc.ComponentDefinition.WorkPlanes.Item(3))
Si deseamos dar un nombre especial a este boceto, podemos establecer el valor de lapropiedad Name de este objeto:
oBoceto.Name = "Boceto Plano XY"
Definir la geometría del boceto.
Para definir la geometría del boceto crearemos una serie de puntos que nos servirán para crearlas líneas y arcos que delimitarán el contorno para su posterior extrusión. Para contener lasreferencias a las colecciones de puntos, líneas y arcos del boceto declararemos tres variablesglobales.
Dim oPuntos As SketchPoints
Dim oLineas As SketchLines
Dim oArcos As SketchArcs
La definición de los puntos se hará mediante los métodos del objeto TransientGeometry de laaplicación. Para ello declararemos la variable oTrans que guardará la referencia a este objeto.Toda vez que también emplearemos este objeto en el procedimiento que añade lasrestricciones, también lo debemos declarar como variable global.
Dim oTrans As TransientGeometry
Y en el código del procedimiento le daremos valor.
Set oTrans = ThisApplication.TransientGeometry
Los puntos los crearemos como parte de la colección SketchPoints que forma parte del objetooBoceto creado anteriormente.
Los Puntos:
Ante todo, debemos asignar a la variable global
oPuntos la colección
SketchPoints del Boceto.
Set oPuntos = oBoceto.SketchPoints
Para añadir puntos a la colección SketchPoints emplearemos su método Add que recibe dosargumentos:
- un objeto punto 2D creado con el método CreatePoint2d del objeto TransientGeometry,
- un valor booleano que si es true indica que se trata de un centro de agujero.
Un solo punto se puede crear con la expresión:
Call oPuntos.Add(oTrans.CreatePoint2d(10, 20), False)
Donde (10, 20) representa las coordenadas X e Y del punto (medidas en centímetros que es launidad de medida interna que emplea Inventor) y False indica que no es centro de agujero.Pero para ahorrar la repetición del nombre de la variable que referencia la colección de puntospodemos agrupar todo en un bloque With, como se indica a continuación. Los valores X e Yson los que corresponden a los puntos para la pieza que construiremos y que se relacionan enla Tabla 2.
With oPuntos
.Add oTrans.CreatePoint2d(0, 0), False
.Add oTrans.CreatePoint2d(1, 0), False
…
…
…
End With
Las Líneas:
Para las líneas establecemos una referencia a la colección SketchLines.
Set oLineas = oBoceto.SketchLines
Y luego añadimos las líneas haciendo referencia a los puntos mediante un índice quecorresponde al orden en que han sido creados:
With oLineas
.AddByTwoPoints oPuntos(1), oPuntos(2)
.AddByTwoPoints oPuntos(2), oPuntos(3)
…
…
…
End With
Los puntos a conectar para crear las líneas se relacionan en la Tabla 3.
Los Arcos:
Igual que en los casos anteriores, establecemos la referencia a la colección SketchArcs.
Set oArcos = oBoceto.SketchArcs
Y añadimos los arcos con el método AddByCenterStartEndPoint, haciendo referencia a lospuntos previamente definidos. En este caso se trata de sólo dos arcos. Los puntos a utilizarcomo argumentos se muestran en la Tabla 4.
With oArcos
.AddByCenterStartEndPoint oPuntos(11), oPuntos(7), oPuntos(8)
.AddByCenterStartEndPoint oPuntos(12), oPuntos(9), oPuntos(10)
End With
De la misma manera que en el procedimiento anterior, ahora toca desactivar el botón de crearel boceto y activar el botón de Crear Restricciones.
cmdBoceto.Enabled = False
cmdRestricciones.Enabled = True
Antes de seguir adelante comprobaremos el correcto funcionamiento del código propuesto.Para ello seleccionamos el botón Ejecutar Sub/UserForm en la barra de HerramientasEstándar o la Barra de Herramientas Depuración (Figura 9).
Figura 9. Barra de Herramientas Depuración.
Si todo ha ido bien, el boceto resultante tendrá la forma que se muestra en la Figura 10. Con esto concluimos laprimera parte de este ejercicio.
Figura 10. Boceto terminado obtenido a partir del código la primera parte de este ejercicio.
Este ejercicio está adaptado del propuesto por Joe Sutphin como parte del curso ATP610 “Beginning Autodesk Inventor VBA” impartido en el marco del Autodesk User Group International AUGI Training Program (ATP).