Программа для расчёта конструкций RFEM 6 является основой нашей модульной системы программного обеспечения. Основная программа RFEM 6 используется для задания конструкций, материалов и нагрузок плоских и пространственных конструктивных систем, состоящих из плит, стен, оболочек и стержней. Программа также позволяет создавать комбинированные конструкции, а также моделировать тела и контактные элементы.
RSTAB 9 - это мощная программа для расчёта и проектирования 3D конструкций балок, каркасов или ферм, которая которая помогает инженерам-строителям соответствовать современным требованиям и отражает последние тенденции в области строительного проектирования.
Вы часто тратите слишком много времени на расчёт сечений? Программное обеспечение Dlubal и автономная программа RSECTION облегчают вашу работу, определяя характеристики и выполняя расчёт напряжений для различных сечений.
Вы всегда знаете, откуда дует ветер? Конечно, со стороны инноваций! RWIND 2 - это программа, которая использует цифровую аэродинамическую трубу для численного моделирования потоков ветра. Программа моделирует эти потоки вокруг зданий любой геометрической формы и определяет ветровые нагрузки на поверхности.
Вам нужен обзор зон снеговой, ветровой и сейсмической нагрузок? Тогда вы находитесь по адресу. Используйте инструмент Geo-Zone Tool для быстрого и лёгкого определения снеговых нагрузок, скоростей ветра и данных по сейсмике в соответствии с ASCE 7‑16 и другими нормативами различных стран.
Хотите попробовать в работе функции программ Dlubal Software? У вас есть такая возможность! Бесплатная полная версия на 90 дней позволяет вам в полной мере попробовать в работе все наши программы.
Для задания расчётных длин в RFEM 6 есть два варианта. First, edit the member and navigate to the "Design Types" Tab. Second, create a new effective lengths definition.
Third, set whether you would like to calculate the critical moment according to the Eigenvalue method or Chapter F from the AISC. Fourth, navigate to the "Nodal Supports and Effective Lengths" tab. Within this tab there are two different methods that can be used.
Метод 1: Узловые опоры и расчетные длины
Referencing Member No. 1 in the attached model, for this column you can see a how the effective lengths for the Start, End, and Intermediate nodes are defined. First, click on Select Member or Member Set and then select the member. This will activate the intermediate nodes along the member length in the table. Next, check whether the node can move in the y/z axis (weak/strong axis), rotate about its local x-axis (torsion), and about its local z-axis (LTB).
The Warping (ω) input options will adjust the effective length for LTB, similar to the rotational z-axis restraint. For Ch. F calculations, the warping can be fully restrained or released. For Eigenvalue calculations, in addition to the fully restrained or released option, there is also the ability to set partial fixity with a warping spring constant.
Top and bottom flanges can also be restrained separately by fixing the y-axis and by releasing (unchecking) the rotation about the local x-axis restraint (torsion).
Метод 2: "K" Factors and Absolute Values
Referencing Member No. 5 in the attached model, the effective length factors can be used to define the unbraced length directly and/or apply the appropriate member end conditions. To adjust the unbraced lengths directly instead of utilizing the nodes on the member (Method 1), the "K" factors can be entered manually in the table below. Or the "Absolute Values" can be entered by selecting the option "Absolute Values". Then the unbraced length itself can be entered manually instead. This method is best used when there are no intermediate nodes currently present on the member.
Поворот узловой опоры определяется посредством пользовательской системы координат. В следующем примере узловая опора повернута на 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 узловой опоры, то поворот, конечно же, можно передать при создании узловой опоры.
Параметры расчета загружения нельзя задать сразу при его создании, а только потом, посредством интерфейса существующего загружения. Чтобы получить доступ к интерфейсу загружения, нужно сначала получить доступ к интерфейсам «IModel» и «ILoads»:
Sub test_analysis_parameters()Dim iApp As RFEM5.ApplicationSet iApp = GetObject(, "RFEM5.Application")iApp.LockLicenseDim iMod As RFEM5.IModel3Set iMod = iApp.GetActiveModelOn Error GoTo e' get interface of loadsDim iLds As RFEM5.iLoadsSet iLds = iMod.GetLoads' get interface of load caseDim iLc As RFEM5.ILoadCaseSet iLc = iLds.GetLoadCase(1, AtNo)' get analysis parametersDim param_analy As RFEM5.AnalysisParametersparam_analy = iLc.GetAnalysisParameters' change analysis parametersparam_analy.Method = Postcriticalparam_analy.ModifyLoadingByFactor = Trueparam_analy.LoadingFactor = 1.5' ...' set new analysis parametersiLds.PrepareModificationiLc.SetAnalysisParameters param_analyiLds.FinishModificatione:If Err.Number <> 0 Then MsgBox Err.description, vbCritical, Err.SourceiMod.GetApplication.UnlockLicenseSet iMod = NothingEnd Sub
Теперь используйте команду ILoads.GetLoadcase, чтобы получить доступ к интерфейсу для конкретного загружения. Данный интерфейс затем предоставляет и функции «GetAnalysisParameters» и «SetAnalysisparameters», которые можно использовать также для считывания и записи параметров.
Одинаковую процедуру можно применить и для сочетаний нагрузок.
Для удаления элементов используется в интерфейсе данных модели функция «DeleteObjects()». Удаление всех стержней затем выполняется следующим образом:
Обратите внимание на то, что функция «DeleteObjects» работает только с номером объекта, а не с его индексом. Эти номера затем передаются в виде строки, разделенной запятыми.
Поэтому нужно сначала выбрать все стержни, после чего поле стержня пропускается по циклу и в строку уже вводятся все номера стержней были.
Деформации стержней можно считать, например, с помощью функции "GetMemberDeformations()". Однако эта функция ожидает указание номера, типа метода подсчета стержней (номер стержня/номер в списке) и то, какую систему координат следует использовать. Пользователь так может выбрать, будет ли использоваться местная система координат, система главных осей или общая система координат:
Sub test_results_member_axis()Dim iApp As RFEM5.ApplicationSet iApp = GetObject(, "RFEM5.Application")iApp.LockLicenseDim iMod As RFEM5.IModel3Set iMod = iApp.GetActiveModelOn Error GoTo e'get interface for calculationDim iCalc As RFEM5.ICalculation2Set iCalc = iMod.GetCalculation'get interface for resultsDim iRes As RFEM5.IResults2Set iRes = iCalc.GetResultsInFeNodes(LoadCaseType, 1)'get deformations in local coordinate systemDim memDefs_L() As RFEM5.MemberDeformationsmemDefs_L = iRes.GetMemberDeformations(1, AtNo, LocalMemberAxes)'get deformations in global coordinate systemDim memDefs_G() As RFEM5.MemberDeformationsmemDefs_G = iRes.GetMemberDeformations(1, AtNo, GlobalAxes)'get deformations in principal coordinate systemDim memDefs_P() As RFEM5.MemberDeformationsmemDefs_P = iRes.GetMemberDeformations(1, AtNo, LocalPrincipalAxes)e:If Err.Number <> 0 Then MsgBox Err.description, vbCritical, Err.SourceiMod.GetApplication.UnlockLicenseSet iMod = NothingEnd Sub
Эта небольшая программа способна считать местные деформации (memDefs_L) в осях стержня и главных осях (memDefs_P), а также общие деформации в осях стержня (memDefs_G).
Параметры модели можно легко изменить посредством интерфейса IModel (начиная с версии IModel3):
Sub test_parameter()Dim iApp As RFEM5.ApplicationSet iApp = GetObject(, "RFEM5.Application")iApp.LockLicenseDim j As Integerj = iApp.GetModelCountDim iMod As RFEM5.IModel3Set iMod = iApp.GetActiveModelOn Error GoTo eDim formParams() As RFEM5.FormulaParameter' get all formula parametersformParams = iMod.GetFormulaParameters' delete all formula parametersiMod.CleanFormulaParameters' set list of formula parametersReDim Preserve formParams(0 To UBound(formParams, 1) + 1)formParams(UBound(formParams, 1)).Name = "p"formParams(UBound(formParams, 1)).Unit = "m"formParams(UBound(formParams, 1)).UnitType = LengthUnitTypeformParams(UBound(formParams, 1)).Value = 0formParams(UBound(formParams, 1)).ValueType = DoubleTypeformParams(UBound(formParams, 1)).Comment = "new parameter"formParams(UBound(formParams, 1)).Formula = "b/3"formParams(UBound(formParams, 1)).RangeOfValues = "(3;5.5>"iMod.SetFormulaParameters formParamse:If Err.Number <> 0 Then MsgBox Err.description, vbCritical, Err.SourceiMod.GetApplication.UnlockLicenseSet iMod = NothingEnd Sub
Однако прочитать все параметры можно только с помощью функции GetFormulaParameters(). Благодаря функции SetFormulaParameters(), затем можно повторно передавать как измененные, так и новые параметры, но только в виде списка. Это значит, что изменение и считывание отдельных параметров невозможно.
Следует также отметить, что «Значение», связанное с определенным типом (ValueTyp) и единицей измерения (Unit), должно быть всегда в заданных пределах (RangeOfValues), иначе появится сообщение об ошибке. Но если значение рассчитывается так, как показано в примере, тогда оно не имеет значения. В таком случае потом важно, чтобы в пределах, если они заданы, находилось значение, рассчитанное по заданной формуле (Formula).
Функцию «Соединить линии/стержни» можно использовать с помощью команды «ConnectLines()» или «ConnectMembers()». В обеих командах требуется затем указать строку с номерами требуемых линий или стержней:
Sub test_connect()Dim iMod As RFEM5.modelSet iMod = GetObject(, "RFEM5.Model")iMod.GetApplication.LockLicenseOn Error GoTo eDim iModData As RFEM5.IModelData2Set iModData = iMod.GetModelData()iModData.PrepareModificationiModData.ConnectLines ("3,4")iModData.ConnectMembers ("1,2")iModData.FinishModificatione:If Err.Number <> 0 Then MsgBox Err.description, vbCritical, Err.SourceiMod.GetApplication.UnlockLicenseSet iMod = NothingEnd Sub
В данном примере так соединятся Линия 1 и Линия 2, и в точке пересечения будет создан узел. То же относится к Стержню 1 и Стержню 2, где в точке пересечения тоже создастся новый узел.
Коэффициенты расчетных длин передаются посредством интерфейса для стержня (IMember), который называется SetEffectiveLengths (). Для считывания данных затем используйте функцию GetEffectiveLengths ():
// get interface to running RFEM application.iApp = Marshal.GetActiveObject("RFEM5.Application") as IApplication;iApp.LockLicense();// get interface to active RFEM model.iModel = iApp.GetActiveModel();// get interface to model data.IModelData2 iModData = iModel.GetModelData() as IModelData2;// get interface to member 1IMember iMem = iModData.GetMember(1, ItemAt.AtNo);MemberEffectiveLengths memEffLen = iMem.GetEffectiveLengths();memEffLen.No = 1;memEffLen.CheckBucklingLoad = true;memEffLen.Enabled = true;memEffLen.FactorU = 1.1;memEffLen.FactorV = 1.2;memEffLen.FactorY = 1.3;memEffLen.FactorZ = 1.4;// set new effective lengths dataiModData.PrepareModification();iMem.SetEffectiveLengths(memEffLen);iModData.FinishModification();
Обратите, пожалуйста, внимание также на то, что параметры расчетных длин (например, EffectiveLengthY) для конструкции MemberEffectiveLengths и параметры CriticalBucklingLoad можно только считывать.