Está en la página 1de 34

Capı́tulo 2

API SDK SolidWorks

2.1. SolidWorks

SolidWorks es un software de diseño asistido por computador (CAD1 ) para el modelado


sólido, desarrollado actualmente por SolidWorks Corp., una subsidiaria de la empresa
francesa Dassault Systèmes. Este software permite modelar piezas y conjuntos, y extraer
de ellos tanto planos como otro tipo de información necesaria para su fabricación. Funciona
con base en las nuevas técnicas de modelado sólido con sistemas CAD; proceso que consiste
en trasvasar la idea del diseñador al sistema CAD, “construyendo virtualmente” la pieza
o conjunto; posteriormente todas las extracciones (planos y ficheros de intercambio) se
realizan de manera bastante intuitiva y automatizada.

Figura 2.1: SolidWorks.

1
Computer-aided Design
44

Una de las grandes ventajas que ofrece SolidWorks, es que permite crear dibujos preparados
para la fabricación de forma automática a partir de modelos 3D; además, elimina el tiempo
necesario para crear y manipular las vistas del dibujo haciendo que cada modificación
realizada se refleje con precisión en todas las vistas, láminas y/o dibujos relacionados, de
forma automática (ver Figura 2.2 y 2.3).

Figura 2.2: Dibujo 3D realizado en SolidWorks.

Figura 2.3: Dibujo 2D realizado en SolidWorks.

11
15.5
0
17
.5

A
0

DETAIL A
SCALE 1 : 1

UNLESSOTHERWISE SPECIFIED: FINISH: DEBUR AND


DO NOTSCALE DRAWING REVISION
DIMENSIONSARE IN MILLIMETERS BREAK SHARP
SURFACE FINISH: EDGES
TOLERANCES:
LINEAR:
ANGULAR:

NAME SIGNATURE DATE TITLE:


DRAWN

CHK'D

APPV'D

MFG
MATERIAL:

Za nge
Q.A DWG NO.
A3

WEIGHT: SCALE:1:2 SHEET1 OF 1


45

2.2. Qué es la API SDK SolidWorks

Para crear un complemento o Add-In para este modelador sólido, se emplea una herramienta
informática llamada SDK (Software Development Kit) que SolidWorks pone a disposición
de los desarrolladores. El SDK elabora una plantilla para la creación de un proyecto que
maneje las funciones API (Application Programming Interface) del software. Las funciones
API de este modelador sólido son manejadas a través de un IDE (Integrated Development
Environment) llamado Microsoft Visual Studio2 . Dicho de otro modo el API SDK SolidWorks
es un conjunto de funciones que pueden ser llamadas desde Visual C++, Visual Basic
o Visual C# 3 , permitiendo al usuario emplear toda la funcionalidad y versatilidad de
SolidWorks para crear aplicaciones que automaticen el modelado sólido; obteniéndose una
mayor eficiencia y productividad en el diseño y fabricación de componentes mecánicos.

SolidWorks proporciona ayuda sobre su API SDK, la cual se encuentra en el menú Ayuda
(API Help), pero esa información es carente de ejemplos que muestren lo que se puede
lograr con esta herramienta informática. Esencialmente la ayuda consiste en una descripción
de las funciones que pertenecen a la API SDK sin ejemplificación en la mayorı́a de los casos,
lo que resulta algunas veces difı́cil y tedioso al momento de asignar los parámetros a las
funciones.

En este trabajo se ha optado por emplear el lenguaje de programación Visual C#, un lenguaje
basado en la programación orientada a objetos, que ha sido desarrollado y estandarizado
por Microsoft como parte de su plataforma .NET [8]; aprobado como un estándar por la
ECMA (European Computer Manufacturers Association) e ISO (International Organization
for Standardization). Algunas de las principales caracterı́sticas de este lenguaje de
programación se listan a continuación:

• Es un lenguaje de programación orientado a objetos simple, moderno y de propósito


general.

• Fácil migración para el programador al nuevo lenguaje, especialmente para aquellos


programadores familiarizados con C++ y Java.

• Portabilidad del código fuente, actualmente se ha convertido en un lenguaje


multiplataforma.

• Permite crear aplicaciones económicas en cuanto a memoria y procesado.

2
Soporta varios lenguajes de programación tales como Visual C++, Visual C#, Visual J#, ASP.NET y Visual
Basic .NET, aunque actualmente se han desarrollado las extensiones necesarias para muchos otros. Microsoft
Visual Studio permite a los desarrolladores crear aplicaciones, sitios y aplicaciones web, ası́ como servicios web
en cualquier entorno que soporte la plataforma .NET. Ası́ se pueden crear aplicaciones que se intercomuniquen
entre estaciones de trabajo, páginas web y dispositivos móviles.
3
Pronunciado “si sharp” en inglés.
46

2.2.1. Cómo instalar la API SDK SolidWorks 2010


La instalación de la API SDK SolidWorks 2010 es sencilla. El archivo instalador (SolidWorks
API SDK.msi) se encuentra en la carpeta apisdk dentro del DVD instalador.

1. Al ejecutar el archivo instalador inmediatamente muestra la ventana de bienvenida a la


instalación (ver Figura 2.4). Se presiona el botón Next para continuar.
Figura 2.4: Ventana de bienvenida a la instalación.

2. En la siguiente ventana (ver Figura 2.5) se muestra la ubicación del directorio Archivos
de programa donde debe encontrarse instalado SolidWorks. En este caso la ubicación
no se puede alterar, pero si en versiones anteriores, siendo la ruta donde instalar:
C:\Archivos de programa\SolidWorks\api\.
Figura 2.5: Ubicación donde se realizará la instalación.
47

3. Ahora se debe presionar el botón Install para iniciar la instalación. Luego la instalación
se encontrará en progreso (ver Figura 2.6).

Figura 2.6: Instalación en proceso.

4. Concluida la instalación se termina presionando el botón Finish (ver Figura 2.7).

Figura 2.7: Instalación finalizada.

5. Hasta este punto los complementos que se podrı́an crear serı́an aquellos programados
en lenguaje C++/CLI, pero como el objetivo es desarrollar complementos empleando
el lenguaje Visual C#, se necesita modificar la instalación. Para instalar una opción
adicional, como lo es la plantilla para el desarrollo de complementos usando Visual
C#, se requiere volver a ejecutar el archivo instalador (SolidWorks API SDK.msi).
48

Como se cuenta con el API SDK SolidWorks 2010 instalado, la ventana que aparece
es como la que se muestra en la Figura 2.8. Se escoge la opción Modify y luego se
presiona el botón Next para continuar.

Figura 2.8: Modificando la instalación.

6. Finalmente se escoge la plantilla de C#, como se muestra en la Figura 2.9, y con esto
concluye la instalación.

Figura 2.9: Seleccionando los complementos para ser instalados.


49

2.3. Diagrama básico de las clases de la API SDK SolidWorks

Cada tipo de documento de SolidWorks tiene su propia clase (IPartDoc, IDrawingDoc y


IAssemblyDoc) con su propio conjunto de funciones. Por ejemplo la función miembro
AddComponent4 que se encuentra definida en la clase IAssemblyDoc se encarga de agregar
un componente dentro del archivo de trabajo Ensamblaje.

La API SDK SolidWorks también tiene funciones que son comunes a todos los tipos de
documentos. Por ejemplo, funciones que permiten imprimir, guardar o determinar el nombre
asociado al archivo; para exponer un tipo de documento (Pieza, Dibujo y Ensamblaje) a las
funciones comunes, la API SDK SolidWorks utiliza la clase IModelDoc2.

A continuación se muestra el diagrama simplificado de clases de la API SDK SolidWorks:

Figura 2.10: Diagrama básico de las clases de la API SDK SolidWorks.

ISldWorks

IModelDoc2
IPartDoc IAssemblyDoc IDrawingDoc

IFeature

IAnnotation

IFeatMgrView

IModelView

IDimension

ISketchSegments

IDesign Table

IAttribute

ISelectionMgr

ILayerMgr

IConfiguration

IModelDocExtension

IConfigurationManager

IModelViewManager

ISketchManager

ISwOLEObject
50

2.4. Principales funciones de la API SDK SolidWorks para archivos tipo Pieza

Esta sección sólo se limitará a describir las principales funciones de la API SDK SolidWorks
para la creación de complementos de tipo Pieza, pues es conocido que SolidWorks trabaja
con 3 tipos de archivos: Pieza, Ensamblaje y Dibujo (ver Figura 2.11). Para una mayor
referencia acerca de las funciones de la API SDK SolidWorks se puede consultar la ayuda
que SolidWorks brinda sobre este tema.

Figura 2.11: Sı́mbolos de los diferentes tipos de archivos SolidWorks.

2.4.1. Función ISketchManager::CreatePoint


CreatePoint(X, Y, Z)

Permite dibujar un punto especificando sus coordenadas cartesianas.

Tabla 2.1: Descripción de la función CreatePoint.

Tipo de variable Nombre de variable Descripción


double X Coordenada x del punto (en metros)
double Y Coordenada y del punto (en metros)
double Z Coordenada z del punto (en metros)

Figura 2.12: Punto.


51

2.4.2. Función ISketchManager::CreateLine


CreateLine(XStart, YStart, ZStart, XEnd, YEnd, ZEnd)

Permite dibujar un lı́nea especificando las coordenadas de su punto inicial y su punto final.
Tabla 2.2: Descripción de la función CreateLine.

Tipo de variable Nombre de variable Descripción


double XStart Coordenada x del punto inicial (en metros)
double YStart Coordenada y del punto inicial (en metros)
double ZStart Coordenada z del punto inicial (en metros)
double XEnd Coordenada x del punto final (en metros)
double YEnd Coordenada y del punto final (en metros)
double ZEnd Coordenada z del punto final (en metros)

Figura 2.13: Lı́nea.

2.4.3. Función ISketchManager::CreateCircle


CreateCircle(Xc, Yc, Zc, Xp, Yp, Zp)

Esta función permite dibujar un cı́rculo, para ello se necesita la coordenada de su centro y
la coordenada de un punto que pertenece a dicha entidad geométrica. Los parámetros se
describen en la tabla 2.3.
Tabla 2.3: Descripción de la función CreateCircle.

Tipo de variable Nombre de variable Descripción


double Xc Coordenada x del centro del cı́rculo (en metros)
double Yc Coordenada y del centro del cı́rculo (en metros)
double Zc Coordenada z del centro del cı́rculo (en metros)
double Xp Coordenada x de un punto del cı́rculo (en metros)
double Yp Coordenada y de un punto del cı́rculo (en metros)
double Zp Coordenada z de un punto del cı́rculo (en metros)
52

Figura 2.14: Cı́rculo.

2.4.4. Función ISketchManager::CreateSpline


CreateSpline(PointData)

Crea un spline a partir de un conjunto de puntos.

Tabla 2.4: Descripción de la función CreateSpline.

Tipo de variable Nombre de variable Descripción


Array que contiene las coordenadas x, y y z de los
double PointData
puntos que conforman el spline

Figura 2.15: Spline.


53

2.4.5. Función ISketchManager::SketchPolygon


SketchPolygon(XCenter, YCenter, XEdge, YEdge, NSides, BInscribed)

Crea un polı́gono regular inscrito o circunscrito.


Tabla 2.5: Descripción de la función SketchPolygon.

Tipo de variable Nombre de variable Descripción


double XCenter Coordenada x del centro del polı́gono (en metros)
double YCenter Coordenada y del centro del polı́gono (en metros)
Coordenada x de un vértice/lado del polı́gono (en
double XEdge
metros)
Coordenada y de un vértice/lado del polı́gono (en
double YEdge
metros)
int NSides Número de lados del polı́gono
Si el valor es true dibuja un polı́gono inscrito,
bool BInscribed
false dibuja un polı́gono circunscrito

Figura 2.16: Polı́gono.

2.4.6. Función IModelDoc::ClearSelection2


ClearSelection2(All)

Se encarga de desactivar la selección a aquellos elementos que lo estén.


Tabla 2.6: Descripción de la función ClearSelection2.

Tipo de variable Nombre de variable Descripción


Si la opción es true limpia todas las entidades de
bool All la lista de selección, y si es false limpia solamente
las entidades activas en la lista de selección.
54

2.4.7. Función ISketchManager::SketchTrim


SketchTrim(Option, X, Y, Z)

Esta función permite recortar entidades geométricas.

Tabla 2.7: Descripción de la función SketchTrim.

Tipo de variable Nombre de variable Descripción


long Option Indica que tipo de corte se realizará (ver Tabla 2.8)
double X Coordenada x de la entidad geométrica a eliminar
double Y Coordenada y de la entidad geométrica a eliminar
double Z Coordenada z de la entidad geométrica a eliminar

Tabla 2.8: Opciones de corte para la variable Option.

Valor de la variable Nombre de variable Descripción


1 swSketchTrimCloset Recorte cercano
2 swSketchTrimCorner Recorte a esquina virtual
3 swSketchTrimTwoEntities Recorte a 2 entidades
4 swSketchTrimTwoEntityPoint Recorte a punto
5 swSketchTrimEntities Recorte a entidades
6 swSketchTrimOutside Recorte exterior
7 swSketchTrimINside Recorte interior

Los parámetros X, Y, y Z se definen solamente cuando se usa swSketchTrimClosest o


swSketchTrimEntityPoint. Para las demás opciones los valores que se emplean por defecto
son: 0.0, 0.0, y 0.0.

2.4.8. Función IFeatureManager::FeatureExtrusion2


FeatureExtrusion2(Sd, Flip, Dir, T1, T2, D1, D2, Dchk1, Dchk2, Ddir1, Ddir2, Dang1, Dang2,
OffsetReverse1, OffsetReverse2, TranslateSurface1, TranslateSurface2, Merge, UseFeatScope,
UseAutoSelect, T0, StartOffset, FlipStartOffset)

Esta función realiza una extrusión a partir de una curva cerrada.

Tabla 2.9: Descripción de la función FeatureExtrusion2.

Tipo de variable Nombre de variable Descripción


True para extruir en un sentido, false para extruir
bool Sd
en ambos sentidos
bool Flip True para cambiar la dirección de corte
bool Dir True para cambiar la dirección de extrusión
55

Tipo de terminación de la extrusión en la primera


int T1
dirección (ver Tabla 2.10)
Tipo de terminación de la extrusión en la segunda
int T2
dirección (ver Tabla 2.10)
Profundidad de extrusión en la primera dirección
double D1
(en metros)
Profundidad de extrusión en la segunda dirección
double D2
(en metros)
True permite introducir un ángulo de salida en la
bool Dchk1 primera dirección, false no introduce un ángulo de
salida en esa dirección
True permite introducir un ángulo de salida en la
bool Dchk2 segunda dirección, false no introduce un ángulo
de salida en esa dirección
True define un ángulo de salida hacia el interior
bool Ddir1 en la primera dirección, false define un ángulo de
salida hacı́a el exterior en la primera dirección
True define un ángulo de salida hacia el interior
bool Ddir2 en la segunda dirección, false define un ángulo de
salida hacı́a el exterior en la segunda dirección
double Dang1 Valor del ángulo de salida en la primera dirección
double Dang2 Valor del ángulo de salida en la segunda dirección
Si se escoge swEndCondOffsetFromSurface, en
el tipo de extrusión para la primera dirección,
entonces true especifica que la longitud de la
extrusión termina con una distancia uniforme
bool OffsetReverse1
hacı́a fuera de la superficie especificada, false
indica que la longitud de la extrusión termina
con una distancia uniforme hacı́a adentro de la
superficie especificada
Si se escoge swEndCondOffsetFromSurface, en
el tipo de extrusión para la segunda dirección,
entonces true especifica que la longitud de la
extrusión termina con una distancia uniforme
bool OffsetReverse2
hacı́a fuera de la superficie especificada, false
indica que la longitud de la extrusión termina
con una distancia uniforme hacı́a adentro de la
superficie especificada
Si se escoge swEndCondOffsetFromSurface, en
el tipo de extrusión para la primera dirección,
bool TranslateSurface1 entonces true indica que el final de la extrusión
adoptará la forma de la superficie, false desactiva
esta opción
Si se escoge swEndCondOffsetFromSurface, en
el tipo de extrusión para la segunda dirección,
bool TranslateSurface2 entonces true indica que el final de la extrusión
adoptará la forma de la superficie, false desactiva
esta opción
True combina los resultados en un multicuerpo,
bool Merge
false no lo hace
56

True si la extrusión sólo afecta a los cuerpos


bool UseFeatScope seleccionados o false si la extrusión afecta a todos
los cuerpos
True para seleccionar automáticamente todos los
cuerpos y de este modo la extrusión afecte a todos
bool UseAutoSelect
estos cuerpos, false para seleccionar los cuerpos
que van a ser afectados por la extrusión
int T0 Indica el inicio de la extrusión (ver Tabla 2.11)
Si se escogió la opción swStartOffset para T0,
double StartOffset entonces se debe especificar el valor de la
distancia de separación
Si se escogió la opción swStartOffset para T0,
bool FlipStartOffset true cambia la dirección o false para mantener la
dirección de la separación

Tabla 2.10: Tipos de extrusión definidos por la variable Option.

Valor de la variable Descripción


(int)swEndConditions e.swEndCondBlind Profundidad especificada
La longitud de la extrusión atraviesa todas las
(int)swEndConditions e.swEndCondThroughAll
entidades que en su dirección encuentre
La longitud de la extrusión queda limitada por la
(int)swEndConditions e.swEndCondThroughNext
inmediata entidad que interfiere en su dirección
La longitud de la extrusión es limitada hasta un
(int)swEndConditions e.swEndCondUpToVertex
vértice especı́fico
La longitud de la extrusión queda definida por una
(int)swEndConditions e.swEndCondUpToSurface
superficie especı́fica
La longitud de la extrusión queda limitada por una
(int)swEndConditions e.swEndCondOffsetFromSurface
distancia paralela a superficie especı́fica
La longitud de la extrusión se divide en partes
(int)swEndConditions e.swEndCondMidPlane
iguales respecto a un plano
Se emplea cuando se tienen multicuerpos que se
(int)swEndConditions e.swEndCondUpToBody
quieren conectar a través de la extrusión

Tabla 2.11: Tipos de inicio de la extrusión definidos por la variable Option.

Valor de la variable Descripción


Inicia la extrusión desde el plano que contiene al
(int)swStartConditions e.swStartSketchPlane
croquis
(int)swStartConditions e.swStartSurface Inicia la extrusión desde una superficie especı́fica
(int)swStartConditions e.swStartVertex Inicia la extrusión desde un vértice especı́fico
Inicia la extrusión desde un plano paralelo al plano
(int)swStartConditions e.swStartOffset
que contiene el croquis
57

Figura 2.17: Extrusión saliente.

2.4.9. Función IFeatureManager::FeatureCut


FeatureCut(Sd, Flip, Dir, T1, T2, D1, D2, Dchk1, Dchk2, Ddir1, Ddir2, Dang1, Dang2,
OffsetReverse1, OffsetReverse2, TranslateSurface1, TranslateSurface2, NormalCut,
UseFeatScope, UseAutoSelect)

Permite extruir un corte a partir de una curva cerrada.

Tabla 2.12: Descripción de la función FeatureCut.

Tipo de variable Nombre de variable Descripción


True para realizar el corte en un sentido, false para
bool Sd
cortar en ambas direcciones
True realiza el corte considerando lo que este fuera
bool Flip
del croquis, false no lo hace
bool Dir True para cambiar la dirección de corte
Tipo de terminación del corte en la primera
int T1
dirección (ver Tabla 2.10)
Tipo de terminación del corte en la segunda
int T2
dirección (ver Tabla 2.10)
Profundidad de corte en la primera dirección (en
double D1
metros)
Profundidad de corte en la segunda dirección (en
double D2
metros)
58

True permite introducir un ángulo de salida en la


bool Dchk1 primera dirección, false no introduce un ángulo de
salida en esa dirección
True permite introducir un ángulo de salida en la
bool Dchk2 segunda dirección, false no introduce un ángulo
de salida en esa dirección
True tener un ángulo de salida hacia el interior
bool Ddir1 de la primera dirección, false tener un ángulo de
salida hacia el exterior en la primera dirección
True tener un ángulo de salida hacia el interior
bool Ddir2 de la segunda dirección, false tener un ángulo de
salida hacia el exterior en la segunda dirección
double Dang1 Valor del ángulo de salida en la primera dirección
double Dang2 Valor del ángulo de salida en la segunda dirección
Si se escoge swEndCondOffsetFromSurface, en
el tipo de corte para la primera dirección,
entonces true especifica que la longitud de
corte termina con una distancia uniforme hacı́a
bool OffsetReverse1
fuera de la superficie especificada, false indica
que la longitud de corte termina con una
distancia uniforme hacı́a adentro de la superficie
especificada
Si se escoge swEndCondOffsetFromSurface, en
el tipo de corte para la segunda dirección,
entonces true especifica que la longitud de
corte termina con una distancia uniforme hacı́a
bool OffsetReverse2
fuera de la superficie especificada, false indica
que la longitud de corte termina con una
distancia uniforme hacı́a adentro de la superficie
especificada
Si se escoge swEndCondOffsetFromSurface, en el
tipo de corte para la primera dirección, entonces
bool TranslateSurface1
true indica que el final del corte adoptará la forma
de la superficie, false desactiva esta opción
Si se escoge swEndCondOffsetFromSurface, en el
tipo de corte para la segunda dirección, entonces
bool TranslateSurface2
true indica que el final del corte adoptará la forma
de la superficie, false desactiva esta opción
True asegura que el corte se crea normal al espesor
de la chapa, false no lo hace (este argumento sólo
bool NormalCut
es utilizado si se aplica a elementos de chapa
metálica)
True si el corte sólo afecta a los cuerpos
bool UseFeatScope seleccionados o false si el corte afecta a todos los
cuerpos
True para seleccionar automáticamente todos los
cuerpos y de este modo el corte afecte a todos
bool UseAutoSelect
ellos, false para seleccionar los cuerpos que van
a ser afectados por el corte
59

Figura 2.18: Extrusión corte.

2.4.10. Función IFeatureManager::FeatureRevolve


FeatureCut(Angle, ReverseDir, Angle2, RevType, Options, Merge, UseFeatScope, UseAutoSel)

Permite extruir por revolución una curva cerrada.

Tabla 2.13: Descripción de la función FeatureRevolve

Tipo de variable Nombre de variable Descripción


double Angle Ángulo de revolución, en radianes
bool ReverseDir True invierte la dirección de la revolución, false
no lo hace
double Angle2 Ángulo de revolución (sólo si se desea utilizar una
segunda dirección), en radianes
int RevType Tipo de revolución (ver Tabla 2.14)
int Options Parámetros adicionales (ver Tabla 2.15)
bool Merge True combina los resultados en un multicuerpo,
false no lo hace
bool UseFeatScope True si la extrusión por revolución sólo afecta a
los cuerpos seleccionados o false si la extrusión
por revolución afecta a todos los cuerpos
bool UseAutoSelect True para seleccionar automáticamente todos los
cuerpos y de este modo la extrusión por revolución
afecte a todos ellos, false para seleccionar los
cuerpos que van a ser afectados por la extrusión
por revolución
60

Tabla 2.14: Tipo de extrusión por revolución definida por la variable RevType.

Valor de la variable Descripción


Inicia la extrusión desde el
(int)swRevolveType e.swRevolveTypeOneDirection
plano que contiene al croquis
Inicia la extrusión desde una
(int)swRevolveType e.swRevolveTypeMidPlane
superficie especı́fica
Inicia la extrusión desde un
(int)swRevolveType e.swRevolveTypeTwoDirection
vértice especı́fico
Inicia la extrusión desde un
(int)swRevolveType e.swRevolveTypeOneDirection360Degrees plano paralelo al plano que
contiene al croquis
Inicia la extrusión desde un
(int)swRevolveType e.swRevolveTypeMidPlane360Degrees
vértice especı́fico
Inicia la extrusión desde un
(int)swRevolveType e.swRevolveTypeTwoDirection360Degrees plano paralelo al plano que
contiene al croquis

Tabla 2.15: Opciones adicionales definidas por la variable Option.

Valor de la variable Descripción


(int)swRevolveOptions e.swRevolveOptionsNone No se especifica alguna opción adicional
Si el croquis es abierto se convierte en un corquis
(int)swRevolveOptions e.swAutoCloseSketch
cerrado automáticamente

Figura 2.19: Extrusión por revolución.


61

2.4.11. Función IFeatureManager::FeatureRevolveCut2


FeatureRevolveCut2(Angle, ReverseDir, Angle2, RevType, Options)

Permite realizar un corte por revolución.

Tabla 2.16: Descripción de la función FeatureRevolveCut2

Tipo de variable Nombre de variable Descripción


double Angle Ángulo de corte por revolución, en radianes
True invierte la dirección del corte por revolución,
bool ReverseDir
false no lo hace
Ángulo de corte por revolución (sólo si se desea
double Angle2
utilizar una segunda dirección), en radianes
int RevType Tipo de corte por revolución (ver Tabla 2.14)
int Options Parámetros adicionales (ver Tabla 2.15)

Figura 2.20: Corte por revolución.

2.5. Usando la API SDK SolidWorks 2010 para documentos Pieza

A continuación se presentan varios ejemplos de cómo usar las funciones descritas en la


sección anterior. Pero antes es importante mencionar que esta sección sólo tiene carácter
demostrativo, esto servirá más adelante cuando se cree un proyecto para desarrollar un
complemento para SolidWorks, cuya explicación se realiza en la Sección 2.6 y en el Capı́tulo
3.
62

2.5.1. Cómo seleccionar un plano

1 string partTemplate = iSwApp.GetUserPreferenceStringValue((int)


swUserPreferenceStringValue_e.swDefaultTemplatePart);
2 IModelDoc2 modDoc = (IModelDoc2)iSwApp.NewDocument(partTemplate, (int)swDwgPaperSizes_e.
swDwgPaperA2size, 0.0, 0.0);
3
4 modDoc.Extension.SelectByID2("Alzado", "PLANE", 0.0, 0.0, 0.0, false, 0, null, 0);

En la lı́nea 1 se define una variable partTemplate de tipo string, la cual recibe la


cadena de caracteres que retorna la función miembro GetUserPreferenceStringValue, cuando
ésta tiene como parámetro el valor entero que indica que se empleará un documento de tipo
Pieza. La función miembro GetUserPreferenceStringValue pertenece al objeto iSwApp,
el cual es creado como un objeto de la clase ISldWorks, esta clase da acceso directo e
indirecto a todas las interfaces de trabajo de SolidWorks (Pieza, Ensamblaje y Dibujo), es
decir, dentro de la jerarquı́a de las clases de la API de SolidWorks es la de mayor nivel (ver
Sección 2.3).

La lı́nea 2 declara el objeto modDoc de la clase IModelDoc2, el cual se hace cargo


del entorno de trabajo Pieza. La clase IModelDoc2 permite acceder a los documentos
SolidWorks: Pieza, Ensamblaje y Dibujo; teniendo funciones miembro comunes a todos
los documentos como: imprimir, guardar o asociarle un nombre; además tiene funciones
miembro propias de cada documento como por ejemplo AddComponent4, que pertenece a
un documento de tipo Ensamblaje y que permite agregar componentes al ensamblaje.

Las lı́neas 1-2 son un equivalentes al procedimiento gráfico: abrir SolidWorks, dar click
sobre el botón Nuevo Documento y seleccionar el tipo de documento Pieza; lo cual trae
como consecuencia la apertura del entorno de trabajo (ver Figura 2.21). Ambas lı́neas se
repiten en cada ejemplo desarrollado en esta sección por lo que no se vuelven a comentar.

Figura 2.21: Secuencia gráfica para crear un nuevo documento Pieza.


63

En la lı́nea 4 se usa el objeto modDoc para seleccionar el plano frontal, dentro de los
parámetros de la función miembro SelectByID24 el segundo parámetro indica que tipo de
entidad se desea seleccionar, en ese caso al tratarse de un plano se especifica entre comillas
dobles la cadena PLANE y como primer parámetro se indica el nombre del plano, para este
caso el plano frontal el cual se especifica entre comillas con la cadena Alzado. El resultado
de la compilación se puede ver en la Figura 2.22.

Figura 2.22: Resultado de la compilación.

2.5.2. Cómo dibujar un cı́rculo


1 string partTemplate = iSwApp.GetUserPreferenceStringValue((int)
swUserPreferenceStringValue_e.swDefaultTemplatePart);
2 IModelDoc2 modDoc = (IModelDoc2)iSwApp.NewDocument(partTemplate, (int)swDwgPaperSizes_e.
swDwgPaperA2size, 0.0, 0.0);
3 ISketchManager swSketchMgr = modDoc.SketchManager;
4
5 modDoc.Extension.SelectByID2("Alzado", "PLANE", 0.0, 0.0, 0.0, false, 0, null, 0);
6 swSketchMgr.InsertSketch(true);
7 swSketchMgr.CreateCircle(0.0, 0.0, 0.0, 0.012, 0.0, 0.0);

Las lı́neas 1-2 se discutieron en la subsección anterior. La lı́nea 3 declara el objeto


swSketchMgr de la clase ISketchManager, la cual le habilita las funciones miembro
que permiten la creación y edición de croquis (Sketch), esto es equivalente a tomar control
de la barra de herramientas Croquis de SolidWorks (ver Figura 2.23).
4
Esta función miembro es importante en el proceso de modelación de cualquier tipo de pieza, por lo que se
recomienda consultar la ayuda de la API SDK de SolidWorks para mayor explicación.
64

El plano frontal es seleccionado en la lı́nea 5, a continuación se inserta un croquis en el plano


seleccionado (lı́nea 6). Finalmente se dibuja el croquis conformado por un cı́rculo de 12 mm
de radio. El resultado se puede observar en la Figura 2.24.

Figura 2.23: Barra de herramientas Croquis.

Figura 2.24: Resultado de la compilación.

2.5.3. Extruir saliente


1 string partTemplate = iSwApp.GetUserPreferenceStringValue((int)
swUserPreferenceStringValue_e.swDefaultTemplatePart);
2 IModelDoc2 modDoc = (IModelDoc2)iSwApp.NewDocument(partTemplate, (int)swDwgPaperSizes_e.
swDwgPaperA2size, 0.0, 0.0);
3 ISketchManager swSketchMgr = modDoc.SketchManager;
4 IFeatureManager featMan = modDoc.FeatureManager;
5
6 modDoc.Extension.SelectByID2("Alzado", "PLANE", 0.0, 0.0, 0.0, false, 0, null, 0);
7 swSketchMgr.InsertSketch2(true);
8 swSketchMgr.CreateCircle(0.0, 0.0, 0.0, 0.012, 0.0, 0.0);
9 featMan.FeatureExtrusion2(true, false, false, 0, 0, 0.1, 0.0, false, false, false,false,
0.0, 0.0, false, false, false, false, false, false, false, 0, 0.0, false);

En la lı́nea 4 se define el objeto featMan de la clase IFeatureManager, la cual le


atribuye todas las funciones miembro encargadas de realizar las operaciones de modelado
sólido, las mismas que se hacen con la barra de herramientas Operaciones de SolidWorks
(ver Figura 2.25). En la lı́nea 6 se selecciona el plano frontal, para luego insertar un croquis
el cual es un cı́rculo de 12 mm de radio. Finalmente en la lı́nea 8 se realiza la extrusión recta
en una dirección y con una distancia de extrusión de 100 mm.
65

Figura 2.25: Barra de herramientas Operaciones.

Figura 2.26: Resultado de la compilación.

2.5.4. Cómo dibujar un spline, definir un eje y extruir por revolución


1 string partTemplate = iSwApp.GetUserPreferenceStringValue((int)
swUserPreferenceStringValue_e.swDefaultTemplatePart);
2 IModelDoc2 modDoc = (IModelDoc2)iSwApp.NewDocument(partTemplate, (int)swDwgPaperSizes_e.
swDwgPaperA2size, 0.0, 0.0);
3 ISketchManager swSketchMgr = modDoc.SketchManager;
4 IFeatureManager featMan = modDoc.FeatureManager;
5
6 double[] point = new double[45];
7
8 point[0] = 0.0000; point[1] = 0.0000; point[2] = 0.0000;
9 point[3] = 0.0256; point[4] = 0.0000; point[5] = 0.0000;
10 point[6] = 0.0286; point[7] = 0.0078; point[8] = 0.0000;
11 point[9] = 0.0236; point[10] = 0.0287; point[11] = 0.0000;
12 point[12] = 0.0285; point[13] = 0.0629; point[14] = 0.0000;
13 point[15] = 0.0276; point[16] = 0.0657; point[17] = 0.0000;
14 point[18] = 0.0291; point[19] = 0.0880; point[20] = 0.0000;
15 point[21] = 0.0261; point[22] = 0.1059; point[23] = 0.0000;
16 point[24] = 0.0270; point[25] = 0.1088; point[26] = 0.0000;
17 point[27] = 0.0155; point[28] = 0.1426; point[29] = 0.0000;
18 point[30] = 0.0104; point[31] = 0.1580; point[32] = 0.0000;
19 point[33] = 0.0095; point[34] = 0.1724; point[35] = 0.0000;
20 point[36] = 0.0112; point[37] = 0.1768; point[38] = 0.0000;
21 point[39] = 0.0116; point[40] = 0.1811; point[41] = 0.0000;
22 point[42] = 0.0117; point[43] = 0.1849; point[44] = 0.0000;
23
24 modDoc.Extension.SelectByID2("Alzado", "PLANE", 0.0, 0.0, 0.0, false, 0, null, 0);
25 swSketchMgr.InsertSketch2(true);
66

26 swSketchMgr.CreateSpline(point);
27 swSketchMgr.CreateLine2(0.0, 0.0, 0.0, 0.0, 0.1849, 0.0);
28 swSketchMgr.CreateLine2(0.0, 0.1849, 0.0, 0.0117, 0.1849, 0.0);
29
30 modDoc.Extension.SelectByID2("Alzado", "PLANE", 0.0, 0.0, 0.0, false, 0, null, 0);
31 modDoc.Extension.SelectByID2("Vista lateral", "PLANE", 0.0, 0.0, 0.0, true, 4, null, 0);
32 modDoc.InsertAxis2(true);
33
34 modDoc.Extension.SelectByID2("Croquis1", "SKETCH", 0.0, 0.0, 0.0, false, 0, null, 0);
35 modDoc.Extension.SelectByID2("Eje1", "AXIS", 0.0, 0.0, 0.0, true, 4, null, 0);
36 featMan.FeatureRevolve(6.28318530718, false, 0.0, 0, 0, false, false, false);

En la lı́nea 6 se define un array unidimensional de 45 elementos llamado point de tipo


double, entre las lı́neas 8-22 se asignan valores a cada elemento del array los cuales
corresponden a 15 puntos en un sistema de coordenadas cartesianas (cada 3 elementos del
array corresponden a un punto).

En las lı́neas 6-20 se establecen los valores de cada punto que pertenece a la curva spline.
Luego se selecciona el plano frontal (lı́nea 22), que contendrá a la curva cerrada empleada
para la extrusión por revolución. El croquis cerrado está conformada por un spline, una lı́nea
horizontal y otra vertical como se aprecia en la Figura 2.27.

Figura 2.27: Croquis para extruir por revolución.

El spline se crea usando la función miembro CreateSpline con el objeto swSketchMgr,


el único parámetro que esta función recibe es el array que contiene las coordenadas de los
puntos (lı́nea 26). De igual forma empleando el objeto swSketchMgr se crean las 2 lı́neas,
ingresando las coordenadas cartesianas respectivas a la función miembro CreateLine2.

Para crear un eje en este caso se ha optado por el lugar geométrico que define la intersección
de 2 planos; la intersección de los planos frontal y lateral definen un segmento que es
convertido en un eje, en las lı́neas 30-31 son seleccionados ambos planos, luego el resultado
67

de la selección es definido como un eje empleando la función miembro InsertAxis2 del objeto
modDoc.

La extrusión por revolución se crea a partir de la selección previa del croquis generador y
del eje de giro, ambos elementos creados anteriormente. A continuación en las lı́neas 34-35,
se seleccionan ambos elementos de la misma forma en que fueron seleccionados los planos
empleados para definir el eje; indicándole a la función miembro SelectByID2 que elemento
se desea seleccionar (SKETCH y AXIS respectivamente). Finalmente, seleccionados los
elementos se emplea la función miembro FeatureRevolve para realizar la extrusión por
revolución con un ángulo de giro de 360◦ , pero especificado en radianes como primer
parámetro de esa función miembro.

Figura 2.28: Resultado de la compilación.

2.5.5. Corte por revolución y simetrı́a


1 string partTemplate = iSwApp.GetUserPreferenceStringValue((int)
swUserPreferenceStringValue_e.swDefaultTemplatePart);
2 IModelDoc2 modDoc = (IModelDoc2)iSwApp.NewDocument(partTemplate, (int)swDwgPaperSizes_e.
swDwgPaperA2size, 0.0, 0.0);
3 ISketchManager swSketchMgr = modDoc.SketchManager;
4 IFeatureManager featMan = modDoc.FeatureManager;
5
6 modDoc.Extension.SelectByID2("Alzado", "PLANE", 0.0, 0.0, 0.0, false, 0, null, 0);
7 modDoc.InsertSketch2(true);
8 swSketchMgr.SketchRectangle(-0.015, -0.015, 0, 0.015, 0.015, 0, false);
9 featMan.FeatureExtrusion2(false, false, false, 0, 0, 0.005, 0.005, false, false, false,
false, 0.0, 0.0, false, false, false, false, false, false, false, 0, 0.0, false);
10
68

11 modDoc.Extension.SelectByID2("", "FACE", 0.0, 0.0, 0.005, false, 0, null, 0);


12 modDoc.InsertSketch2(true);
13 swSketchMgr.CreateCircle2(0.01, 0.0, 0.0, 0.0075, 0.0, 0.0);
14
15 modDoc.Extension.SelectByID2("", "FACE", 0.0, 0.0, 0.005, false, 0, null, 0);
16 modDoc.Extension.SelectByID2("", "FACE", 0.015, 0.0, 0.0, true, 4, null, 0);
17 modDoc.InsertAxis2(true);
18
19 modDoc.Extension.SelectByID2("Croquis2", "SKETCH", 0.0, 0.0, 0.0, false, 0, null, 0);
20 modDoc.Extension.SelectByID2("Eje1", "AXIS", 0.0, 0.0, 0.0, true, 4, null, 0);
21 featMan.FeatureRevolveCut2(3.1416, false, 0.0, 0, 0);
22
23 modDoc.Extension.SelectByID2("Cortar-Revolución1", "BODYFEATURE", 0.0, 0.0, 0.0, false, 1,
null, 0);
24 modDoc.Extension.SelectByID2("Vista lateral", "PLANE", 0.0, 0.0, 0.0, true, 2, null, 0);
25 featMan.InsertMirrorFeature(false, false, true, false);
26 modDoc.ViewDispRefaxes();
27 modDoc.ForceRebuild3(true);

En las lı́neas 6-9 se extruye desde el plano frontal un rectángulo definido por dos puntos que
pertenecen a una de sus diagonales, la extrusión se realiza en ambos sentidos, con distancia
de 5 mm para ambos lados, haciendo uso de la función miembro FeatureExtrusion2 del
objeto featMan.

Entre las lı́neas 11-13 se crea un croquis constituido por un cı́rculo dibujado sobre la cara
delantera del sólido generado por la extrusión recta.

A continuación en las lı́neas 15-17 se crea un eje como resultado de la intersección de 2


caras del sólido; en la Figura 2.31 se aprecia que el segmento que se convierte en un eje
corresponde a una arista del sólido. Para realizarlo fue necesario emplear la función miembro
SelectByID2, seleccionando cada cara a través de la ubicación de un punto contenido en ella.
Luego a través de la función miembro InsertAxis2 queda definido el eje.

Figura 2.29: Croquis.


69

Figura 2.30: Croquis.

En las lı́neas 19-21 se crea un corte por revolución, para esto se seleccionan los 2 elementos
necesarios: el croquis y el eje de giro; la función miembro FeatureRevolveCut2 se encarga
de realizar la operación de corte por revolución, la cual recibe como principal parámetro el
ángulo de giro para el corte, siendo en este caso 360◦ (ver Figura 2.31).

Finalmente entre las lı́neas 23-25 se realiza una simetrı́a de la operación de corte por
revolución, para ello se necesita seleccionar la operación y el plano que servirá como
referencia para la simetrı́a. El resultado final se muestra en la Figura 2.32
Figura 2.31: Eje de revolución.
70

Figura 2.32: Resultado de la compilación.

2.5.6. Cómo realizar una simetrı́a lineal, simetrı́a circular y un vaciado


1 string partTemplate = iSwApp.GetUserPreferenceStringValue((int)
swUserPreferenceStringValue_e.swDefaultTemplatePart);
2 IModelDoc2 modDoc = (IModelDoc2)iSwApp.NewDocument(partTemplate, (int)swDwgPaperSizes_e.
swDwgPaperA2size, 0.0, 0.0);
3 ISketchManager swSketchMgr = modDoc.SketchManager;
4 IFeatureManager featMan = modDoc.FeatureManager;
5
6 modDoc.Extension.SelectByID2("Alzado", "PLANE", 0.0, 0.0, 0.0, false, 0, null, (int)
swSelectOption_e.swSelectOptionDefault);
7 modDoc.InsertSketch2(true);
8 swSketchMgr.CreateLine(0.015, 0.0, 0.0, 0.0, 0.0, 0.0);
9 swSketchMgr.CreateLine(0.0, 0.0, 0.0, 0.0, 0.1, 0.0);
10 swSketchMgr.CreateLine(0.0, 0.1, 0.0, 0.03, 0.1, 0.0);
11 swSketchMgr.CreateLine(0.03, 0.1, 0.0, 0.03, 0.05, 0.0);
12 swSketchMgr.CreateLine(0.03, 0.05, 0.0, 0.015, 0.0, 0.0);
13 modDoc.Extension.SelectByID2("Lı́nea4", "SKETCHSEGMENT", 0.0, 0.0, 0.0, false, 0, null, (int
)swSelectOption_e.swSelectOptionDefault);
14 modDoc.Extension.SelectByID2("Lı́nea5", "SKETCHSEGMENT", 0.0, 0.0, 0.0, true, 4, null, (int)
swSelectOption_e.swSelectOptionDefault);
15 modDoc.SketchFillet2(0.03, 0);
16
17 modDoc.Extension.SelectByID2("Alzado", "PLANE", 0.0, 0.0, 0.0, false, 0, null, (int)
swSelectOption_e.swSelectOptionDefault);
18 modDoc.Extension.SelectByID2("Vista lateral", "PLANE", 0.0, 0.0, 0.0, true, 4, null, (int)
swSelectOption_e.swSelectOptionDefault);
19 modDoc.InsertAxis2(true);
20
21 modDoc.Extension.SelectByID2("Croquis1", "SKETCH", 0.0, 0.0, 0.0, false, 0, null, (int)
swSelectOption_e.swSelectOptionDefault);
22 modDoc.Extension.SelectByID2("Eje1", "AXIS", 0.0, 0.0, 0.0, true, 4, null, (int)
swSelectOption_e.swSelectOptionDefault);
71

23 featMan.FeatureRevolve(6.28318530718, false, 0.0, 0, 0, false, false, false);


24 modDoc.ClearSelection2(true);
25
26 modDoc.Extension.SelectByID2("Planta", "PLANE", 0.0, 0.0, 0.0, false, 0, null, (int)
swSelectOption_e.swSelectOptionDefault);
27 modDoc.CreatePlaneAtOffset3(0.1, false, true);
28
29 modDoc.Extension.SelectByID2("Plano1", "PLANE", 0.0, 0.0, 0.0, false, 0, null, (int)
swSelectOption_e.swSelectOptionDefault);
30 modDoc.InsertSketch2(true);
31 swSketchMgr.CreateCircle(0.0, 0.0, 0.0, 0.028, 0.0, 0.0);
32 swSketchMgr.CreateCircle(0.0, 0.0, 0.0, 0.025, 0.0, 0.0);
33 featMan.FeatureExtrusion2(true, false, false, 0, 0, 0.005, 0.0, false, false, false, false,
0.0, 0.0, false, false, false, false, true, false, false, 0, 0.0, false);
34
35 modDoc.Extension.SelectByID2("", "FACE", 0.0, 0.1, 0.0, true, 0, null, (int)
swSelectOption_e.swSelectOptionDefault);
36 modDoc.InsertFeatureShell(0.003, false);
37
38 modDoc.Extension.SelectByID2("Alzado", "PLANE", 0.0, 0.0, 0.0, false, 0, null, (int)
swSelectOption_e.swSelectOptionDefault);
39 swSketchMgr.CreateSketchSlot((int)swSketchSlotCreationType_e.swSketchSlotCreationType_line,
(int)swSketchSlotLengthType_e.swSketchSlotLengthType_CenterCenter, 0.005, -0.005,
0.06, 0, 0.005, 0.06, 0, 0, 0.06, 0, 1, false);
40 featMan.FeatureCut3(true, false, false, 0, 0, 0.03, 0.0, false, false, false, false, 0.0,
0.0, false, false, false, false, false, false, false, false, false, false, 0, 0.0,
false);
41 modDoc.ClearSelection2(false);
42
43 modDoc.Extension.SelectByID2("Cortar-Extruir1", "BODYFEATURE", 0.0, 0.0, 0.0, false, 4,
null, (int)swSelectOption_e.swSelectOptionDefault);
44 modDoc.Extension.SelectByID2("Eje1", "AXIS", 0.0, 0.0, 0.0, true, 1, null, (int)
swSelectOption_e.swSelectOptionDefault);
45 featMan.FeatureLinearPattern2(4, 0.01, 1, 0.0, true, false, "NULL", "NULL", false);
46
47 modDoc.Extension.SelectByID2("Cortar-Extruir1", "BODYFEATURE", 0.0, 0.0, 0.0, false, 4,
null, (int)swSelectOption_e.swSelectOptionDefault);
48 modDoc.Extension.SelectByID2("MatrizL1", "BODYFEATURE", 0.0, 0.0, 0.0, true, 4, null, (int)
swSelectOption_e.swSelectOptionDefault);
49 modDoc.Extension.SelectByID2("Eje1", "AXIS", 0.0, 0.0, 0.0, true, 1, null, (int)
swSelectOption_e.swSelectOptionDefault);
50 featMan.FeatureCircularPattern2(3, 2 * Math.PI / 3, false, "NULL", false);
51 modDoc.ForceRebuild3(true);

El procedimiento se puede seguir empleando como ayuda la Figura 2.33. En la lı́nea 6


se selecciona el plano frontal para luego insertar un croquis que está conformado por 5
segmentos, definidos en las lı́neas 8-12.

Las lı́neas 13-14 seleccionan 2 segmentos, en cuya intersección se le da un borde redondeado


con ayuda de la función miembro SketchFillet2 (el radio de redondeo es de 30 mm). En las
lı́neas 17-19 se define un eje a través de la intersección de los planos frontal y lateral; luego se
selecciona el croquis y el eje definidos anteriormente para realizar la operación de extrusión
por revolución (lı́nea 23) con un ángulo de giro de 360◦ .

En las lı́neas 26-27 se crea un plano paralelo a 100 mm del plano frontal, usando la función
miembro CreatePlaneAtOffset3.
72

Figura 2.33: Secuencia de modelación de la pieza.


73

La lı́nea 29 selecciona el plano creado, denominado por defecto con el nombre de Plano1;
sobre el plano se dibuja un croquis que está conformado por dos cı́rculos concéntricos, de
manera tal que el área a extruir en un sólo sentido (lı́nea 33) corresponde al anillo que definen
ambos cı́rculos.

Para realizar la operación vaciado se selecciona la cara del sólido que será eliminada,
mientras que las otras tendrán un espesor uniforme de 3 mm (lı́neas 35-36).

Entre las lı́neas 38-41 se realiza un corte empleando como croquis una ranura recta, esta
operación del menú Croquis fue habilitada desde la versión 2009, para definirla se emplean
3 puntos; dos de ellos para definir su longitud y dirección, y el tercero para indicar el ancho
(lı́nea 39).

Luego en las lı́neas 43-45 se realiza un patrón lineal, reproduciendo el corte 4 veces y
espaciando cada copia 10 mm. Finalmente, en las lı́neas 47-51 se realiza un patrón circular
a través de la función miembro FeatureCircularPattern2; el patrón circular realiza una copia
del corte ası́ como del patrón lineal, reproduciéndolos 3 veces con espaciamientos iguales.

2.6. Cómo crear un proyecto

1. Cuando se ejecute Microsoft Visual Studio 2005, y sólo si se ha configurado


previamente, abrirá el entorno de desarrollo de Visual Studio C#.
Al crear un proyecto nuevo (File, New Project. . .) se puede observar que en la lista
de proyectos de Visual Studio C# se encuentra SwCSharpAddin, lo que significa que
la instalación del API SDK SolidWorks ha sido satisfactoria; con este tipo de proyecto
se podran crear complementos para SolidWorks.

Figura 2.34: Plantilla SwCSharpAddin dentro de la lista de proyectos de Visual C#.


74

Como se aprecia en la Figura 2.34 Visual Studio C# se encuentra en la categorı́a


Other Languages, ya que el entorno configurado para que abra por defecto al ejecutar
Microsoft Visual Studio 2005 ha sido Visual Studio C++.

2. Cuando se selecciona un tipo de proyecto, en este caso SwCSharpAddin, se tiene que


asignar un nombre y una ubicación al proyecto.

Figura 2.35: Asignando un nombre y una ubicación al proyecto.

3. En el diálogo Solution Explorer de Visual Studio C# se pueden observar todos los


archivos asociados al proyecto que han sido creados por defecto (ver Figura 2.36). Por
el momento no se modificará ninguno de estos archivos; el siguiente paso es compilar
y ejecutar el proyecto para observar cuál es el resultado. Para compilar el proyecto se
ingresa al menú Build y luego se ejecuta Build Solution, o simplemente presionando
la techa F7. Finalizada la compilación se tiene que ejecutar, para ello se ingresa al
menú Debug y luego se ejecuta la opción Start Without Debugging o Ctrl+F5.

4. Luego de modo automático se abre SolidWorks, en este caso la versión 2010.


Sólo si el complemento no se ha adjuntado al menú principal se puede agregar
ingresando al menú Herramientas, luego escoger la opción Complementos, la cual
despliega un diálogo con el mismo nombre, aquı́ se listan diversas aplicaciones que
se pueden emplear en SolidWorks. Al final de la lista, dentro de la categorı́a Otros
Complementos, se puede encontrar el complemento que le corresponde al proyecto
que se ha creado. Para activarlo se asigna un check delante del nombre y luego se
acepta (ver Figura 2.37), el check al final indica que cada vez que SolidWorks sea
ejecutado el complemento se cargará automáticamente.
75

Figura 2.36: Diálogo Solution Explorer.

Figura 2.37: Diálogo Complementos.


76

En el menú principal de SolidWorks aparece el menú C# Addin, el cual contiene un


comando llamado CreateCube (ver Figura 2.38). Tanto el menú C# Addin como el
comando CreateCube son el resultado de ejecutar el proyecto, cuya plantilla generada
por defecto contiene la implementación de estas opciones, esto se verá en el siguiente
capı́tulo.

Figura 2.38: Menú C# Addin.

5. Al ejecutar el comando CreateCube se dibujará un cubo dentro del entorno Pieza de


SolidWorks (ver Figura 2.39).

Figura 2.39: Cubo, resultado de ejecutar CreateCube.

En el siguiente capı́tulo se detallan los procedimientos que se han seguido para implementar
un complemento, en este caso el complemento Engranajes UDEP.

También podría gustarte