443x
002990
2021-11-26

FAQ 005138 | Como é que posso criar uma articulação de barra com um "Diagrama" utilizando a interface COM?

Pergunta:
Como é que posso criar uma articulação de barra com um "Diagrama" utilizando a interface COM?

Resposta:
Para criar um elemento não linear, como uma articulação de barra com um diagrama ou uma rotura, tem de criar primeiro a articulação de barra. Se o RFEM conhecer a articulação de barra, esta poderá ser acedida através da interface IMemberEndRelease. Esta interface contém os métodos GetData() e SetData(). Ambos os métodos são capazes de ler ou escrever os dados de articulação de barra simples do tipo MemberEndRelease, bem como os dados de uma não linearidade.

No exemplo a seguir, primeiro é ativada uma articulação para a direção x na articulação de barra e, em seguida, o tipo WorkingDiagramType é definido como a não linearidade na direção x. Após estes dados terem sido transferidos para o RFEM utilizando um bloco Prepare-Finish-Modification, a não linearidade é criada internamente. Para preenchê-la com dados, primeiro são obtidos os dados existentes na interface da articulação de barra utilizando GetData ().

Após o preenchimento dos dados (NonlinearityDiagram), estes são novamente transferidos com SetData():

Sub SetNLDiagram()

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

On Error GoTo e

Dim iApp As RFEM5.Application
Set iApp = model.GetApplication

iApp.LockLicense
iApp.Show

Dim iModelData As RFEM5.iModelData
Set iModelData = model.GetModelData

'   modify member end release
'       set nonlinearity "Diagram" for x translation
Dim iMemHing As RFEM5.IMemberHinge
Set iMemHing = iModelData.GetMemberHinge(1, AtNo)

Dim memHing As RFEM5.MemberHinge
memHing = iMemHing.GetData()
memHing.TranslationalConstantX = 0
memHing.TranslationalNonlinearityX = WorkingDiagramType

' Set new data
iModelData.PrepareModification
iMemHing.SetData memHing
iModelData.FinishModification

'       create diagram
Dim tbl1() As Double
ReDim tbl1(1, 1)
tbl1(0, 0) = 0  '   u-x
tbl1(0, 1) = 0  '   P-x

tbl1(1, 0) = 0.02  '   u-x (mm)
tbl1(1, 1) = 2000  '   P-x (N)

Dim nldHing As RFEM5.NonlinearityDiagram
nldHing.ForceType = StiffnessDiagramForceType.NoneStiffnessForce
nldHing.PositiveZoneType = DiagramAfterLastStepType.TearingDiagramType
nldHing.PositiveZone = tbl1
nldHing.Symmetric = True

Dim iNldiag As RFEM5.INonlinearityDiagram
Set iNldiag = iMemHing.GetNonlinearity(AlongAxisX)

'       Set new data
iModelData.PrepareModification
iNldiag.SetData nldHing
iModelData.FinishModification

e:      If Err.Number 0 Then MsgBox Err.description, , Err.Source

model.GetApplication.UnlockLicense

End Sub

O procedimento é semelhante para apoios de nós e outras não linearidades.



;