391x
002990
2021-11-26

FAQ 005138 | Come posso creare uno svincolo finale dell'asta con un "diagramma" utilizzando l'interfaccia COM?

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à.