Программа для расчёта конструкций RFEM 6 является основой нашей модульной системы программного обеспечения. Основная программа RFEM 6 используется для задания конструкций, материалов и нагрузок плоских и пространственных конструктивных систем, состоящих из плит, стен, оболочек и стержней. Программа также позволяет создавать комбинированные конструкции, а также моделировать тела и контактные элементы.
RSTAB 9 - это мощная программа для расчёта и проектирования 3D конструкций балок, каркасов или ферм, которая которая помогает инженерам-строителям соответствовать современным требованиям и отражает последние тенденции в области строительного проектирования.
Вы часто тратите слишком много времени на расчёт сечений? Программное обеспечение Dlubal и автономная программа RSECTION облегчают вашу работу, определяя характеристики и выполняя расчёт напряжений для различных сечений.
Вы всегда знаете, откуда дует ветер? Конечно, со стороны инноваций! RWIND 2 - это программа, которая использует цифровую аэродинамическую трубу для численного моделирования потоков ветра. Программа моделирует эти потоки вокруг зданий любой геометрической формы и определяет ветровые нагрузки на поверхности.
Вам нужен обзор зон снеговой, ветровой и сейсмической нагрузок? Тогда вы находитесь по адресу. Используйте инструмент Geo-Zone Tool для быстрого и лёгкого определения снеговых нагрузок, скоростей ветра и данных по сейсмике в соответствии с ASCE 7‑16 и другими нормативами различных стран.
Хотите попробовать в работе функции программ Dlubal Software? У вас есть такая возможность! Бесплатная полная версия на 90 дней позволяет вам в полной мере попробовать в работе все наши программы.
Um ein nicht lineares Element wie ein Stabendgelenk mit Diagramm oder Ausfall anlegen zu können, muss zunächst das Stabendgelenk angelegt werden. 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.modelSet model = GetObject(, "RFEM5.Model")On Error GoTo eDim iApp As RFEM5.ApplicationSet iApp = model.GetApplicationiApp.LockLicenseiApp.ShowDim iModelData As RFEM5.iModelDataSet iModelData = model.GetModelData' modify member end release' set nonlinearity "Diagram" for x translationDim iMemHing As RFEM5.IMemberHingeSet iMemHing = iModelData.GetMemberHinge(1, AtNo)Dim memHing As RFEM5.MemberHingememHing = iMemHing.GetData()memHing.TranslationalConstantX = 0memHing.TranslationalNonlinearityX = WorkingDiagramType' Set new dataiModelData.PrepareModificationiMemHing.SetData memHingiModelData.FinishModification' create diagramDim tbl1() As DoubleReDim tbl1(1, 1)tbl1(0, 0) = 0 ' u-xtbl1(0, 1) = 0 ' P-xtbl1(1, 0) = 0.02 ' u-x (mm)tbl1(1, 1) = 2000 ' P-x (N)Dim nldHing As RFEM5.NonlinearityDiagramnldHing.ForceType = StiffnessDiagramForceType.NoneStiffnessForcenldHing.PositiveZoneType = DiagramAfterLastStepType.TearingDiagramTypenldHing.PositiveZone = tbl1nldHing.Symmetric = TrueDim iNldiag As RFEM5.INonlinearityDiagramSet iNldiag = iMemHing.GetNonlinearity(AlongAxisX)' Set new dataiModelData.PrepareModificationiNldiag.SetData nldHingiModelData.FinishModificatione: If Err.Number <> 0 Then MsgBox Err.description, , Err.Sourcemodel.GetApplication.UnlockLicenseEnd Sub
Die Vorgehensweise ist für Knotenlager und andere Nichtlinearitäten analog.
Поворот узловой опоры определяется посредством пользовательской системы координат. В следующем примере узловая опора повернута на 45 ° вокруг оси z. Нет необходимости определять новую систему координат через узлы. В этом случае достаточно использовать параметр RotatedSystemType, который позволяет выполнить пространственный поворот опоры с помощью трех поворотов вокруг оси x, y и z. Поворот задается в радианах:
Sub test_nodal_support ()Dim iApp As RFEM5.ApplicationSet iApp = GetObject(, "RFEM5.Application")iApp.LockLicenseDim iMod As RFEM5.IModel3Set iMod = iApp.GetActiveModelOn Error GoTo e' получить интерфейс данных моделиDim iModData As RFEM5.IModelData2Set iModData = iMod.GetModelData' получить интерфейс узловой опорыРазмеры как в RFEM5.INodalSupportУстановите iNs = iModData.GetNodalSupport (1, AtNo)' получить данные узловой опорыРазмеры как в RFEM5.NodalSupportns = iNs.GetData' изменить данныеns.ReferenceSystem = UserDefinedSystemTypens.UserDefinedReferenceSystem.Axis1 = AxisXns.UserDefinedReferenceSystem.Axis2 = AxisYns.UserDefinedReferenceSystem.Type = RotatedSystemTypens.UserDefinedReferenceSystem.RotationAngles.X = 0ns.UserDefinedReferenceSystem.RotationAngles.Y = 0ns.UserDefinedReferenceSystem.RotationAngles.Z = 45 * 3,14159265359/180' задать данные узловой опорыiModData.PrepareModificationiNs.SetData nsiModData.FinishModificatione:If Err.Number <> 0 Then MsgBox Err.description, vbCritical, Err.SourceiMod.GetApplication.UnlockLicenseSet iMod = NothingEnd Sub
Программа берет существующую узловую опору из текущей открытой модели и модифицирует ее. Поскольку пользовательская система координат не является прямой частью интерфейса INodalSupport узловой опоры, то поворот, конечно же, можно передать при создании узловой опоры.
Чтобы можно было присвоить стержню эксцентриситет, обычно необходимо создать его перед самой настройкой стержня.
Другой подход затем показан в следующем примере, Другой подход затем показан в следующем примере, где сначала создается эксцентриситет, который потом назначается уже существующему стержню посредством его интерфейса:
'---------------------Sub SetEccentricity()'---------------------Dim model As RFEM5.modelSet model = GetObject(, "RFEM5.Model")model.GetApplication.LockLicenseOn Error GoTo eDim iModData As RFEM5.iModelDataSet iModData = model.GetModelData' create eccentricityDim eccens(0 To 0) As RFEM5.MemberEccentricityeccens(0).No = 1eccens(0).Comment = "test eccentricity"eccens(0).ReferenceSystem = LocalSystemTypeeccens(0).Start.X = 0eccens(0).Start.Y = 0eccens(0).Start.Z = 0eccens(0).End.X = 0eccens(0).End.Y = 0eccens(0).End.Z = 0eccens(0).HingeAtEndNode = Falseeccens(0).HingeAtStartNode = Falseeccens(0).HorizontalAlignment = Middleeccens(0).VerticalAlignment = Bottomeccens(0).TransverseOffset = Trueeccens(0).ReferenceObjectNo = 2eccens(0).ReferenceObjectType = MemberObjecteccens(0).HorizontalAxisOffset = Middleeccens(0).VerticalAxisOffset = Topeccens(0).StartAdjoiningMembersOffset = Falseeccens(0).EndAdjoiningMembersOffset = FalseiModData.PrepareModificationiModData.SetMemberEccentricities eccensiModData.FinishModification' add eccentricity to memberDim iMem As RFEM5.IMemberSet iMem = iModData.GetMember(1, AtNo)Dim mem As RFEM5.Membermem = iMem.GetDatamem.EccentricityNo = 1iModData.PrepareModificationiMem.SetData memiModData.FinishModificatione: If Err.Number <> 0 Then MsgBox Err.Description, , Err.Sourcemodel.GetApplication.UnlockLicenseEnd Sub
Поскольку эксцентриситеты стержней можно передавать лишь в виде поля, было в данных целях создано поле только с одним элементом. На прилагаемом изображении перечисляются эти элементы всегда со ссылкой на соответствующие графические элементы.
Трение - это тип нелинейности, который можно изменить только через интерфейс к шарниру стержня.
Для этого сначала необходимо создать шарнир стержня, если он еще не создан. Затем применим к шарниру стержня интерфейс IMemberHinge, а к нелинейности интерфейс IFriction. После того уже можно для изменения требуемых данных (в данном случае это запись Friction) использовать методы GetData и SetData:
Sub SetMemberHingeFriction() Dim model As RFEM5.model Set model = GetObject(, "RFEM5.Model") model.GetApplication.LockLicense On Error GoTo e Dim data As IModelData Set data = model.GetModelData Dim hinge(0 To 0) As RFEM5.MemberHinge hinge(0).No = 1 hinge(0).RotationalConstantX = 1 hinge(0).RotationalConstantY = 2 hinge(0).RotationalConstantZ = 3 hinge(0).TranslationalConstantX = 4 hinge(0).TranslationalConstantY = 5 hinge(0).TranslationalConstantZ = 6 hinge(0).Comment = "Member Hinge 1" hinge(0).TranslationalNonlinearityX = FrictionAType data.PrepareModification data.SetMemberHinges hinge data.FinishModification ' get interface for member hinge Dim imemhing As IMemberHinge Set imemhing = data.GetMemberHinge(1, AtNo) ' get interface for nonlinearity "friction" Dim iFric As IFriction Set iFric = imemhing.GetNonlinearity(AlongAxisX) ' get friction data Dim fric As Friction fric = iFric.GetData fric.Coefficient1 = 0.3 ' set friction data data.PrepareModification iFric.SetData fric data.FinishModification e: If Err.Number <> 0 Then MsgBox Err.Description, , Err.Source Set data = Nothing model.GetApplication.UnlockLicense Set model = NothingEnd Sub
В случае трения Vy + Vz, используется для настройки второго коэффициента команда Coefficient2. Постоянная пружины в диалоговом окне «Трение» затем определяется с помощью продольной пружины шарнира стержня. В данном конкретном случае это запись TranslationalConstantX , которая управляет настройками для направления x (см. Рисунок 01).
Интерфейс COM позволяет создавать и считывать пользовательские спектра реакций в программе RFEM и RSTAB.
Однако, для этого нужно сначала посредством интерфейса модели RFEM (IModel)получить доступ к интерфейсу модуля (IDynamModule). Данный интерфейс затем используется для создания случая модуля (IModuleCase), потому что именно он включает в себя функцию GetRSParams, которую можно использовать для считывания параметров спектра реакций. Однако с помощью функции SetRSParams можно записывать и новые данные. Способ применения данных функций затем объясняется в следующем коде:
Dim iApp As RFEM5.ApplicationDim iMod As RFEM5.modelSet iApp = GetObject(, "RFEM5.Application")Dim rs_no As Integerrs_no = 1On Error GoTo e' Checks RS-COM license and locks the application for using by COM. iApp.LockLicenseSet iMod = iApp.GetActiveModel' get module interfaceDim iDyn As IDynamModuleSet iDyn = iMod.GetModule("DynamPro")' get module case interfaceDim iDynCase As IModuleCaseSet iDynCase = iDyn.GetData ' set response spectra parametersDim rspara As RSParamsrspara = iDynCase.GetRSParams(rs_no) Dim rs_spec(0 To 10) As RSTableRow Dim index As Integerindex = 0rs_spec(index).s = 0.6rs_spec(index).T = 0 index = 1rs_spec(index).s = 1.33rs_spec(index).T = 0.153 index = 2rs_spec(index).s = 1.33rs_spec(index).T = 0.4 index = 3rs_spec(index).s = 1.204rs_spec(index).T = 0.443 index = 4rs_spec(index).s = 1.07rs_spec(index).T = 0.5 index = 5rs_spec(index).s = 0.7rs_spec(index).T = 0.761 index = 6rs_spec(index).s = 0.508rs_spec(index).T = 1.051 index = 7rs_spec(index).s = 0.367rs_spec(index).T = 1.453 index = 8rs_spec(index).s = 0.267rs_spec(index).T = 1.995 index = 9rs_spec(index).s = 0.16rs_spec(index).T = 2.584 index = 10rs_spec(index).s = 0.16rs_spec(index).T = 5 rspara.UserDefinedTable = rs_specrspara.Comment = "test rs"rspara.DefinitionType = ResponseSpectraType.UserDefinedRSrspara.description = "test rs via COM"rspara.Number = rs_no iDynCase.SetRSParams rs_no, rspara e: If Err.Number <> 0 Then MsgBox Err.description, , Err.Source iMod.GetApplication.UnlockLicense Set iMod = Nothing Set iApp = Nothing
Данный спектр реакции был создан по норме EN 1998‑1:2010 и состоит из 11 точек, причем сначала было создано поле типа RSTableRow, состоящее из 11 элементов, которое затем заполнилось данными и было сохранено в записи UserDefinedTable. Обмен данными затем осуществлялся с помощью команды SetRSParams.
Dim model As RFEM5.modelSet model = GetObject(, "RFEM5.Model")model.GetApplication.LockLicenseOn Error GoTo eDim data As IModelDataSet data = model.GetModelDataРазмеры стержней (0) Как в RFEM5.Member стержней (0) .No = 3стержней (0) .LineNo = 12члены (0) .Type = ResultBeamType стержни (0) .StartCrossSectionNo = 1стержни (0) .EndCrossSectionNo = 1 стержни (0) .Comment = "результирующая балка 1"data.PrepareModificationэлементы data.SetMembersdata.FinishModification
Dim iMem As IMemberУстановите iMem = data.GetMember (3, AtNo) Dim iRMem как IResultBeamУстановите iRMem = iMem.GetExtraData Dim RMem как ResultBeamRMem = iRMem.GetData RMem.IncludeSurfaces = "1"RMem.IncludeSolids = "все" RMem.Integrate = WithinCuboidGeneral Дим параметры (от 0 до 3) как двойные RMem.Parameters = параметрыRMem.Parameters (0) = 0,5RMem.Parameters (1) = 0,5RMem.Parameters (2) = 0,1RMem.Parameters (3) = 0,1 data.PrepareModificationiRMem.SetData RMemdata.FinishModification
Чтобы изменить существующий элемент, вам нужно получить интерфейс для соответствующего элемента, в данном случае на примере стержня:
Dim iModel As RSTAB8.modelУстановите iModel = GetObject (, "RSTAB8.Model") iModel.GetApplication.LockLicense Dim iModData As IModelDataУстановите iModData = iModel.GetModelData Dim iMem As RSTAB8.IMemberSet iMem = iModData.GetMember(1, AtNo)
Используйте этот код, чтобы получить интерфейс для стержня 1, который уже должен быть создан. Затем можно использовать метод интерфейса .GetData () для получения данных об элементах.
Если вы хотите изменить данные (например, поворот стержня), вы можете впоследствии передать их в программу в блоке Prepare-/FinishModification с помощью метода .SetData ().
Dim mem As RSTAB8.Membermem = iMem.GetData mem.Rotation.Angle = 0,5mem.Rotation.Type = RSTAB8.Angle iModData.PrepareModificationiMem.SetData memiModData.FinishModification