887x
004181
2019-11-25

Pergunta

Como é que posso criar uma barras resultante através da interface COM?


Resposta:
Em primeiro lugar, uma barra resultante é criada exatamente como uma barra normal:

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

On Error GoTo e

Dim data As IModelData
Set data = model.GetModelData

Dim members(0) As RFEM5.Member
    
members(0).No = 3
members(0).LineNo = 12
members(0).Type = ResultBeamType
    
members(0).StartCrossSectionNo = 1
members(0).EndCrossSectionNo = 1
    
members(0).Comment = "result beam 1"

data.PrepareModification
data.SetMembers members
data.FinishModification

Em seguida, a interface IMember tem de ser retirada da barra correspondente e utiliza-se o método GetExtraData para obter a interface para IResultMember. Agora, esta interface pode ser utilizada para ler ou escrever os dados do ResultMember. Tenha em atenção que é necessário um bloco Prepare-/Finishmodification ao escrever:

Dim iMem As IMember
Set iMem = data.GetMember(3, AtNo)
    
Dim iRMem As IResultBeam
Set iRMem = iMem.GetExtraData
    
Dim RMem As ResultBeam
RMem = iRMem.GetData
    
RMem.IncludeSurfaces = "1"
RMem.IncludeSolids = "all"
    
RMem.Integrate = WithinCuboidGeneral
    
Dim params(0 To 3) As Double
    
RMem.Parameters = params
RMem.Parameters(0) = 0.5
RMem.Parameters(1) = 0.5
RMem.Parameters(2) = 0.1
RMem.Parameters(3) = 0.1
    
data.PrepareModification
iRMem.SetData RMem
data.FinishModification

A macro EXCEL concluída e o correspondente ficheiro de teste estão anexados.