808x
004961
2021-04-08

Pregunta

¿Cómo puedo usar la interfaz COM para eliminar todos los nudos o barras en un modelo, por ejemplo?


Respuesta:

Para eliminar elementos, está la función "DeleteObjects ()" en la interfaz de datos del modelo. La eliminación de todas las barras es la siguiente:

Sub test_delete_objects ()

Dim iApp As RFEM5.Application
Establecer iApp = GetObject (, "RFEM5.Application")

iApp.LockLicense

Dim iMod como RFEM5.IModel3
Set iMod = iApp.GetActiveModel


On Error GoTo e

'obtener interfaz para datos del modelo
Dim iModData As RFEM5.IModelData2
Set iModData = iMod.GetModelData
    
'obtener todos los miembros
Dim mems() As RFEM5.Member
mems () = iModData.GetMembers
    
'crear lista de miembros
Dim mem_list como cadena
Dim i As Integer
Para i = 0 a UBound (mems, 1)
mem_list = mem_list & mems (i) .no & ","
Siguiente
    
'eliminar miembros
iModData.PrepareModification
iModData.DeleteObjects MemberObject, lista_mem
iModData.FinishModification
    
e:

Si Err.Number <> 0, entonces MsgBox Err.description, vbCritical, Err.Source

iMod.GetApplication.UnlockLicense
Establecer iMod = Nada

End Sub


Tenga en cuenta que la función "DeleteObjects" sólo funciona con el número de objeto y no con el índice de objeto. Estos números se transfieren como una cadena, separados por comas.

Por esta razón, primero se tuvieron que buscar todas las barras. Luego, se recorrió el campo de la barra y se introdujeron todos los números de la barra en la cadena.