Программа для расчёта конструкций RFEM 6 является основой нашей модульной системы программного обеспечения. Основная программа RFEM 6 используется для задания конструкций, материалов и нагрузок плоских и пространственных конструктивных систем, состоящих из плит, стен, оболочек и стержней. Программа также позволяет создавать комбинированные конструкции, а также моделировать тела и контактные элементы.
RSTAB 9 - это мощная программа для расчёта и проектирования 3D конструкций балок, каркасов или ферм, которая которая помогает инженерам-строителям соответствовать современным требованиям и отражает последние тенденции в области строительного проектирования.
Вы часто тратите слишком много времени на расчёт сечений? Программное обеспечение Dlubal и автономная программа RSECTION облегчают вашу работу, определяя характеристики и выполняя расчёт напряжений для различных сечений.
Вы всегда знаете, откуда дует ветер? Конечно, со стороны инноваций! RWIND 2 - это программа, которая использует цифровую аэродинамическую трубу для численного моделирования потоков ветра. Программа моделирует эти потоки вокруг зданий любой геометрической формы и определяет ветровые нагрузки на поверхности.
Вам нужен обзор зон снеговой, ветровой и сейсмической нагрузок? Тогда вы находитесь по адресу. Используйте инструмент Geo-Zone Tool для быстрого и лёгкого определения снеговых нагрузок, скоростей ветра и данных по сейсмике в соответствии с ASCE 7‑16 и другими нормативами различных стран.
Хотите попробовать в работе функции программ Dlubal Software? У вас есть такая возможность! Бесплатная полная версия на 90 дней позволяет вам в полной мере попробовать в работе все наши программы.
Функцию «Соединить линии/стержни» можно использовать с помощью команды «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, где в точке пересечения тоже создастся новый узел.
Для выбора объектов имеется в интерфейсе IModelData (или IModeldata2 и т.п.) функция «SelectObjects». Функция ожидает, что тип и номер объекта будет задан в качестве строки. Ниже представляем краткий пример:
Sub select_objects()Dim model As RFEM5.modelSet model = GetObject(, "RFEM5.Model")model.GetApplication.LockLicenseOn Error GoTo e Dim iModdata As IModelData2Set iModdata = model.GetModelData ' enable SelectionsiModdata.EnableSelections True ' select nodes 2-3 and lines 1 and 3iModdata.SelectObjects ModelObjectType.NodeObject, "2-3"iModdata.SelectObjects ModelObjectType.LineObject, "1,3" ' deselect nodes and linesiModdata.SelectObjects ModelObjectType.NodeObject, ""iModdata.SelectObjects ModelObjectType.LineObject, "" e: If Err.Number <> 0 Then MsgBox Err.description, , Err.Sourcemodel.GetApplication.UnlockLicenseSet iModdata = NothingSet model = NothingEnd Sub
В верхней части активируются элементы для выбора, а затем выберутся узлы 2–3 и линии 1 и 3. Затем, с помощью пустой строки отменяется выбор узлов и линий.
Если вам нужно прочитать или изменить выбранные объекты, тогда требуется применение функции «IModelData.EnableSelections» (она тоже находится в вышеприведенном коде). Если функция обозначена как «True», тогда будут при использовании функции «IModelData.GetNodes ()» загружены, например, только выбранные узлы.
В данном случае виновата ошибка, возникающая в программе EXCEL VBA, которую мы не способны исправить. По этой причине был также создан новый объект RFEM.RfLine (вместо RFEM.Line), который можно использовать для продолжения вашей работы. Ниже представляем краткий пример:
Sub test_RfLine() Dim iModel As RFEM5.IModel2 Set iModel = GetObject(, "RFEM5.Model") iModel.GetApplication.LockLicense On Error GoTo e Dim iModelData As RFEM5.IModelData2 Set iModelData = iModel.GetModelData Dim lines() As RFEM5.RfLine lines = iModelData.GetLines e: If Err.Number <> 0 Then MsgBox Err.Description, , Err.Source Set iModelData = Nothing iModel.GetApplication.UnlockLicense Set iModel = Nothing End Sub
Sub test_section()' get interface from the opened model and lock the licence/program Dim iModel As RFEM5.IModel3 Set iModel = GetObject(, "RFEM5.Model") iModel.GetApplication.LockLicense On Error GoTo E Dim iSecs As RFEM5.ISections Set iSecs = iModel.GetSections()
' first delete all sections iSecs.PrepareModification iSecs.DeleteObjects ("All") iSecs.FinishModification ' set section on solid Dim sec As RFEM5.Section sec.EdgePointA.X = 2 sec.EdgePointA.Y = 5 sec.EdgePointA.Z = 0 sec.EdgePointB.X = 2 sec.EdgePointB.Y = 8 sec.EdgePointB.Z = 0 sec.no = 1 sec.Name = "solid section" sec.Plane = GlobalPlaneInPositiveX sec.ShowValuesInIsolines = False sec.Type = SectionOnSolidSectionLine sec.ObjectList = "1" iSecs.PrepareModification iSecs.SetSection sec iSecs.FinishModification
' set section on surface sec.EdgePointA.X = 2 sec.EdgePointA.Y = 0 sec.EdgePointA.Z = 0 sec.EdgePointB.X = 2 sec.EdgePointB.Y = 3 sec.EdgePointB.Z = 0 sec.no = 2 sec.Name = "surface section" sec.Plane = GlobalPlaneInPositiveX sec.ShowValuesInIsolines = True sec.Type = SectionViaSurfacePlane sec.ObjectList = "1" sec.Vector.X = 0 sec.Vector.Y = 0 sec.Vector.Z = 1 iSecs.PrepareModification iSecs.SetSection sec iSecs.FinishModification
' get results Dim iCalc As ICalculation2 Set iCalc = iModel.GetCalculation Dim iRes As IResults2 Set iRes = iCalc.GetResultsInFeNodes(LoadCaseType, 1) Dim secRes() As RFEM5.SectionResult secRes = iRes.GetResultsInSection(2, AtNo, ShearForceVy,ContinuousDistributionWithinObjects, False)
Для передачи нескольких элементов необходимо сначала создать в VBA поле (массив):
Размеры узлов (от 0 до 2) как в RFEM5.Node
Затем вы можете использовать метод IModelData.SetNodes () для передачи всех узлов в поле (в данном случае, трех элементов 0,1,2) одновременно.
Эти методы доступны также для следующих конструктивных элементов, например:
IModelData.SetLines ()
IModelData.SetMembers ()
IModelData.SetSurfaces ()