Creación de instancias de objetos de AutoCAD en VBA

AutoCAD ActiveX

 
Creación de instancias de objetos de AutoCAD en VBA
 
 
 

Los sistemas operativos de 64 bits pueden ejecutar aplicaciones de 32 y 64 bits, pero no pueden mezclar estos tipos en un proceso. Por ejemplo, no es posible cargar archivos DLL de 32 bits en un proceso de 64 bits ni viceversa. Todos los componentes ejecutables (archivos EXE y DLL) que se cargan en un proceso deben coincidir en el tipo binario del proceso. Los componentes en proceso de las aplicaciones de 64 bits deben cambiarse a procesos de 64 bits siempre que sea posible.

Puede producirse un error al intentar crear un objeto nuevo. El teclado New de VB intentará cargar los archivos DLL COM de AutoCAD de 64 bits. Puesto que VBA es una aplicación de 32 bits, no puede cargar archivos DLL de 64 bits. Por ejemplo, un código del tipo

Dim color As AcadAcCmColor
Set color = New AcadAcCmColor

or

Dim color As New AcadAcCmColor
color.SomeMethod()

necesita modificarse o cambiarse a

Dim color As AcadAcCmColor
Set color = AcadApplication.GetInterfaceObject(“Autocad.AcCmColor.17”). 

El problema anterior debe solucionarse mediante AcadApplication.GetInterfaceObject(“ProgIdOfAcAnyObject”) para cualquier objeto derivado de IDispatch. No se espera que las clases derivadas de IUnknown (por ejemplo, AcSmSheetSet, AcSmSheetMgr, etc.) migren a VBA de 64 bits. Es recomendable cambiar estos procesos a VB .Net.