Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programando para Autocad Con Vba - 1 PDF
Programando para Autocad Con Vba - 1 PDF
MONOGRAFA
Noviembre, 2006
TABLA DE CONTENIDO
Captulo 1 Conceptos Generales .................................................................. 1
1.1 Por qu Visual Basic for Applications? ................................................ 1
1.2 Comparacin con otras herramientas ................................................... 2
1.3 Limitaciones de VBA ............................................................................. 4
1.4 Proyectos .............................................................................................. 6
1.5 Macros .................................................................................................. 6
Preguntas ....................................................................................................... 8
Captulo 2 El Entorno de Desarrollo Integrado ............................................ 9
2.1 Descripcin general ............................................................................... 9
2.2 Ventana principal ................................................................................. 10
2.3 Ventana de proyectos (Explorador de Proyectos) ............................... 11
2.4 Ventana de propiedades ..................................................................... 12
2.5 Ventana de cdigo . ............................................................................. 12
2.6 Ventana de formulario ......................................................................... 13
2.7 Personalizacin del IDE ...................................................................... 14
Ejemplo resuelto .......................................................................................... 17
Preguntas y ejercicios propuestos ............................................................... 20
Captulo 3 Estructuras Bsicas del Lenguaje VBA ................................... 21
3.1 Introduccin ......................................................................................... 21
3.2 Comentarios y otras utilidades bsicas ............................................... 21
3.3 Proyectos y mdulos ........................................................................... 22
3.4 Variables y constantes ........................................................................ 22
3.5 Funciones y procedimientos ................................................................ 25
3.6 mbito de las subrutinas y variables ................................................... 26
3.7 Arreglos ............................................................................................... 27
3.8 Operadores ......................................................................................... 27
3.9 Estructuras condicionales ................................................................... 28
3.10 Estructuras repetitivas ....................................................................... 30
Ejemplo resuelto .......................................................................................... 31
Preguntas y ejercicios propuestos ............................................................... 35
Captulo 4 Fundamentos de Automatizacin ActiveX ............................... 36
4.1 Introduccin ......................................................................................... 36
4.2 El modelo de objetos de AutoCAD ...................................................... 37
4.3 Colecciones ......................................................................................... 40
4.4 Propiedades y mtodos ....................................................................... 41
Ejemplo resuelto .......................................................................................... 42
Preguntas y ejercicios propuestos ............................................................... 43
- ii
- iii
CAPTULO 1
Conceptos Generales
OBJETIVOS
Comparar VBA con otras herramientas de personalizacin de AutoCAD y con el
Visual Basic estndar, considerando sus ventajas y desventajas.
Describir las caractersticas de los proyectos y macros de Visual Basic for
Applications en AutoCAD.
-1-
sus creadores. Desde su inclusin en AutoCAD, VBA comenz a ganar popularidad entre
los desarrolladores de aplicaciones para este sistema.
VBA surgi a partir del Visual Basic estndar, de quien hered la mayora de sus
caractersticas. No obstante, VBA tiene algunas diferencias con su progenitor, siendo la
ms importante el ser un lenguaje interpretado, mientras que Visual Basic es capaz de
compilar los proyectos en un archivo ejecutable. Tambin poseen algunas diferencias de
sintaxis y comportamiento, pero son insignificantes.
Gracias a su entorno de desarrollo integrado (Integrated Development Environment,
IDE), VBA permite desarrollar aplicaciones con gran rapidez, controlando, desde la
propia etapa de diseo, el ambiente de las diversas ventanas del programa. Adems,
Visual Basic es un lenguaje muy fcil de aprender y utilizar.
VBA permite tambin la integracin con otras aplicaciones que admiten VBA. Lo que
significa que AutoCAD puede, mediante las bibliotecas de objetos de otras aplicaciones,
funcionar como controlador de automatizacin de otras aplicaciones como Microsoft
Word o Excel.
Por ltimo, es bueno sealar que VBA se ejecuta en el mismo espacio de proceso que
AutoCAD lo que redunda en una ganancia en la velocidad de ejecucin.
-3-
El DIESEL puede ser usado en los mens como un lenguaje de macros del mismo modo
que AutoLISP. Las expresiones DIESEL toman cadenas de caracteres como argumento y
las devuelven como resultado. Estas cadenas pueden ser evaluadas por AutoLISP
mediante la funcin menucdm. A diferencia de AutoLISP, DIESEL consiste nicamente
en funciones y no emplea variables.
SQL.
El Lenguaje de Consultas Estructurado (Structured Query Language, SQL) permite
acceder a la informacin almacenada en sistemas de bases de datos. Mediante SQL,
AutoCAD puede asociar atributos no grficos almacenados en bases de datos externas
(tales como dBASE III, Oracle y Microsoft Access) con objetos grficos en el dibujo. El
uso de bases de datos externas para almacenar los atributos del dibujo permite reducir el
tamao de los dibujos, simplificar la generacin de reportes, y editar con facilidad los
datos externos.
1.4 Proyectos.
Uno de los conceptos bsicos de la programacin con VBA es el proyecto, que no es ms
que una coleccin de formularios, mdulos de cdigo y mdulos de clase, que trabajan en
conjunto para realizar una funcin determinada. En AutoCAD, a diferencia de la mayora
de las aplicaciones, los proyectos pueden almacenarse en el propio archivo del dibujo
(proyectos incrustados) o en un archivo separado (proyectos globales).
-4-
Los proyectos incrustados se cargan de forma automtica al abrir el archivo que los
contiene, por lo que son muy fciles de distribuir y de utilizar. Sin embargo, estos
proyectos tienen algunas desventajas, ya que no son capaces de abrir o cerrar documentos
por estar limitada su funcionalidad al archivo que lo contiene.
Los proyectos globales, en cambio, no slo permiten trabajar con un dibujo, sino tambin
abrirlo o cerrarlo. No obstante, deben ser cargados manualmente cuando se van a
ejecutar, de modo que el usuario debe conocer el nombre del archivo que lo contiene y su
ubicacin. A pesar de sus desventajas, los proyectos globales constituyen un medio
excelente para almacenar bibliotecas de subprogramas.
-5-
Para crear un proyecto nuevo, una vez abierto el VBA Manager, se pulsa el botn New.
Esta accin hace que se agregue un nuevo proyecto global a la lista de proyectos
cargados. El botn Embed permite incrustar el proyecto seleccionado.
Mediante el botn Save as... es posible guardar el proyecto seleccionado, en un archivo
determinado. Los botones Load y Unload permiten, respectivamente, cargar y
descargar proyectos.
Aunque los proyectos de VBA para AutoCAD no son compatibles con el Visual Basic
estndar, sus formularios, mdulos de cdigo y de clase pueden ser exportados e
importados para utilizarlos en Visual Basic.
Los proyectos en VBA estn compuestos por mdulos que se clasifican en tres tipos:
Formularios: Contienen cada uno de los cuadros de dilogo (ventanas) de la
aplicacin con todos sus controles y la programacin correspondiente a ellos.
Mdulos de Cdigo: Contienen definiciones de variables globales y cdigo
accesible desde cualquier parte de la aplicacin.
Mdulos de Clase: Contienen definiciones de clases de objetos con las
correspondientes mtodos y propiedades.
1.5 Macros.
Para el profano, las macros tienen un cierto significado lleno de misterio y peligro. De
vez en cuando, al abrir un documento de Word o un libro de Excel, se muestra un cuadro
de dilogo que dice: El archivo que se desea abrir contiene macros. Las macros pueden
contener virus. Siempre es ms seguro deshabilitar las macros, pero si las macros son
legtimas deshabilitndolas puede perder ciertas funcionalidades, dejando al pobre
usuario en un grado de perplejidad similar al de Hamlet con su to be or not to be.
Afortunadamente, siempre hay un alma caritativa cerca que dice: presiona el botn
Deshabilitar macros y sigue trabajando, que eso no sirve para nada.
No obstante, si las macros no sirvieran para nada, no existiran. Si bien es verdad que las
macros pueden ser un arma peligrosa en manos malintencionadas, en poder de un usuario
conocedor y responsable son una herramienta maravillosa, que permite un ahorro
sustancial de tiempo y esfuerzo.
Pero bueno: qu son las macros? Las macros no son ms que subprogramas que pueden
ejecutarse desde una aplicacin (Word, Excel, AutoCAD...), para realizar determinada
funcin. Por ejemplo, se desea dibujar perfiles de vigas doble T en AutoCAD (como se
sabe estas vigas estn normalizadas). Si slo necesitamos dibujar una viga, una sola vez,
buscamos el catlogo o la norma, extraemos las dimensiones de nuestro perfil y luego
dibujamos, una a una, las entidades (lneas, arcos, etc.) que conforman el perfil.
-6-
En cambio, si se tiene que desarrollar un proyecto donde hay que dibujar varios cientos
de vigas de diferentes tipos, es preferible escribir una macro que acceda a una base de
datos donde estn las caractersticas geomtricas de las vigas y que una vez seleccionado
el tipo deseado, lo dibuje de forma automtica. Por supuesto, esto supone el trabajo
adicional de programar la macro y, posiblemente, crear la base de datos, pero al final el
tiempo que ahorra cada vez que se dibuja un perfil, recompensa el esfuerzo invertido.
-7-
referencia al inicio del epgrafe, para advertir sobre la posible presencia de virus en las
macros.
Preguntas.
1. Qu importancia tiene Visual Basic for Applications dentro de AutoCAD?
2. Qu ventajas y desventajas tiene VBA frente a AutoLISP? Y frente a ARX?
3. Qu es un proyecto de VBA?
4. Qu diferencias hay entre un proyecto global y uno incrustado?
5. Qu es una macro? Ponga ejemplos de caso donde considere adecuado utilizar
macros de VBA para AutoCAD?
-8-
CAPTULO 2
El Entorno de Desarrollo Integrado
OBJETIVO
Describir las caractersticas generales del Entorno de Desarrollo Integrado de
VBA, detallando el uso de cada una de sus ventanas principales.
-9-
En los siguientes tpicos se explicarn los detalles de cada una de estas ventanas y de los
elementos que las componen.
- 10 -
- 11 -
- 12 -
- 13 -
como arrastrar a ellos los controles necesarios, desde la Caja de Herramientas, y luego,
modificar sus propiedades, hasta lograr el aspecto y el comportamiento deseados.
- 14 -
Colores del cdigo (Code Color): Determina el color de primer plano, de fondo y
del indicador de margen de cada uno de los tipos de texto mostrado en la lista.
Fuente (Font): Especifica el nombre de la fuente utilizada para todo el cdigo.
Tamao (Size): Especifica la altura de la fuente usada para el cdigo.
Barra indicadora al margen (Margin Indicator Bar): Muestra u oculta la Barra de
Margen de la Ventana de Cdigo.
Ejemplo (Sample): Muestra ejemplo de cada texto seleccionado.
General.
En ella se especifican la configuracin, la manipulacin de errores y las opciones de
compilacin para el proyecto de Visual Basic actual. Incluye:
Configuracin de la Rejilla de Formulario (Form Grid Settings): Determina la apariencia
de la rejilla del formulario durante el proceso de edicin mediante las opciones:
Mostrar cuadrcula (Show Grid): Muestra u oculta la cuadrcula.
Unidades de la cuadrcula (Grid Units): Muestra las unidades de medida utilizada
para medir la separacin entre los nodos de la cuadrcula.
- 15 -
- 16 -
Acople (Docking).
Permite seleccionar que ventanas van a ser acoplables. Una ventana es acoplable cuando
se adjunta o ancla a un borde de otra ventana acoplable o de la aplicacin. Cuando se
mueve una ventana acoplable, esta captura su ubicacin. Si la ventana no es acoplable,
es posible moverla por toda la aplicacin y dejarla en cualquier sitio.
Ejemplo Resuelto.
Para ilustrar el uso del IDE de AutoCAD, y para ir viendo algn resultado positivo del
curso, se pasar a elaborar una primera macro en VBA para AutoCAD. Naturalmente,
esta ser muy simple, con fin puramente didctico.
El objetivo de esta macro ser enviar un mensaje a la pantalla (por supuesto, para que lo
lea el usuario). Para ello se emplear la funcin de VBA MsgBox. Se ver, paso a paso,
el proceso de creacin de la macro.
En primer lugar, en la ventana de comandos de AutoCAD se teclea el comando VBAMAN
que, como ya se vio, muestra el administrador de proyectos (ver Fig. 1.1). ste debe
mostrar una listado de proyectos vaco. Para agregar el nuevo proyecto, se presiona el
botn New; esto trae como consecuencia que un proyecto llamado ACADProject, de
tipo global, sea creado y agregado a la lista.
El siguiente paso consiste en guardar el proyecto que recin se ha creado. Para ello se
selecciona el nombre del proyecto de la lista y luego se presiona el botn Save as.... En
el cuadro de dilogo de guardar que aparecer se establece la ubicacin y el nombre que
se quiere dar al archivo que contenga el proyecto.
Una vez guardado el archivo del proyecto, se pasa a abrir el IDE de VBA, para lo cual se
puede presionar el botn Visual Basic Editor del propio administrador de proyectos.
Esto abre el editor, el cual aparecer en pantalla y como una aplicacin ms en la barra de
tareas. Dentro de la ventana de proyecto, aparecer solamente el que hemos creado (ver
Fig. 2.7).
- 17 -
- 18 -
- 19 -
- 20 -
CAPTULO 3
Estructuras Bsicas del Lenguaje VBA
OBJETIVO
Utilizar las estructuras bsicas del lenguaje Visual Basic for Applications para
desarrollar subprogramas.
3.1 Introduccin.
Aunque este libro no pretende ser un manual de Visual Basic, est claro que una
comprensin bsica de las principales estructuras de este lenguaje es una premisa para
desarrollar buenos programas. Como se ha presumido que el lector no est previamente
familiarizado con Visual Basic (o con cualquier otro lenguaje de programacin), se
dedicar este captulo para explicar los conceptos elementales de este lenguaje, ilustrando
la explicacin con ejemplos. Naturalmente, no se pretende que tras leer un par de pginas
el lector sea un consumado programador; si al final del mismo, es capaz de utilizar Visual
Basic para crear subprogramas en AutoCAD que le permitan automatizar su trabajo, el
objetivo habr sido cumplido.
Tambin es posible escribir varias sentencias en una misma lnea, separndolas por dos
puntos (:), de la forma:
- 21 -
A = 5: B = 8: C = A + B
Lo anterior sera equivalente a:
A = 5
B = 8
C = A + B
Boolean (booleano): Representa variables que slo pueden tomar dos valores
(verdadero falso, s no, 0 1). Se almacena en dos bytes de memoria. Se
puede usar para representar, por ejemplo, el estado de una vlvula (abierto
cerrado) o el estado de un indicador de seguridad (encendido apagado).
- 22 -
que existen en una red de tuberas. Puede tomar valores entre 32 768 y 32 767 y
se almacena en dos bytes (16 bits) de memoria.
Byte: Es otro tipo de datos para representar valores numricos enteros, pero slo
en el rango de 0 a 255. Se almacenan en un solo byte.
- 23 -
Como se puede ver, el tipo de dato de la constante puede omitirse, pero en este caso no
hay garanta de que Visual Basic utilice el tipo de datos ms eficiente. A continuacin se
muestran algunos ejemplos de declaracin de constantes:
- 24 -
Const
Const
Const
Const
PI As Double = 3.1416
CantidadEmpleados As Integer = 1251
DensidadAcero As Single = 7.83
NombreAutor As String = "Ramn Quiza Sardias"
- 25 -
- 26 -
3.7 Arreglos.
Los arreglos son estructuras que permiten hacer referencia a varios valores mediante un
mismo nombre. Para referirse a un elemento especfico dentro del conjunto se utilizan
uno o ms ndices. El concepto de arreglo dentro de los lenguajes de programacin es
similar a los de vector o matriz, en lgebra.
Todos los elementos de un arreglo deben ser de un mismo tipo de datos. Por supuesto, si
el tipo dato del arreglo es Variant, entonces puede contener diversos tipos de datos.
Los arreglos pueden ser estticos o dinmicos. Los primeros contienen un nmero fijo de
elementos, establecido en su declaracin. Por ejemplo, la instruccin
Dim Nombres(0 To 9) As String
declara un arreglo llamado Nombres, que puede contener 10 valores de tipo String, a
los cuales se les puede referir como Nombres(0), Nombres(1)... Nombres(9).
A los arreglos dinmicos no se les predetermina el tamao durante la declaracin, sino
que se le establece posteriormente con la instruccin Redim. Por ejemplo:
Dim Nombres() As String
ReDim Nombres(0 To 2)
Nombres(0) = "Paco"
Nombres(1) = "Cuca"
Nombres(2) = "Cheo"
Los arreglos dinmicos son especialmente tiles cuando no conocemos de antemano el
tamao del arreglo.
3.8 Operadores.
Los operadores son elementos que realizan una accin determinada (operacin) sobre una
o ms variables. En Visual Basic existen diferentes tipos de operadores. En la Tabla 3.1,
se muestra un resumen de los mismos, con ejemplos de su aplicacin:
- 27 -
Ejemplo
A + B
A - B
A * B
A / B
A \ B
A Mod B
- A
A ^ B
A & B
A Like B
A = B
A <> B
A < B
A > B
A <= B
A >= B
Not A
A And B
A Or B
A Xor B
Estos no son los nicos operadores de que dispone Visual Basic, pero s los ms usados.
Para ver todos los operadores puede consultar la ayuda de VBA donde se da una
excelente explicacin de los mismos.
- 28 -
If (<Condicion>) Then
<InstruccionesPositivas>
Else
<InstruccionesNegativas>
End If
Por ejemplo, la condicin sobre el nmero de Reynolds podr quedar de la forma:
If (Re > 500000) Then
Regimen = "Laminar"
Nu = 0.032 * Re ^ 0.8
Else
Regimen = "Turbulento"
Nu = 0.67 * Re ^ 0.5 * Pr ^ 0.333
End If
Las condiciones pueden hacerse ms complejas, combinando varias condiciones mediante
operadores lgicos. En el siguiente ejemplo, la condicin se satisface slo si la seccin
transversal del conducto es circular y el nmero de Reynolds es mayor que 5105:
If ((Seccion Like "Circular") And (Re > 500000)) Then
La parte negativa de la estructura puede ser omitida, tal como muestra el siguiente
ejemplo:
If (Presion > PresionLimite) Then
MsgBox "La presin ha alcanzado el valor lmite", _
vbCritical, "Alerta Crtica"
Abrir_Valvula_Seguridad
End If
Por ltimo, existe la palabra clave ElseIf que permite evaluar otra condicin en caso
de que la primera no sea satisfecha. En el siguiente ejemplo se ilustra su uso:
If (Figura Like "Cuadrado") Then
Area = Arista ^ 2
ElseIf (Figura Like "Circulo") Then
Area = 3.1416 * Radio ^ 2
ElseIf (Figura Like "Elispe") Then
Area = 3.1416 * SemiejeA * SemiejeB
Else
MsgBox "Figura desconocida"
End If
Existen otras estructuras condicionales como Select Case, pero por su uso menor no
se cubren en este material. El usuario interesado puede consultar la ayuda de VBA o un
manual especializado.
- 29 -
- 30 -
Ejemplo Resuelto.
A modo de ejemplo, se har una macro que permita calcular el volumen de tornillos, de
tres tipos diferentes: de hexgono embutido (Allen), de cabeza hexagonal y de cabeza
cilndrica (ver Fig. 3.1).
Para cada una de los tipos, se establecen las dimensiones D, H, L y M, tal como puede
verse en la propia figura.
Un paso previo, muy importante, para desarrollar cualquier programa de computacin es
establecer su algoritmo. Para el problema considerado, el algoritmo en forma grfica se
muestra en la Fig. 3.2. Como se puede observar, hay tres tomas de decisiones, para
realizar los clculos correspondientes a cada tipo de tornillo.
La primera sentencia escrita en el cdigo (exceptuando los comentarios) es Option
Explicit, la cual indica que todas las variables utilizadas debern ser declaradas.
A continuacin, y para facilitar la escritura del programa, se declaran las constantes de
tipo de tornillo que tomarn valores 1, 2 y 3, respectivamente.
Las ecuaciones para calcular el del cilindro y del prisma de base hexagonal son:
VCIL = d 2 h = 0,7854 d 2 h ; y
4
3
VPRIS = d 2 h sen(60`) = 0,6495 d 2 h ;
4
respectivamente. Como ambas expresiones se repiten en varios lugares del algoritmo, se
han implementados las respectivas funciones, que han sido declaradas como privadas, o
sea, accesibles slo para este mdulo.
- 31 -
Fig. 3.2 - Representacin grfica del algoritmo de solucin del ejemplo resuelto.
Cdigo del ejemplo resuelto
'******************************************************
'* Macro para el clculo del volumen de tornillos
*
'* de diferentes tipos (ejemplo resuelto Cap. 3)
*
'******************************************************
' Instruccin para forzar la declaracin de variables
Option Explicit
' Constantes de tipo de tornillo
Const ttAllen As Integer = 1
Const ttCabHexagonal As Integer = 2
Const ttCabCilindrica As Integer = 3
' Funcin para calcular el volumen de un cilindro
Private Function VolCilindro(Dc As Double, _
Hc As Double) As Double
' Dc y Hc son el dimetro y la altura del cilindro
VolCilindro = 0.7854 * Dc ^ 2 * Hc
End Function
- 32 -
- 33 -
- 34 -
- 35 -
CAPTULO 4
Fundamentos de Automatizacin ActiveX
OBJETIVO
Describir las principales caractersticas de la Automatizacin ActiveX y del
Modelo de Objetos de AutoCAD.
4.1 Introduccin.
La tecnologa de ActiveX1 permite manipular completamente AutoCAD mediante
programacin, bien sea desde el propio programa o desde otro entorno de programacin
que soporte esta tecnologa. El fundamento de la misma es tener un conjunto de objetos
que permitan controlar el programa y que estos objetos sean accesibles desde otras
aplicaciones.
- 36 -
- 37 -
Documents: Es una coleccin de objetos de tipo Document, cada uno de los cuales
contiene la informacin y los mtodos para manipular los dibujos abiertos en
- 38 -
Objetos grficos: Tambin conocidos como entidades, incluyen los objetos visibles
(lneas, crculos, cotas, imgenes, etc.) que conforman un dibujo. Cada objeto grfico
contiene mtodos que permiten realizar la mayora de las acciones de edicin sobre
ellos. Tambin cuentan con mtodos para establecimiento y acceso a datos extendidos
(xdata), seleccin y actualizacin. Poseen propiedades tpicas, como capa, tipo de
lnea y color y tambin propiedades especficas como pueden ser centro, radio y rea.
Objetos no grficos: Son aquellos objetos invisibles que se incluyen para propsitos
de informacin. Dentro de ellos tenemos las capas (Layers), los tipos de lneas
(Linetypes), los estilos de acotado (DimStyles) entre otros. Para modificar o
consultar estos objetos, se usan los mtodos o propiedades del mismo. Tambin
cuentan con mtodos para establecer y acceder a datos extendidos (xdata).
El acceso a la jerarqua de objetos es muy simple en VBA, ya que ste corre junto con
AutoCAD y, por lo tanto, no es necesario realizar ningn paso previo para
interconectarlos.
VBA proporciona un vnculo al objeto activo en la seccin actual de AutoCAD mediante
el objeto ThisDrawing. A travs del mismo se puede acceder al objeto Document
- 39 -
que corresponde a dicho dibujo activo, a todos sus mtodos y propiedades y a todos los
otros objetos del modelo que descienden de l.
En los proyectos globales, ThisDrawing siempre se refiere al dibujo activo en
AuoCAD; por su parte, en los proyectos incrustados, se refiere al dibujo que contiene al
proyecto.
4.3 Colecciones.
Las colecciones (collections) son objetos que contienen varias instancias de un mismo
tipo de objeto. Por ejemplo, en el modelo de objetos de AutoCAD existen, entre otras, las
siguientes colecciones:
Documents: Contiene a todos los objetos de tipo Document que hacen referencia a
cada uno de los dibujos abiertos por AutoCAD.
ModelSpace: Contiene a todos los objetos grficos (entidades) en el espacio de
modelo.
PaperSpace: Contiene a todos los objetos grficos (entidades) en el espacio de
papel activo.
Block: Contiene a todas las entidades dentro de un bloque.
Blocks: Contiene a todos los bloques en un dibujo.
DimStyles: Contiene a todos los estilos de acotado.
Layers: Contiene a todas las capas del dibujo.
MenuBar: Contiene a todos los mens mostrados en ese instante.
MenuGroups: Contiene a todos los mens y barras de herramientas que se
encuentren cargados en ese instante.
La mayor parte de las colecciones son accesibles a travs del objeto Document, el cual
contiene una propiedad que corresponde a cada objeto coleccin. Por ejemplo, el
siguiente cdigo define una variable y le asigna la coleccin de las capas del dibujo
activo.
Dim MisCapas As AcadLayers
Set MisCapas = ThisDrawing.Layers
Las colecciones Documents, MenuBar y MenuGroups son accesibles a travs del
objeto Application, el cual contiene una propiedad para cada una de estas
colecciones. El siguiente cdigo muestra como definir una variable y asignarle la
coleccin MenuGroups.
Dim MisMenus As AcadMenuGoups
Set MisMenus = ThisDrawing.Application.MenuGroups
- 40 -
Para adicionar un Nuevo miembro a una coleccin se emplea el mtodo Add. El siguiente
cdigo muestra como crear una nueva capa y asignrsela a una variable (MiCapa).
Dim MiCapa As AcadLayer
Set MiCapa = ThisDrawing.Layers.Add("NuevaCapa")
Para acceder a un miembro especfico de un objeto coleccin se utiliza el mtodo Item.
ste requiere de un ndice numrico que identifica la posicin del elemento dentro de la
coleccin. El ejemplo siguiente permite recorrer todos los elementos de la coleccin
Layers y muestra un mensaje con todos los nombres de las capas.
Sub NombreCapas()
' Recorre la coleccin Layers y muestra un mensaje
' con el nombre de las capas
Dim I As Integer, Msg As String
Msg = ""
For I = 0 To ThisDrawing.Layers.Count - 1
Msg = Msg & ThisDrawing.Layers.Item(I).Name & vbCrLf
Next I
MsgBox Msg
End Sub
Para eliminar un elemento de una coleccin, se emplea el mtodo Delete, del objeto
que contiene al elemento que se desea eliminar, tal como muestra el siguiente ejemplo.
Dim LayerCotas As AcadLayer
Set LayerCotas = ThisDrawing.Layers.Item("Cotas")
LayerCotas.Delete
- 41 -
Circulo.Center = NuevoCentro
El objeto Circle posee, adems, un mtodo llamado Offset (sobreimpresin), el cual
crea un nuevo objeto a una determinada distancia del crculo existente.
OtroCirculo = Circulo.Offset(20)
Para ver el listado completo de las propiedades de un objeto cualquiera, dentro del
modelo de objetos de AutoCAD, se puede referir a la ayuda o utilizar el Explorador de
Objetos (Object Browser), disponible a travs del men View del IDE de VBA.
Ejemplo Resuelto.
Se necesita crear, desde programacin una nueva capa llamada Azul, a la cual se le
asignar color azul. A continuacin todas las entidades existentes en el dibujo sern
pasadas a la capa recin creada.
Public Sub CrearCapaAzul()
' Definicin de variables
Dim CapaAzul As AcadLayer
Dim MiEntidad As AcadEntity
Dim ColorAzul As AcadAcCmColor
' Creando e inicialiando la variable de color
Set ColorAzul = AcadApplication.GetInterfaceObject( _
"AutoCAD.AcCmColor.16")
ColorAzul.SetRGB 0, 0, 255
' Creando la capa y asignandole el color azul
Set CapaAzul = ThisDrawing.Layers.Add("Azul")
CapaAzul.TrueColor = ColorAzul
' Recorriendo los elementos del espacio de
'
modelo y cambiando la capa
For I = 0 To ThisDrawing.ModelSpace.Count - 1
Set MiEntidad = ThisDrawing.ModelSpace.Item(I)
MiEntidad.Layer = "Azul"
Next I
' Regenerando el dibujo
ThisDrawing.Regen acAllViewports
End Sub
El primer paso consiste en declarar tres variables llamadas CapaAzul, de tipo
AcadLayer y que contendr a la capa que ser creada; MiEntidad, de tipo
AcadEntity y que contendr a cada una de las entidades presentes en el espacio de
modelo segn se recorran; y ColorAzul, de tipo AcadAcCmColor y que contiene el
color que le asignaremos a la capa.
- 42 -
- 43 -
CAPTULO 5
Creacin de Entidades
OBJETIVO
Crear entidades elementales en el espacio de modelo de AutoCAD mediante
programacin de VBA.
- 44 -
(array) de tipo Double, que tiene tantos elementos como coordenadas se necesitan. Para
ilustrar lo anterior, se muestra un ejemplo de cdigo que crea una lnea desde el punto (0,
0, 0) hasta el punto (100, 100, 0).
Public Sub Linea()
' Declaracin de las variables
Dim Punto1(0 To 2) As Double
Dim Punto2(0 To 2) As Double
Dim Linea As AcadLine
' Inicializacin de los puntos extremos
Punto1(0) = 0: Punto1(1) = 0: Punto1(2) = 0
Punto2(0) = 100: Punto2(1) = 0: Punto2(2) = 0
' Creacin de la lnea
Set Linea = ThisDrawing.ModelSpace.AddLine(Punto1, _
Punto2)
End Sub
Ntese que para las variables Punto1 y Punto2, los elementos de subndices 0, 1 y 2
representan las coordenadas x, y y z, respectivamente.
En otros casos, como al adicionar polilneas, todas las coordenadas se almacenas en la
misma variable de arreglo. En el siguiente ejemplo se muestra el cdigo para crear una
polilnea que forme un tringulo rectngulo.
Public Sub Polinea()
' Declaracin de las variables
Dim Puntos(0 To 11) As Double
Dim Polilinea As AcadPolyline
' Inicializacin de los vrtices
Puntos(0) = 0: Puntos(1) = 0: Puntos(2) = 0
Puntos(3) = 40: Puntos(4) = 0: Puntos(5) = 0
Puntos(6) = 40: Puntos(7) = 30: Puntos(8) = 0
Puntos(9) = 0: Puntos(10) = 0: Puntos(11) = 0
' Creacin de la polilnea
Set Polilinea = ThisDrawing.ModelSpace. _
AddPolyline(Puntos)
End Sub
Aqu todas las coordenadas se almacenan en la variable Puntos, agrupando los ndices
de tres en tres, de forma que los ndices 0, 1 y 2 representan las coordenadas del primer
vrtice; los ndices 3, 4 y 5, las coordenadas del segundo vrtice; y as sucesivamente.
Entidades curvas.
Otro grupo importante de elementos, dentro de los dibujos ms comunes en AutoCAD, lo
constituyen las entidades curvas (arcos, circunferencias, elipses...). Para crear estas
entidades, el modelo de objetos de AutoCAD dispone de los siguientes mtodos:
- 45 -
Tomando como radio un valor de 10 unidades, y situando las coordenadas del centro del
primer arco en el punto (50, 20, 0), tenemos que las coordenadas del segundo centro
sern iguales a (50, 40, 0). Los valores de los ngulos se determinarn en radianes. Con
estos datos, se construye el cdigo:
Public Sub Arcos()
' Declaracin de variables
Dim Punto1(0 To 2) As Double
Dim Punto2(0 To 2) As Double
Dim Radio As Double
Dim Angulo1 As Double, Angulo2 As Double
Dim Arco1 As AcadArc, Arco2 As AcadArc
' Inicializacin de los puntos centrales
Punto1(0) = 50: Punto1(1) = 20: Punto1(2) = 0
Punto2(0) = 50: Punto2(1) = 40: Punto2(2) = 0
' Inicializacin del radio y los ngulos
Radio = 10
Angulo1 = 3.1416 * (-90) / 180
Angulo2 = 3.1416 * (90) / 180
' Creacin de el primer arco
Set Arco1 = ThisDrawing.ModelSpace.AddArc(Punto1, _
Radio, Angulo1, Angulo2)
- 46 -
- 47 -
- 48 -
- 49 -
los dibujos al liberar el espacio que estos objetos, no utilizados, empleaban. Por supuesto,
es imposible purgar objetos que estn siento referenciados por otros.
Para purgar un dibujo, desde programacin, se emplea el mtodo PurgeAll, del objeto
ThisDrawing:
ThisDrawing.PurgeAll
Segn aumenta la complejidad de los dibujos, ser necesario renombrar objetos para
mantener cierto sentido en los nombres asignados y evitar conflictos con los nombres de
otros dibujos o bloques que se inserten en el dibujo principal.
Cualquier objeto puede ser renombrado, excepto aquellos a los cuales AutoCAD les
asigna un nombre con significado especial, tales como la capa 0 o el tipo de lnea
Continuous.
Los nombres pueden contener hasta 255 caracteres incluyendo letras, nmeros y espacios
en blanco (aunque AutoCAD elimina cualquier espacio en blanco antes y despus del
nombre). En cambio, los caracteres simblicos (> < / \ , ; : ? ! * | =) o los especiales
extendidos por las fuentes Unicode no se admiten.
Para renombrar un objeto se emplea la propiedad Name del mismo. En el siguiente
ejemplo, se busca dentro de la coleccin de capas una nombrada Ocultas y si existe, su
nombre se cambia a Lineas Ocultas.
Sub RenombrarCapa()
Dim Capa As AcadLayer
For Each Capa In ThisDrawing.Layers
If Capa.Name Like "Ocultas" Then
Capa.Name = "Lineas Ocultas"
End If
Next
End Sub
- 50 -
la macro. Para evitar esto, es muy buena prctica de programacin, verificar si ya existe
un conjunto con el nombre a utilizar y si as es, eliminarlo utilizando el mtodo Delete
del propio conjunto, tal como se muestra ms adelante en el ejemplo.
Para adicionar elementos a un conjunto de seleccin se puede utilizar cualquiera de los
siguientes mtodos:
Para hacer referencia a los objetos de una seleccin, se utiliza la propiedad Item, junto
al ndice especfico. Tambin, los objetos de conjunto de seleccin tienen una propiedad
Count que almacena la cantidad de elementos que tiene la seleccin.
Para eliminar elementos de una seleccin se pueden emplear los mtodos:
Erase: Borra todo los elementos de una seleccin, tando de la propia seleccin
como del dibujo.
Delete: Borra todos los elementos de una seleccin, tanto de la propia seleccin
como del dibujo, y elimina el conjunto de seleccin.
- 51 -
de la ventana definida por las esquinas (0, 0, 0) y (200, 100, 0), y se cambia el color a
rojo. Finalmente se muestra un mensaje informando cuantas entidades fueron
modificadas, se vaca el conjunto de seleccin y se elimina.
Sub CrearConjuntoSeleccion()
' Crea un conjunto de seleccin, le adiciona todos
' las entidades comprendidas en el rectngulo desde
' (0, 0, 0) a (200, 100, 0), les cambia el color a
' rojo y muestra un mensaje informado la cantidad de
' objetos modificados.
Dim MiSeleccion As AcadSelectionSet
Dim I As Integer
Dim Punto1(0 To 2) As Double, Punto2(0 To 2) As Double
For I = 0 To ThisDrawing.SelectionSets.Count - 1
If ThisDrawing.SelectionSets.Item(I).Name Like _
"NuevaSeleccion" Then
ThisDrawing.SelectionSets.Item(I).Delete
End If
Next I
Set MiSeleccion = _
ThisDrawing.SelectionSets.Add("NuevaSeleccion")
Punto1(0) = 0: Punto1(1) = 0: Punto1(2) = 0
Punto2(0) = 200: Punto2(1) = 100: Punto2(2) = 0
MiSeleccion.Select acSelectionSetWindow, Punto1, _
Punto2
For I = 0 To MiSeleccion.Count - 1
MiSeleccion.Item(I).color = acRed
Next I
MsgBox "Fueron modificados " & MiSeleccion.Count & _
"objeto(s).", vbInformation, _
"Conjunto '" & MiSeleccion.Name & "'"
MiSeleccion.Clear
MiSeleccion.Delete
End Sub
- 52 -
Movimiento de objetos.
Se lleva a cabo con el mtodo Move. Es necesario especificarle el punto de origen y el
punto de destino. En el siguiente ejemplo, se muestra el copiado y movimiento de una
circunferencia.
Sub CopiarMover()
' Crea una circunferencia y luego la copia y la mueve
Dim CirculoOriginal As AcadCircle
Dim CirculoCopia As AcadCircle
Dim Punto1(0 To 2) As Double, Punto2(0 To 2) As Double
Punto1(0) = 150: Punto1(1) = 100: Punto1(2) = 0
Punto2(0) = 200: Punto2(1) = 100: Punto2(2) = 0
Set CirculoOriginal = _
ThisDrawing.ModelSpace.AddCircle(Punto1, 50)
Set CirculoCopia = CirculoOriginal.Copy
CirculoCopia.Move Punto1, Punto2
End Sub
Sobreimpresin de objetos.
La sobreimpresin de objetos permite
reproducir las entidades que forman un
objeto a una distancia determinada. Son
susceptibles a sobreimpresin los siguientes
objetos: arcos, crculos, elipses, lneas,
polilneas, splines y xlines.
La sobreimpresin se realiza con el mtodo
Offset que proporcionan estos objetos. El
nico parmetro que es necesario
especificar en la distancia de sobreimpresin. Si la misma es positiva, el objeto
ser agrandado; si es negativa, entonces
ser achicado.
Sub Sobreimpresion()
' Crea una polilnea cerrada y la sobreimprime
Dim ObjOriginal As AcadPolyline
Dim ObjNuevo As Variant
Dim Puntos(0 To 20) As Double
Puntos(0) = 100: Puntos(1) = 100: Puntos(2) = 0
Puntos(3) = 200: Puntos(4) = 100: Puntos(5) = 0
- 53 -
Vase que el resultado del mtodo Offset es una variable de tipo Variant. Esto se
debe a que este mtodo puede producir un conjunto de objetos en lugar de uno slo.
Reflexin.
La reflexin, tambin llamada espejo, permite obtener la imagen de un objeto reflejada
sobre una lnea. Desde VBA se puede llevar a cabo con el mtodo Mirror, del objeto
que se desea reflejar, al cual es necesario pasarle, como parmetros, dos puntos que
definan la lnea de reflexin.
A diferencia del comando de AutoCAD, la reflexin desde VBA no permite eliminar los
objetos fuentes, por lo que si se desea hacer, deber emplearse el mtodo Delete. A
continuacin se ofrece un ejemplo de la reflexin de una polilnea.
Sub Reflexion()
' Crea una polilnea y le aplica una reflexin
Dim ObjOriginal As AcadPolyline
Dim ObjNuevo As AcadPolyline
Dim Puntos(0 To 20) As Double
Dim Punto1(0 To 2) As Double, Punto2(0 To 2) As Double
Puntos(0) = 100: Puntos(1) = 200: Puntos(2) = 0
Puntos(3) = 80:
Puntos(4) = 180: Puntos(5) = 0
Puntos(6) = 80:
Puntos(7) = 160: Puntos(8) = 0
Puntos(9) = 90:
Puntos(10) = 150: Puntos(11) = 0
Puntos(12) = 80: Puntos(13) = 140: Puntos(14) = 0
Puntos(15) = 80: Puntos(16) = 120: Puntos(17) = 0
Puntos(18) = 100: Puntos(19) = 100: Puntos(20) = 0
Punto1(0) = 100: Punto1(1) = 200: Punto1(2) = 0
Punto2(0) = 100: Punto2(1) = 100: Punto2(2) = 0
Set ObjOriginal = _
ThisDrawing.ModelSpace.AddPolyline(Puntos)
Set ObjNuevo = ObjOriginal.Mirror(Punto1, Punto2)
ObjNuevo.Color = acRed
End Sub
- 54 -
Arreglos.
Los arreglos permiten distribuir entidades sobre el espacio de trabajo en una forma
regular determinada. Segn esta distribucin, los arreglos pueden ser rectangulares
(cuando sus elementos estn distribuidos en filas, columnas y capas) o polares (cuando
estn distribuidos en forma circular, alrededor de un punto central).
Para hacer un arreglo rectangular de un objeto, se utiliza el mtodo
ArrayRectangular, del propio objeto. Este mtodo utiliza como parmetros la
cantidad de filas, de columnas y de capas y la distancia entre ellas. Por supuesto, si el
arreglo es bidimensional, entonces la cantidad de capas es 1.
A continuacin se muestra un ejemplo de generacin de un arreglo rectangular a partir de
una circunferencia.
Sub ArregloRectangular()
' Crea un crculo y genera un arreglo
' rectangular a partir de l
Dim Circulo As AcadCircle
Dim CentroCirculo (0 To 2) As Double
Dim CantFilas As Long, DistFilas As Double
Dim CantCols As Long, DistCols As Double
Dim CantCapas As Long, DistCapas As Double
CantFilas = 6: DistFilas = 30
CantCols = 3: DistCols = 60
CantCapas = 1: DistCapas = 0
CentroCirculo (0) = 100: CentroCirculo (1) = 100
Set Circulo = ThisDrawing.ModelSpace.AddCircle( _
CentroCirculo, 10)
Circulo.ArrayRectangular CantFilas, CantCols, _
CantCapas, DistFilas, DistCols, DistCapas
End Sub
Por su parte, los arreglos polares se crean con el mtodo ArrayPolar, al cual es
necesario suministrarle, como parmetros, la cantidad de objetos que crear el arreglo
(incluido el objeto original), el ngulo barrido y el punto central. A continuacin se
muestra el cdigo para crear un arreglo polar a partir de una circunferencia.
Sub ArregloPolar()
' Crea un crculo y genera un arreglo
' polar que barre 180, a partir de l
Dim Circulo As AcadCircle
Dim CentroCirculo(0 To 2) As Double
Dim CentroArreglo(0 To 2) As Double
Dim NoObjetos As Long
Dim Angulo As Double
NoObjetos = 6
- 55 -
Angulo = 3.1416
' 180
CentroCirculo(0) = 100: CentroCirculo(1) = 100
CentroArreglo(0) = 100: CentroArreglo(1) = 150
Set Circulo = ThisDrawing.ModelSpace.AddCircle( _
CentroCirculo, 10)
Circulo.ArrayPolar NoObjetos, Angulo, CentroArreglo
End Sub
Rotacin.
La rotacin de un objeto se lleva a cabo con el mtodo Rotate, el cual requiere, como
argumentos, el punto alrededor del cual se va a rotar el objeto, y el ngulo de rotacin. En
el siguiente cdigo, se muestra como rotar un rectngulo (formado por una polilnea) 30
alrededor de su esquina inferior izquierda.
Sub Rotacion()
' Crea una polilnea en forma de rectngulo
' y la rota 30 alrededor de la esquina
' inferior izquierda
Dim Rectangulo As AcadPolyline
Dim Puntos(0 To 14) As Double
Dim PuntoBase(0 To 2) As Double
Dim Angulo As Double
Puntos(0) = 100: Puntos(1) = 100: Puntos(2) = 0
Puntos(3) = 180: Puntos(4) = 100: Puntos(5) = 0
Puntos(6) = 180: Puntos(7) = 160: Puntos(8) = 0
Puntos(9) = 100: Puntos(10) = 160: Puntos(11) = 0
Puntos(12) = 100: Puntos(13) = 100: Puntos(14) = 0
PuntoBase(0) = 100: PuntoBase(1) = 100
Angulo = 3.1416 / 6
Set Rectangulo = _
ThisDrawing.ModelSpace.AddPolyline(Puntos)
Rectangulo.Rotate PuntoBase, Angulo
End Sub
Escalado.
El escalado permite transformar las dimensiones lineales de un objeto, multiplicndolas
por un factor de escala dado. Si utilizamos un factor de escala mayor que uno, el objeto
obtenido ser mayor que el original; si menor que uno, ser menor. Por ltimo, si usamos
un factor de escala igual a uno, no se producir ningn cambio (y podremos,
razonablemente, poner en duda nuestra inteligencia).
Para ejecutar el escalado se utiliza el mtodo ScaleEntity que proporciona el propio
objeto. ste requiere, como parmetros, que se le especifique el punto base (punto a
partir del cual se recalcularn las nuevas coordenadas) y el factor de escala. Es bueno
aclarar que el escalado se realiza en las tres coordenadas x, y y z.
- 56 -
En el siguiente ejemplo se muestra cmo escalar una entidad, en este caso, una polilnea
que forma un tringulo rectngulo.
Sub Escalado()
' Crea una polilnea y la escala con factor 2
Dim Points(0 To 11) As Double
Dim PtoBase(0 To 2) As Double
Dim Triangulo As AcadPolyline
Points(0) = 50: Points(1) = 50: Points(2) = 0
Points(3) = 90: Points(4) = 50: Points(5) = 0
Points(6) = 90: Points(7) = 80: Points(8) = 0
Points(9) = 50: Points(10) = 50: Points(11) = 0
Set Triangulo = _
ThisDrawing.ModelSpace.AddPolyline(Points)
PtoBase(0) = 50: PtoBase(1) = 50: PtoBase(2) = 0
Triangulo.ScaleEntity PtoBase, 2
End Sub
Extensin y tronzado.
Las acciones que se realizan en AutoCAD mediante extensin (EXTEND) y tronzado
(TRIM), desde VBA se llevan a cabo a travs de las propiedades del objeto. Por ejemplo,
para modificar la longitud de una lnea, tal como se muestra en el siguiente cdigo, se
cambian los valores del punto inicial (StartPoint) o del final (EndPoint).
Sub Redimensionado()
' Crea y redimensiona una lnea
Dim Punto1(0 To 2) As Double
Dim Punto2(0 To 2) As Double
Dim Linea As AcadLine
Punto1(0) = 80: Punto1(1) = 50: Punto1(2) = 0
Punto2(0) = 120: Punto2(1) = 70: Punto2(2) = 0
Set Linea = ThisDrawing.ModelSpace.AddLine(Punto1, _
Punto2)
Punto2(1) = 90
Linea.EndPoint = Punto2
Linea.Update
End Sub
- 57 -
- 58 -
Prompt: No solicita ningn dato; slo muestra el texto que se le pasa como
parmetro, en la consola. Ejemplo:
ThisDrawing.Utility.Prompt "Fin del ejemplo"
El objeto Utility tiene otros mtodos muy interesantes, como son PolarPoint,
que permite calcular las coordenadas cartesianas de un punto, a partir de sus coordenadas
polares; DistanceToReal, que permite convertir valores de distancia en formato de
texto a nmeros reales; RealToString, que convierte un nmero real en un texto con
un formato dado; entre otros.
- 59 -
Ejemplo Resuelto.
Se desea desarrollar una aplicacin para dibujar la seccin transversal de una rueda
dentada cilndrica, tal como se muestra en la Fig. 5.3 a).
a) Dimensiones de la rueda
b) Distribucin de puntos
Los datos del problema (el punto de insercin, p0; mdulo de la rueda, M; la
cantidad de dientes, Z; el ancho de la rueda, B; el dimetro del cubo, D; y la
longitud del cateto del bisel, C), que sern de tipo Double (excepto el punto de
insercin que ser Variant y la cantidad de dientes que ser Integer). Tambin
se definen los dimetros de cabeza, Dc; primitivo, Dp; y de fondo de la rueda, Df
(todos de tipo Double).
Los puntos y lneas que definen conforman el dibujo. Los puntos sern arreglos de
tres valores de tipo Double, denotndose como pA, pB ... pW. Las lneas son
objetos de tipo AcadLine., los cuales se llamarn lAB, lBC ... , indicando as los
puntos extremos de la lnea.
Los rayados inferior y superior y sus contornos. Los rayados sern objetos de tipo
AcadHatch. Los contornos sern arreglos de cuatro valores de tipo
AcadEntity, uno para cada lnea que define el contorno de cada rayado.
Como siguiente paso, se toman los datos del usuario, mediante el objeto Utility, y se
almacenan en las correspondientes variables.
- 60 -
Con los datos, se procede a calcular las coordenadas de todos los puntos. Para ello se
utilizan las relaciones geomtricas de la rueda, resultando las expresiones que se
muestran a continuacin:
Punto
A
B
C
D
E
F
G
H
I
J
K
L
M
N
P
Q
R
S
T
U
V
W
X
XA = X0
XB = X0
XC = X0
XD = X0 + C
XE = X0 + B C
XF = X0 + B
XG = XF
XH = XF
XI = XF
XJ = XF
XK = XF
XL = XE
XM = XD
XN = XO
XP = XO
XQ = XO
XR = X0 2
XS = XH + 2
XT = XR
XU = XS
XV = XR
XW = XS
Y
YA = Y0 + D/2
YB = Y0 + Df/2
YC = Y0 + Dc/2 C
YD = Y0 + Dc/2
YE = YD
YF = Y C
Y G = YB
Y H = YA
YI = Y0 D/2
YJ = Y0 Df/2
YK = Y0 Dc/2 + C
YL = Y0 Dc/2
YM = Y L
YN = YK
YP = YJ
Y Q = YI
YR = Y0 Dp/2
YS = YR
YT = YR
YU = Y 0
YV = Y0 + Dp/2
YW = Y V
Una vez calculados todos los puntos, se crean las lneas que conforman el dibujo,
utilizando el mtodo AddLine, del objeto ModelSpace.
Para elaborar los rayados, primero se le asignan a cada uno de los elementos del arreglo
de contorno respectivo, las lneas que forman el borde. Luego de creado los rayados (con
el mtodo AddHatch), el contorno definido se le asigna con el mtodo
AppendOuterLoop y se evala, para obtener el rea rayada.
A continuacin se muestra el cdigo del ejercicio resuelto.
Sub RuedaDentada()
' Declaracin de las variables
Dim p0 As Variant ' Punto de insercin
Dim M As Double ' Mdulo de la rueda
Dim Z As Integer ' Nmero de dientes
Dim B As Double ' Ancho de la rueda
Dim D As Double ' Dimetro del cubo
- 61 -
Dim
Dim
Dim
Dim
Dim
- 62 -
- 63 -
pB)
pC)
pD)
pE)
pF)
pG)
pH)
pI)
pJ)
pK)
pL)
pM)
pN)
pP)
pQ)
pA)
pH)
pG)
pI)
pJ)
pS)
pU)
pW)
- 64 -