常见问题和解答 (FAQ)

搜索 FAQ

Show Filter Hide Filter





专题报告

专题报告

在“专题报告”板块中您能发现许多实用的技术文章和提示技巧,方便您使用 Dlubal 软件。

新闻简报

您能定期收到关于公司新闻、实用技巧、预定活动、促销和优惠券的信息。

  • 回答

    通过使用“ new”初始化应用程序(接口)类型的变量,RFEM/RSTAB在后台启动。 使用该变量可以使用CreateModel方法创建新模型,或者使用Close命令关闭程序

    下面以启动RSTAB的示例为例,程序创建一个带有节点的模型,然后再次结束该程序:


    Sub RSTAB_open_close()

    昏暗的文件名作为字符串
    文件名= Application.ActiveSheet.Cells(7,3)

    '启动RFEM
    Dim iApp as RSTAB8.Application
    设置iApp = New RSTAB8.Application

    iApp.LockLicense
    iApp.Show

    出现错误时转到E

    '创建模型
    Dim iMod为RSTAB8.IModel2
    设置iMod = iApp.CreateModel(文件名)
        
    '将数据添加到模型
    标注为RSTAB8.Node
    nd.no = 10
    nd.X = 1
    nd.Y = 2
    nd.Z = 3
        
    Dim iModdata为RSTAB8.iModelData
    设置iModdata = iMod.GetModelData
        
    iModdata.PrepareModification
    iModdata.SetNode nd
    iModdata.FinishModification
        
    iMod.Save文件名


    E:如果Err.Number <> 0则MsgBox Err.description,Err.Source
        
    设置iModdata = Nothing
    设置iMod = Nothing
    iApp.UnlockLicense
    iApp.Close
    设置iApp = Nothing
        
    结束子


    iApp.Show命令是可选的。 这样可以确保程序不会在后台显示,而是可以正常显示。

    在下载中可以找到一个EXCEL宏,其中包含RFEM和RSTAB的子程序。

    请注意,创建文件的文件夹必须存在。

  • 回答

    面的应力可以通过COM界面显示。 首先需要模型的接口(IModel),然后是计算的接口(ICalculation2)。 使用该接口可以得到结果接口(IResults2):

    子stresses_surfaces_example()
    iApp Dim作为RFEM5.Application
    Dim iModel为RFEM5.model
    设置iModel = GetObject(,“ RFEM5.Model”)

    出错时转到E

    如果不是iModel,那么
    '从模型中获取接口
    设置iApp = iModel.GetApplication
    iApp.LockLicense
        
    '从计算中获取接口
    Diim iCalc为RFEM5.ICalculation2
    设置iCalc = iModel.GetCalculation
        
    '从荷载工况1的结果获取接口
    Dim iRes格式为RFEM5.IResults2
    设置iRes = iCalc.GetResultsInFeNodes(LoadCaseType,1)
        
    '得到相等的应力
    Dim str_equ()as RFEM5.SurfaceEquivalentStresses
    str_equ = iRes.GetSurfaceEquivalentStresses(1,AtNo,VonMisesHypothesis)
        
    End If

    E:
    如果Err.Number <> 0
    MsgBox错误编号&“”&错误说明
    End If

    如果不是iApp,则为空
    iApp.UnlockLicense
    End If

    GetSurfaceEquivalentStresses函数需要指定计算假设。 在这种情况下将显示von Mises应力的结果。 请注意,COM接口使用SI单位,因此应力以N/m²传递。

  • 回答

    * .dll和* .tlb文件在您的计算机上可能未正确更新。 请按照以下步骤操作:

    1.在Dlubal.bak中重命名以下文件夹:

    C:\ Program Files(x86)\ Common Files \ Dlubal

    C:\ Program Files \ Common Files \ Dlubal


    2.重新安装RFEM或RSTAB。

    3.将文件从新创建的Dlubal文件夹移至相应的Dlubal.bak文件夹(全部覆盖)。

    4.将Dlubal.bak文件夹重命名为Dlubal。

  • 回答

    截面原则上是一个单元,例如一个杆件,并且也以同样的方式创建。 首先,需要连接对象。 对于一个杆件,它是IModelData,对于截面,它是ISections。 该接口可以在IModel3中找到:

    子test_section()
    '从打开的模型中获取界面并锁定许可证/程序
    Dim iModel如RFEM5.IModel3
    设置iModel = GetObject(,“ RFEM5.Model”)
    iModel.GetApplication.LockLicense
        
    出错时转到E
        
    Dim iSecs as RFEM5.ISections
    设置iSecs = iModel.GetSections()

    首先删除之前创建的所有部分,然后创建两个新的部分。
    第一部分是实心部分,具有可见的截面面积(见图01)。 数据输入与RFEM相似。 作为类型,选择“ SectionOnSecionalArea”,通过“ EdgePoint”设置截面的拐角点,并通过“矢量”定义截面的方向:

    '首先删除所有部分
    iSecs.PrepareModification
    iSecs.DeleteObjects(“全部”)
    iSecs.FinishModification
        
    '在实体上设置截面
    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
        
    秒编号= 1
    sec.Name =“实体截面”
    sec.Plane = GlobalPlaneInPositiveX
    sec.ShowValuesInIsolines = False
    sec.Type = SectionOnSolidSectionLine
    sec.ObjectList =“ 1”
        
    iSecs.PrepareModification
    iSecs.SetSection秒
    iSecs.FinishModification

    正如从其他元素已经知道的那样,新的部分最终被传送到Prepare-/FinishModification块中。 在第二部分中创建面截面(见图02)。 为此必须使用“ SectionViaSurfacePlane”类型。 除了截面方向的矢量外,还必须选择面截面结果的显示平面。 在下面的示例中,通过设置“ GlobalPlaneInPositiveX”选择xy平面。

    '在面上设置截面
    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 =“面截面”
    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秒
    iSecs.FinishModification

    也可以使用“ IResults2”接口的单独方法“ GetResultsInSection”获得截面的结果。 下面得出在截面上的剪力。 内力的分布通过“ ContinuousDistributionWithinObjects”设置为“在面内连续”:

    取得结果
    DiCalc iCalc as ICalculation2
    设置iCalc = iModel.GetCalculation
        
    暗淡iRes作为IResults2
    设置iRes = iCalc.GetResultsInFeNodes(LoadCaseType,1)
        
    Dim secRes()为RFEM5.SectionResult
    secRes = iRes.GetResultsInSection(2,AtNo,
    ShearForceVy,ContinuousuousDistributionWithinObjects,False)

    Downloads(下载)下 ,您可以找到Excel宏和用于理解程序的测试文件。
  • 回答

    为了只计算特定的荷载工况,荷载组合或结果组合,使用与“计算...”命令相同的方法(见图01),可以使用ICalculation接口的CalculateBatch方法。 对于传递,该方法需要一个荷载类型为Loading的字段。 该荷载包含荷载的编号和类型(例如荷载组合):

    子batch_test()
        
    '从打开的模型中获取界面并锁定许可证/程序
    Dim iModel如RFEM5.IModel3
    设置iModel = GetObject(,“ RFEM5.Model”)
    iModel.GetApplication.LockLicense
        

    出现错误时转到
        
    '获取计算接口
    DiCalc iCalc as ICalculation2
    设置iCalc = iModel.GetCalculation
        
    '使用加载类型创建数组
    暗荷载(3)作为荷载
    loadings(0).no = 1
    loadings(0).Type = LoadCaseType
        
    loadings(1).no = 4
    loadings(1).Type = LoadCaseType
        
    loadings(2).no = 4
    loadings(2).Type = LoadCombinationType
        
    '一次计算数组中的所有荷载
    iCalc.CalculateBatch荷载

    e:如果Err.Number <> 0那么MsgBox Err.description,,Err.Source
        
    设置iModelData = Nothing
    iModel.GetApplication.UnlockLicense
    设置iModel = Nothing

    结束子
  • 回答

    缺陷被视为荷载,并通过荷载工况的界面进行传递。 如果已经输入了模型的接口,那么如果之前已经创建了荷载接口(ILoads)和荷载工况1(ILoadCase)的接口:

    '设置荷载箱
    Dim iLoads作为iLoads
    设置iLoads = model.GetLoads
            
    '获取荷载工况
    Dim iLc1作为ILoadCase
    设置iLc1 = iLoads.GetLoadCase(1,AtNo)
            
    '定义缺陷
    Dim imperf As缺陷
    imperf.Comment =“test”
    imperf.Direction = LocalZType
    imperf.Inclination = 200
    imperf.no = 1
    imperf.ObjectList = 1
    imperf.Precamber = 300
    imperf.AdcamberActivity = ActivityAccording_EN_1993_1_1
            
    '设置缺陷
    iLc1.PrepareModification
    iLc1.SetImperfection imperf
    iLc1.FinishModification

    缺陷的数据首先在杆件1中填写,然后在接口荷载工况的Prepare-/FinishModification块中传递。

  • 回答

    要修改现有的单元,必须在相应的单元上添加接口,在这种情况下以杆件为例:

    Dim iModel作为RSTAB8.model
    设置iModel = GetObject(,“RSTAB8.Model”)
    iModel.GetApplication.LockLicense
        
    Dim iModData作为IModelData
    设置iModData = iModel.GetModelData
        
    Dim iMem作为RSTAB8.IMember
    设置iMem = iModData.GetMember(1,AtNo)

    使用此代码将杆件1连接到已经创建的杆件。 然后,您可以使用接口的.GetData()方法得到杆件数据。

    如果要修改数据(例如此处的杆件旋转),则可以使用.SetData()方法将其传输到Prepare-/FinishModification块中的程序中。


    Dim mem为RSTAB8.Member
    mem = iMem.GetData
        
    mem.Rotation.Angle = 0.5
    mem.Rotation.Type = RSTAB8.Angle
       
    iModData.PrepareModification
    iMem.SetData mem
    iModData.FinishModification
  • 回答

    下面的代码显示如何通过COM接口获取不同的计算参数。 此外还介绍了如何取消激活抗剪刚度的设置:

    '模型接口
    设置iApp = iModel.GetApplication()
    iApp.LockLicense
        
    得到计算接口
    Dim iCalc As RFEM5.ICalculation2
    设置iCalc = iModel.GetCalculation
        
    得到面弯曲理论
    Dim calc_bend As RFEM5.BendingTheoryType
    calc_bend = iCalc.GetBendingTheory
        
    '获取非线性设置
    Dim calc_nl和RFEM5。计算非线性
    calc_nl = iCalc.GetNonlinearities
        
    '获得精度和公差设置
    Dim calc_prec如RFEM5.PrecisionAndTolerance
    calc_prec = iCalc.GetPrecisionAndTolerance
        
    '计算设置
    Dim calc_sets作为RFEM5.CalculationSettings
    calc_sets = iCalc.GetSettings
        
    '计算选项
    Dim calc_opts设为RFEM5.CalculationOptions
    calc_opts = iCalc.GetOptions
        
    '将ShearStiffness设置为false
    calc_opts.ShearStiffness = False
    calcrate-iCalc.SetOptions calc_opts

    下载下 ,您可以找到EXCEL宏。
  • 回答

    首先,与普通杆件一样创建一个结果梁:

    Dim model As RFEM5.model
    设置model = GetObject(,“RFEM5.Model”)
    model.GetApplication.LockLicense

    错误转到e

    Dim data as IModelData
    设置data = model.GetModelData

    Dim members(0)As RFEM5.Member
        
    members(0).No = 3
    members(0).LineNo = 12
    members(0)。Type = ResultBeamType
        
    members(0).StartCrossSectionNo = 1
    members(0)。EndCrossSectionNo = 1
        
    members(0).Comment ='结果梁1'

    data.PrepareModification
    data.SetMembers会员
    data.FinishModification

    然后,需要从相应的成员中获取IMember接口,并使用GetExtraData方法获取IResultMember的接口。 现在,该接口可用于读取或写入ResultMember数据。 请注意,编写时需要“准备/完成修改”块:

    Dim iMem是IMember
    设置iMem = data.GetMember(3,AtNo)
        
    Dim iRMem作为IResultBeam
    设置iRMem = iMem.GetExtraData
        
    Dim RMem作为ResultBeam
    RMem = iRMem.GetData
        
    RMem.IncludeSurfaces =“1”
    RMem.IncludeSolids =“全部”
        
    RMem.Integrate = WithinCuboidGeneral
        
    Dim params(0~3)Double
        
    RMem.Parameters = params
    RMem.Parameters(0)= 0.5
    RMem.Parameters(1)= 0.5
    RMem.Parameters(2)= 0.1
    RMem.Parameters(3)= 0.1
        
    data.PrepareModification
    RMR:iRMem.SetData RMem
    data.FinishModification

    附加完整的EXCEL宏和相应的测试文件。
  • 回答

    摩擦是非线性的,因此只能通过杆件铰链接口进行修改。

    为此首先创建构件铰链(如果尚不可用)。 然后,将IMemberHinge接口连接到杆件铰链,然后连接到非线性(这里为IFriction )。 那么您就可以使用方法GetDataSetData来修改数据(这里为Friction ):

    Sub SetMemberHingeFriction()

    昏暗模型为RFEM5.model
    设置模型= GetObject(,“ RFEM5.Model”)
    model.GetApplication.LockLicense

    出现错误时转到

    Dim data as IModelData
    设置数据= model.GetModelData

    昏暗铰链(0到0)如RFEM5.MemberHinge

    铰链(0)No = 1
    铰链(0).RotationalConstantX = 1
    铰链(0).RotationalConstantY = 2
    (0).RotationalConstantZ = 3
    (0).TranslationalConstantX = 4
    (0).TranslationalConstantY = 5
    (0).TranslationalConstantZ = 6
    (0)铰链=“杆件铰1”
        
    铰(0).TranslationalNonlinearityX = FrictionAType

    data.PrepareModification
    data.SetMemberHinges铰链
    data.FinishModification
        
    '获取杆件铰接口
    Dim imemhing In IMemberHinge
    设置imemhing = data.GetMemberHinge(1,AtNo)
        
    '得出非线性'摩擦'的接口
    DimiFric as IFriction
    设置iFric = imemhing.GetNonlinearity(AlongAxisX)
        
    得到摩擦数据
    Dim fric As Friction
    fric = iFric.GetData
        
    fric.Coefficient1 = 0.3
        
    '设置摩擦力数据
    data.PrepareModification
    软件开发iFric
    data.FinishModification
        
        
    e:如果Err.Number <> 0那么MsgBox Err.Description ,, Err.Source

    设置数据=没有
    model.GetApplication.UnlockLicense
    设置模型=没有

    结束子


    在摩擦系数Vy + Vz的情况下,Coefficient2用来设定第二个系数。 “摩擦”对话框中的弹簧常数由杆件铰链的平移弹簧控制。 在这种情况下,它是X方向的TranslationalConstantX(见图01)。

1 - 1028

联系我们

您找到想找的问题和解答了吗?
如果没有,请通过邮件、在线聊天工具以及论坛技术支持联系我们或者把您的问题通过网上表格递交给我们。

+49 9673 9203 0

(可要求接中文热线)

info@dlubal.com

初学者

Erste Schritte

我们在这里为初学者提供了重要的提示和建议,以便用户更加容易快速的掌握使用我们的基本软件 RFEM 和 RSTAB。

优秀的技术支持

“非常感谢您提供宝贵的信息。

在此感谢您的技术支持。 这些问题的解答速度和专业性给我留下了深刻的印象。 在结构分析领域,我已经使用了很多软件和技术支持合同,但是到目前为止您的技术支持是最好的。 ”