Pour créer un élément non linéaire, tel qu'une articulation de barre avec un diagramme ou un échec, vous devez d'abord créer l'articulation de barre. Wenn RFEM das Stabendgelenk kennt, kann dieses über die Schnittstelle IMemberEndRelease geholt werden. Diese Schnittstelle verfügt dann über die Methoden GetData() und SetData(). Beide Methoden sind in der Lage sowohl die einfachen Stabendgelenkdaten vom Typ MemberEndRelease als auch die Daten einer Nichtlinearität auszulesen bzw. zu schreiben.
Im folgenden Beispiel wird in Stabendgelenk zunächst für die x-Richtung ein Gelenk aktiviert und dann als Nichtlinearität in x-Richtung der Typ WorkingDiagramType eingestellt. Nachdem diese Daten mithilfe eines Prepare-Finish-Modification-Blocks an RFEM übergeben wurden, legt dieses intern die Nichtlinearität an. Um diese mit Daten zu füllen, werden zunächst die vorhandenen Daten über GetData() von der Schnittstelle des Stabendgelenks geholt.
Nachdem die Daten (NonlinearityDiagram) ausgefüllt wurden, werde diese wieder mit SetData() übergeben:
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 iModdata = 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 = WorkingDagramType
' Définir de nouvelles données
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=DiagrammeAfterLastStepType.TaringDiagramType
nldHing.PositiveZone = tbl1
nldHing.Symetric = 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
La procédure est similaire pour les appuis nodaux et les autres non-linéarités.