Conversi髇 del c骴igo VBA a VB
From AutoCAD ActiveX
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 ThenErr.ClearSet acadApp = CreateObject("AutoCAD.Application.17")If Err ThenMsgBox Err.DescriptionExit SubEnd IfEnd IfMsgBox "Now running " + acadApp.Name + _" version " + acadApp.VersionEnd 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 linestartPoint(0) = 1startPoint(1) = 1startPoint(2) = 0endPoint(0) = 5endPoint(1) = 5endPoint(2) = 0' Create the line in model spaceSet lineObj = ThisDrawing. _ModelSpace.AddLine _(startPoint, endPoint)' Zoom in on the newly created lineZoomAllEnd Sub
Sub Ch2_AddLineVB()
On Error Resume Next
' Connect to the AutoCAD applicationDim acadApp As AcadApplicationSet acadApp = GetObject _(, "AutoCAD.Application.17")If Err ThenErr.ClearSet acadApp = CreateObject _("AutoCAD.Application.17")If Err ThenMsgBox Err.DescriptionExit SubEnd IfEnd If' Connect to the AutoCAD drawingDim acadDoc As AcadDocumentSet acadDoc = acadApp.ActiveDocument' Establish the endpoints of the lineDim lineObj As AcadLineDim startPoint(0 To 2) As DoubleDim endPoint(0 To 2) As DoublestartPoint(0) = 1startPoint(1) = 1startPoint(2) = 0endPoint(0) = 5endPoint(1) = 5endPoint(2) = 0' Create a Line object in model spaceSet lineObj = acadDoc.ModelSpace.AddLine _(startPoint, endPoint)ZoomAllacadApp.visible = TrueEnd Sub