999x
004903
2021-01-12

Editar a lista de parâmetros através da interface COM

Como é que posso editar a lista de parâmetros utilizando a interface COM?


Resposta:

Os parâmetros de um modelo podem ser modificados através da interface IModel (a partir de IModel3):

  1. código.vb#

Sub test_parameter()

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

iApp.LockLicense

Dim j As Integer
j = iApp.GetModelCount

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

On Error GoTo e

Dim formParams() As RFEM5.FormulaParameter

' get all formula parameters
formParams = iMod.GetFormulaParameters

' delete all formula parameters
iMod.CleanFormulaParameters

' set list of formula parameters
ReDim Preserve formParams(0 To UBound(formParams, 1) + 1)
formParams(UBound(formParams, 1)).Name = "p"
formParams(UBound(formParams, 1)).Unit = "m"
formParams(UBound(formParams, 1)).UnitType = LengthUnitType
formParams(UBound(formParams, 1)).Value = 0
formParams(UBound(formParams, 1)).ValueType = DoubleType
formParams(UBound(formParams, 1)).Comment = "new parameter"
formParams(UBound(formParams, 1)).Formula = "b/3"
formParams(UBound(formParams, 1)).RangeOfValues = "(3;5.5>"

iMod.SetFormulaParameters formParams

e:

If Err.Number <> 0 Then MsgBox Err.description, vbCritical, Err.Source
iMod.GetApplication.UnlockLicense
Set iMod = Nothing

End Sub
#/code#

Só é possível ler todos os parâmetros através da função GetFormulaParameters(). Os parâmetros modificados ou novos podem depois ser transferidos novamente como uma lista utilizando a função SetFormulaParameters(). Assim, nenhum parâmetro individual pode ser lido ou escrito.

Note que o valor "Value" relacionado com o seu tipo (ValueTyp) e a sua unidade (Unit) deve estar dentro dos limites definidos (RangeOfValues), caso contrário aparece uma mensagem de erro. Se o valor é calculado, como no exemplo, é irrelevante e o valor calculado com a fórmula (Formula) deve estar dentro dos limites, caso tenham sido definidos limites.


Autor

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

Ligações
Downloads


;