Para actualizar un ejemplo de código y utilizarlo con VB, primero hay que hacer referencia a la biblioteca de tipos de AutoCAD. Si desea hacerlo en VB, elija la opción Referencias en el menú Proyecto para abrir el cuadro de diálogo correspondiente. En el cuadro de diálogo Referencias, elija la biblioteca de tipos de AutoCAD y haga clic en Aceptar.
A continuación, en el ejemplo de código, reemplace todas las referencias a ThisDrawing con una variable definida por el usuario que haga referencia al documento activo. Con este propósito, defina una variable para la aplicación de AutoCAD(acadApp) y para el documento actual (acadDoc). A continuación, establezca como variable de aplicación la aplicación actual de AutoCAD.
Si se está ejecutando AutoCAD, la función GetObject de VB recupera el objeto Application de AutoCAD cuando usted especifica el número de versión de AutoCAD. Si no se está ejecutando AutoCAD, ocurre un error que (en el ejemplo) se detecta y después se despeja. A continuación, la función CreateObject intenta crear un objeto Application de AutoCAD. Si lo consigue, se inicia AutoCAD; en caso contrario, se muestra un cuadro de mensaje, con una descripción del error.
Durante la ejecución de varias sesiones simultáneas de AutoCAD, la función GetObject devuelve la primera instancia de AutoCADen la tabla de objetos en ejecución en Windows. Para obtener más información acerca de la verificación de la sesión devuelta por GetObject, consulte la documentación de Microsoft VBA relativa a la tabla de objetos en ejecución (ROT) y a la función GetObject.
Para que aparezca la ventana de dibujo de AutoCAD debe establecer en TRUE la propiedad Visible de la aplicación AutoCAD.
Si GetObject crea una sesión nueva de AutoCAD (es decir, AutoCAD aún no estaba ejecutándose cuando se emitió GetObject), al no poder asignar TRUE a Visible la aplicación AutoCAD será invisible y ni siquiera aparecerá en la barra de tareas de Windows.
Conexión con AutoCAD desde Visual Basic 6
El siguiente ejemplo de código utiliza las propiedades Clear y Description de Err. Si el entorno de programación no admite estas propiedades, deberá modificar el ejemplo en consecuencia:
Sub Ch2_ConnectToAcad()
Dim acadApp As AcadApplication
On Error Resume Next
Set acadApp = GetObject(, "AutoCAD.Application.17")
If Err Then
Err.Clear
Set acadApp = CreateObject("AutoCAD.Application.17")
If Err Then
MsgBox Err.Description
Exit Sub
End If
End If
MsgBox "Now running " + acadApp.Name + _
" version " + acadApp.Version
End Sub
A continuación, defina la variable del documento como el objeto Document de la aplicación de AutoCAD. Dicho objeto es el que devuelve la propiedad ActiveDocument del objeto Application.
Dim acadDoc as AcadDocument
Set acadDoc = acadApp.ActiveDocument
En adelante, utilice la variable acadDoc para hacer referencia al dibujo actual de AutoCAD.
Ejemplo de código comparado entre VBA y VB
El siguiente código del ejemplo muestra cómo se crea una línea en VBA y en VB:
Creación de una línea con VBA:
Sub Ch2_AddLineVBA()
' This example adds a line
' in model space
Dim lineObj As AcadLine
Dim startPoint(0 To 2) As Double
Dim endPoint(0 To 2) As Double
' Define the start and end
' points for the line
startPoint(0) = 1
startPoint(1) = 1
startPoint(2) = 0
endPoint(0) = 5
endPoint(1) = 5
endPoint(2) = 0
' Create the line in model space
Set lineObj = ThisDrawing. _
ModelSpace.AddLine _
(startPoint, endPoint)
' Zoom in on the newly created line
ZoomAll
End Sub
Sub Ch2_AddLineVB()
On Error Resume Next
' Connect to the AutoCAD application
Dim acadApp As AcadApplication
Set acadApp = GetObject _
(, "AutoCAD.Application.17")
If Err Then
Err.Clear
Set acadApp = CreateObject _
("AutoCAD.Application.17")
If Err Then
MsgBox Err.Description
Exit Sub
End If
End If
' Connect to the AutoCAD drawing
Dim acadDoc As AcadDocument
Set acadDoc = acadApp.ActiveDocument
' Establish the endpoints of the line
Dim lineObj As AcadLine
Dim startPoint(0 To 2) As Double
Dim endPoint(0 To 2) As Double
startPoint(0) = 1
startPoint(1) = 1
startPoint(2) = 0
endPoint(0) = 5
endPoint(1) = 5
endPoint(2) = 0
' Create a Line object in model space
Set lineObj = acadDoc.ModelSpace.AddLine _
(startPoint, endPoint)
ZoomAll
acadApp.visible = True
End Sub