392x
002990
26.11.2021

FAQ 005138 | Jak mohu pomocí rozhraní COM vytvořit kloub na konci prutu s "diagramem"?

Dotaz:
Jak mohu pomocí rozhraní COM vytvořit kloub na konci prutu s "diagramem"?

Odpověď:
Aby bylo možné vytvořit nelineární prvek, jako je kloub na konci prutu s diagramem nebo neúčinností, je nutné nejdříve vytvořit kloub na konci prutu. Pokud program RFEM zná kloub na konci prutu, je přes rozhraní přístupný pomocí IMemberEndRelease. Rozhraní pak disponuje metodami GetData() a SetData(). Tyto metody jsou schopny načíst a zapsat jak data jednoduchých kloubů na konci prutu typu MemberEndRelease, tak data nelinearit.

V následujícím příkladu se nejdříve v kloubu na konci prutu uvolní kloub pro směr x a poté se jako nelinearita ve směru x nastaví typ WorkingDiagramType. Po přenosu těchto dat do programu RFEM pomocí bloku Prepare-Finish-Modification se interně vytvoří nelinearita. Pro doplnění údajů se nejdříve načtou existující data kloubu na konci prutu pomocí GetData() z rozhraní.

Po vyplnění se data (NonlinearityDiagram) předají zpátky pomocí 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

' úprava kloubu na konci prutu
' nastavení nelinearity "Diagram" pro posun x
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

' nastavení nových údajů
iModelData.PrepareModification
iMemHing.SetData memHing
iModelData.FinishModification

' vytvoření diagramu
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)

' nastavení nových údajů
iModelData.PrepareModification
iNldiag.SetData nldHing
iModelData.FinishModification

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

model.GetApplication.UnlockLicense

End Sub

Obdobně se postupuje v případě uzlových podpor a dalších nelinearit.