Domanda:
Come posso creare uno svincolo finale dell'asta con un "diagramma" utilizzando l'interfaccia COM?
Risposta:
Per creare un elemento non lineare, come uno svincolo finale dell'asta con un diagramma o un cedimento, è necessario creare prima lo svincolo finale dell'asta. Se RFEM conosce lo svincolo finale dell'asta, può essere ottenuto utilizzando l'interfaccia IMemberEndRelease. Questa interfaccia utilizza i metodi GetData() e SetData(). Entrambi i metodi sono in grado di leggere o scrivere i dati di un semplice rilascio dell'estremità dell'asta del tipo MemberEndRelease, nonché i dati di non linearità.
Nell'esempio seguente, il rilascio viene attivato per la direzione x nello svincolo finale dell'asta, quindi WorkingDiagramType viene impostato come non linearità nella direzione x. Dopo aver trasferito questi dati a RFEM utilizzando il blocco Prepare-Finish-Modifica, crea la non linearità internamente. Per inserire i dati, i dati esistenti vengono prima ottenuti dall'interfaccia dello svincolo finale dell'asta utilizzando GetData().
Dopo aver inserito i dati (NonlinearityDiagram), questi vengono trasferiti di nuovo utilizzando SetData():
Sub Set NLDiagramma()
Dim modello Come RFEM5.model
Set model = GetObject(, "RFEM5.Model")
On Error GoTo e
Dim iApp As RFEM5.Application
Imposta iApp = model.GetApplication
iApp.LockLicense
iApp.Show
Dim iModelData as RFEM5.iModelData
Imposta iModelData = model.GetModelData
' modifica svincolo finale dell'asta
' imposta la non linearità "Diagramma" per la traduzione x
Dim iMemHing As RFEM5.IMemberHinge
Imposta iMemHing = iModelData.GetMemberHinge(1, AtNo)
Dim memHing As RFEM5.MemberHinge
memHing = iMemHing.GetData ()
memHing.TranslationalCostantX = 0
memHing.TranslationalNonlinearityX = WorkingDiagramType
' Imposta nuovi dati
iModelData.PrepareModification
iMemHing.SetData memHing
iModelData.FinishModification
' crea diagramma
Dim tbl1() As Double
ReDim tbl1 (1, 1)
tbl1(0, 0) = 0 ' ux
tbl1(0, 1) = 0 ' Px
tbl1(1, 0) = 0,02 ' ux (mm)
tbl1(1, 1) = 2000 ' Px (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
Imposta iNldiag = iMemHing.GetNonlinearity(AlongAxisX)
' Imposta nuovi dati
iModelData.PrepareModification
iNldiag.SetData nldHing
iModelData.FinishModification
e: If Err.Number 0 Then MsgBox Err.description, , Err.Source
model.GetApplication.UnlockLicense
End Sub
La procedura è simile per i vincoli esterni nodali e altre non linearità.