Program RFEM 6 pro statické výpočty tvoří základ modulárního softwarového systému. Hlavní program RFEM 6 slouží k zadávání konstrukcí, materiálů a zatížení u rovinných i prostorových konstrukčních systémů, které se skládají z desek, stěn, skořepin a prutů. Program umožňuje vytvářet smíšené konstrukce, stejně jako modelovat tělesa a kontaktní prvky.
RSTAB 9 je výkonný program pro analýzu 3D prutových konstrukcí, který statikům pomáhá vyhovět požadavkům moderního stavebního inženýrství a odráží nejnovější trendy v oboru.
Jste často příliš dlouho zaměstnáni výpočtem průřezů? Software Dlubal a samostatný program RSECTION vám usnadní práci stanovením a analýzou napětí pro různé průřezy.
Víte vždy, odkud vítr vane? Ve směru inovace, samozřejmě! S RWIND 2 máte k dispozici program, který využívá digitální větrný tunel pro numerickou simulaci proudění větru. Program toto proudění aplikuje na libovolné geometrie budov a stanoví zatížení větrem působící na jejich povrch.
Hledáte přehled oblastí zatížení sněhem, větrem a zemětřesením? Pak jste zde správně. Mapy oblastí zatížení umožňují rychle a snadno stanovit oblasti zatížení sněhem, větrem a zemětřesením podle Eurokódu a dalších mezinárodních norem.
Chcete si vyzkoušet sílu programů Dlubal? Je to vaše příležitost! S bezplatnou 90denní plnou verzí si můžete všechny naše programy plně otestovat.
Kvůli vydání nové generace programů Dlubal musel být vzhled a funkce extranetu upraven. Možnost stáhnout autorizační soubor samozřejmě zůstala. Jen je trochu skryta.
Po úspěšném přihlášení do extranetu je nutné jít do záložky:Licenses > Authorization Files for Download | RFEM 5, RSTAB 8, ... > Autorization Files for Download ...
Programy nové generace (např. RFEM 6, RSTAB 9, RSECTION) využívají pro autorizaci online přihlášení a autorizační soubor proto již nepotřebují.
Natočení uzlové podpory se provádí pomocí uživatelsky definovaného souřadného systému. V následujícím příkladu je uzlová podpora natočena o 45° okolo osy z. Není přitom nutné zadávat nový souřadný systém pomocí uzlů. V tomto případě stačí použít volbu RotatedSystemType, která umožňuje prostorové natočení podpory třemi rotacemi okolo os x, y a z. Rotace se zadává v radiánech:
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' get interface of modeldataDim iModData As RFEM5.IModelData2Set iModData = iMod.GetModelData' get interface of nodal supportDim iNs As RFEM5.INodalSupportSet iNs = iModData.GetNodalSupport(1, AtNo)' get nodal support dataDim ns As RFEM5.NodalSupportns = iNs.GetData' modify datans.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' set nodal support dataiModData.PrepareModificationiNs.SetData nsiModData.FinishModificatione:If Err.Number <> 0 Then MsgBox Err.description, vbCritical, Err.SourceiMod.GetApplication.UnlockLicenseSet iMod = NothingEnd Sub
Program převezme stávající uzlovou podporu z aktuálně otevřeného modelu a upraví ji. Vzhledem k tomu, že uživatelsky definovaný souřadný systém není přímou součástí rozhraní INodalSupport uzlové podpory, je samozřejmě možné při vytváření uzlové podpory přenášet také natočení.
Parametry výpočtu zatěžovacího stavu není možné zadat při jeho vytvoření, ale až následně přes rozhraní existujícího zatěžovacího stavu. Pro získání rozhraní zatěžovacího stavu je třeba nejdříve získat rozhraní 'IModel' a '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
Pomocí 'ILoads.GetLoadcase' lze získat rozhraní pro určitý zatěžovací stav. Toto rozhraní poskytuje funkce 'GetAnalysisParameters' a 'SetAnalysisparameters', pomocí nichž lze parametry číst a zapisovat.
Stejný postup lze použít i pro kombinace zatížení.
Pro mazání prvků slouží funkce "DeleteObjects()" v rozhraní dat modelu. Smazání všech prutů potom vypadá následovně:
Je nutné vzít do úvahy, že funkce "DeleteObjects" funguje pouze s číslem objektů a ne s indexem objektů. Tato čísla se přenášejí jako řetězec oddělená čárkami.
Z tohoto důvodu bylo třeba nejdříve načíst všechny pruty. Poté pole prutu proběhlo ve smyčce a do řetězce se zanesla všechna čísla prutů.
Deformace prutů je možné načíst např. pomocí funkce "GetMemberDeformations()". Tato funkce očekává číslo, typ metody počítání pro pruty (číslo prutu / číslo v seznamu) a jaký souřadný systém se má použít. Přitom je možné vybrat, zda se použije lokální osový systém, hlavní osový systém, nebo globální souřadný systém:
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
Malý program pro prut načte lokální deformace (memDefs_L) v osách prutu a hlavních osách (memDefs_P) a globální deformace v osách prutu (memDefs_G).
Teplotní zatížení je typem zatížení na plochu, a proto se aplikuje stejně jako všechna ostatní zatížení na plochu. K tomu je třeba nejdříve získat rozhraní k modelu, poté k zatížení a poté ke speciálnímu zatěžovacímu stavu:
Sub surface_temp_load_test()' get interface from the opened model and lock the licence/programDim iModel As RFEM5.IModel3Set iModel = GetObject(, "RFEM5.Model")iModel.GetApplication.LockLicenseOn Error GoTo eDim iModelData As RFEM5.IModelData2Set iModelData = iModel.GetModelDataDim iLoa As RFEM5.iLoadsSet iLoa = iModel.GetLoadsDim iLc As RFEM5.ILoadCaseSet iLc = iLoa.GetLoadCase(1, AtNo)Dim surfLoad As RFEM5.SurfaceLoadsurfLoad.no = 1surfLoad.Type = TemperatureTypesurfLoad.Distribution = UniformTypesurfLoad.SurfaceList = "1"surfLoad.Magnitude1 = 10surfLoad.Magnitude4 = 40iLc.PrepareModificationiLc.SetSurfaceLoad surfLoadiLc.FinishModificatione: If Err.Number <> 0 Then MsgBox Err.description, , Err.SourceSet iModelData = NothingiModel.GetApplication.UnlockLicenseSet iModel = NothingEnd Sub
Pro konstantní teplotní zatížení se používají parametry Magnitude1 a Magnitude4. Zde je Tc Magnitude1 a dT je Magnitude4. Pokud použijeme proměnné zatížení, použijí se pro ostatní rohové body pro Tc Magnitude2 a Magnitude3 a pro dT analogicky Magnitude5 a Magnitude6.
Parametry modelu lze upravovat pomocí rozhraní IModel (od 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
Pouze pomocí funkce GetFormulaParameters() je možné načíst všechny parametry. Upravené nebo nové parametry lze poté znovu přenést jako seznam pomocí funkce SetFormulaParameters(). Nelze tedy načíst ani zapsat žádné jednotlivé parametry.
Je třeba poznamenat, že hodnota "Value" vztahující se k jejímu typu (ValueTyp) a její jednotce (Unit) musí ležet v definovaných mezích (RangeOfValues), jinak se zobrazí chybové hlášení. Pokud je hodnota spočítána jako v příkladu, je irelevantní a hodnota vypočítaná pomocí vzorce (Formula) musí ležet v daných mezích, pokud jsou definovány.
Možnost "Spojit linie/pruty" je možné realizovat pomocí funkcí "ConnectLines()" a "ConnectMembers()". Obě funkce očekávají string s čísly linií nebo prutů:
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
V tomto příkladu se tak spojí linie 1 a 2 a v průsečíku se vytvoří uzel. Totéž platí pro pruty 1 a 2, u kterých se také vytvoří nový uzel v průsečíku.
Pro výběr objektů je k dispozici v rozhraní IModelData (resp. také v IModeldata2 apod.) funkce "SelectObjects". Funkce očekává typ objektu a čísla objektů jako řetězec. Zde je krátký příklad:
Sub select_objects()Dim model As RFEM5.modelSet model = GetObject(, "RFEM5.Model")model.GetApplication.LockLicenseOn Error GoTo e Dim iModdata As IModelData2 Set iModdata = model.GetModelData ' enable Selections iModdata.EnableSelections True ' select nodes 2-3 and lines 1 and 3 iModdata.SelectObjects ModelObjectType.NodeObject, "2-3" iModdata.SelectObjects ModelObjectType.LineObject, "1,3" ' deselect nodes and lines iModdata.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
V horní části se aktivují výběry a poté se vyberou uzly 2 až 3 a linie 1 a 3. Poté se linie a uzly odznačí pomocí prázdného řetězce.
Pokud chcete číst nebo upravovat vybrané objekty, potřebujete funkci "IModelData.EnableSelections" (nachází se také v kódu výše). Pokud je funkce označena jako "True", načtou se pouze vybrané uzly například pomocí funkce "IModelData.GetNodes()".