Conversión del código VBA a VB

AutoCAD ActiveX

 
Conversión del código VBA a VB
 
 
 

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.

NotaUtilice ProgIDs dependientes de la versión. Si una función CreateObject o GetObject utiliza un ProgID dependiente de la versión, cambie la función para que utilice un ProgID dependiente de la versión. Por ejemplo, si utiliza CreateObject, sustituya CreateObject ("AutoCAD.Application") por CreateObject ("AutoCAD.Application.17"). Además, si un método GetInterfaceObject usa un ProgID independiente de la versión, el método debe cambiarse para que utilice un ProgID dependiente de la versión.

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

Creación de una línea con VB:

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