Gestión de ID de objetos

AutoCAD ActiveX

 
Gestión de ID de objetos
 
 
 

Al iniciar AutoCAD 2008 de 64 bits, los ID de objetos se representan mediante un tipo de datos de enteros de 64 bits (_int64). Si se accede a estos valores en VBA de 32 bits se producirá un error de compilación. Como solución, se utiliza un nuevo conjunto de nombres de métodos con el sufijo "32" correspondientes a los métodos anteriores (por ejemplo ObjectID32(), OwnerID32()). Estos métodos utilizan el tipo de datos LONG que se asigna de manera interna al tipo de datos de enteros de 64 bits.

Para ser más precisos, un ID de objeto de 32 bits se crea de forma interna para cada ID de objeto necesario en VBA. Este ID se asigna a su ID real de 64 bits de manera que si se devuelve el ID de 32 bits a AutoCAD a partir de un código VBA, el ID de objeto de 64 bits se devolverá y se utilizará de forma interna para todos los fines.

En el siguiente ejemplo se muestra un código de ID de objeto de 32 bits cambiado.

Código original:

Dim splineObj As AcadSpline
Dim objectID As Long
objectID = splineObj.objectID
Dim tempObj As AcadObject
Set tempObj = ThisDrawing.ObjectIdToObject(objectID)

Código cambiado para que sea compatible con 64 bits:

Dim splineObj As AcadSpline
Dim objectID As Long
objectID = splineObj.objectID32
Dim tempObj As AcadObject
Set tempObj = ThisDrawing.ObjectIdToObject32(objectID)

Las aplicaciones de VBA también pueden utilizar un identificador de objetos en lugar de su ID de objeto. En el siguiente ejemplo se muestra cómo utilizar el identificador en lugar del ID de objeto:

Código original:

Dim splineObj As AcadSpline
Dim objectID As Long
objectID = splineObj.objectID
Dim tempObj As AcadObject
Set tempObj = ThisDrawing.ObjectIdToObject(objectID)

Código cambiado para que sea compatible con 64 bits:

Dim splineObj As AcadSpline
Dim objectHandle As String
objectHandle = splineObj.Handle
Dim tempObj As AcadObject
Set tempObj = ThisDrawing.HandleToObject(objectHandle)
Nota: Se ignorará el soporte para VBA en futuras versiones de AutoCAD. Los desarrolladores de VBA deben prepararse para cambiar su código VBA a VB.Net.