869x
004961
2021-04-08

Eliminar elementos através da interface COM

Como é que utilizo a interface COM para, por exemplo, eliminar todos os nós ou barras de um modelo?


Resposta:

Para eliminar elementos, existe a função "DeleteObjects()" na interface de dados do modelo. A eliminação de todas as barras tem o seguinte aspeto:

  1. código.vb#

Sub test_delete_objects()

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

iApp.LockLicense

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

On Error GoTo e

  1. ' get interface for model data
  2. Dim iModData As RFEM5.IModelData2
  3. Set iModData = iMod.GetModelData
  4. ' get all members
  5. Dim mems() As RFEM5.Member
  6. mems() = iModData.GetMembers
  7. ' create member list
  8. Dim mem_list As String
  9. Dim i As Integer
  10. For i = 0 To UBound(mems, 1)
  11. mem_list = mem_list & mems(i).no & ","
  12. Continuar
  13. ' delete members
  14. iModData.PrepareModification
  15. iModData.DeleteObjects MemberObject, mem_list
  16. iModData.FinishModification

e:

If Err.Number <> 0 Then MsgBox Err.description, vbCritical, Err.Source

iMod.GetApplication.UnlockLicense
Set iMod = Nothing

End Sub
#/code#

Tenha em atenção que a função "DeleteObjects" apenas funciona com o número do objeto e não com o índice do objeto. Esses números são transferidos como uma cadeia de caracteres separada por vírgulas.

Por esse motivo, foi necessário, primeiro, ir buscar todas as barras. Em seguida, o campo de barra foi executado em ciclo e todos os números da barra foram introduzidos na cadeia de caracteres.


Autor

O Eng. Günthel opera na área do apoio técnico para clientes.

Ligações
Downloads


;