1024x
004715
2020-09-10

Pergunta

Como é que posso selecionar objetos através da interface COM?


Resposta:

Para selecionar objetos, existe a função "SelectObjects" na interface IModelData (ou IModeldata2 etc.). A função espera o tipo de objeto e o(s) número(s) de objetos como uma cadeia de caracteres. Aqui está um pequeno exemplo:

Sub select_objects()

Dim model As RFEM5.model
Set model = GetObject(, "RFEM5.Model")
model.GetApplication.LockLicense

On Error GoTo e
    
Dim iModdata As IModelData2
Set iModdata = model.GetModelData
    
' enable Selections
iModdata.EnableSelections True
    
' select nodes 2-3 and lines 1 and 3
iModdata.SelectObjects ModelObjectType.NodeObject, "2-3"
iModdata.SelectObjects ModelObjectType.LineObject, "1,3"
    
' deselect nodes and lines
iModdata.SelectObjects ModelObjectType.NodeObject, ""
iModdata.SelectObjects ModelObjectType.LineObject, ""
    
    
e: If Err.Number <> 0 Then MsgBox Err.description, , Err.Source

model.GetApplication.UnlockLicense
Set iModdata = Nothing
Set model = Nothing

End Sub

Na parte superior, as seleções são ativadas e, em seguida, os nós 2 a 3 e as linhas 1 e 3 são selecionados. Em seguida, as linhas e os nós são desselecionados por uma cadeia de caracteres vazia.

Se pretende ler ou modificar objetos selecionados, precisa da função "IModelData.EnableSelections" (também pode ser encontrada acima no código). Se a função for ativada com "True", apenas os nós selecionados serão lidos com a função "IModelData.GetNodes ()", por exemplo.