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. Si RFEM reconnaît l’articulation de barre, elle peut être obtenue à l’aide de l’interface IMemberEndRelease. Cette interface utilise les méthodes GetData() et SetData(). Ces deux méthodes permettent de lire ou écrire des données d’articulation de barre de type MemberEndRelease ainsi que les données de non-linéarité.
Dans l’exemple suivant, la libération est d’abord activée pour la direction x dans l’articulation de barre, puis le type WorkingDiagramType est défini comme non-linéarité dans la direction x. Après avoir transféré ces données à RFEM à l’aide du bloc Prepare-Finish-Modification, la non-linéarité est créée en interne. Pour entrer les données, les données existantes sont d’abord extraites de l’interface de l’articulation de barre à l’aide de GetData().
Après avoir entré les données (NonlinearityDiagram), elles sont à nouveau transférées à l’aide de 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
La procédure est similaire pour les appuis nodaux et les autres non-linéarités.