VBA中的COM接口| 3.创建工具

技术文章

This article was translated by Google Translator View original text

关于COM接口的文章系列的第2.2部分描述了在杆件示例中创建和修改节点支座,荷载,荷载工况,荷载组合和结果组合。 本部分介绍如何创建各个工具。

图片 01 - 在RFEM中单独创建的EXCEL工具

基础

我们要创建一个工具,在程序当前选中的节点上创建非线性节点支座。 为此需要以下核心元素:

  • 获取当前所选节点
  • 创建节点支座
  • 创建和赋值非线性
  • 在程序中创建工具

下面将对这些点进行处理。 为此您不需要再次讨论前几篇文章中的相关知识。 几乎记录了在注释中获取结构的已有元素。

获取当前节点

通过COM接口编辑选定的元素是通过已经熟悉的函数(例如节点的IModelData.GetNodes)来完成的。 为了只返回选中的单元,必须通过IModelData.EnableSelections切换到当前选择的编辑。 如果将EnableSelections设置为True,则IModelData.GetNodes仅返回所选的元素。这里是具体示例:

'获取所选结节点'
iModDat.EnableSelections 没错 '仅适用于选定的对象
朦胧 nodes() 作为 RFEM5.Node
nodes = iModDat.GetNodes
iModDat.EnableSelections 错误 再次使用所有对象

如果取出选定的节点,EnableSelections会再次设置为不正确,因为它可能成为常见的错误来源。 由于节点支座需要节点列表作为字符串,因此按如下方式创建:

'创建节点列表
朦胧 nodeList 作为 字串
朦胧作为很长
For i = 0 ToUBound(节点,1)
nodeList = nodeList&nodes(i).No& “,”
接下来 i

创建节点支座

非线性(在本例中为图表)是一个独立的单元。只有在结构已经存在的情况下才能分配给节点支座。 因此有必要根据以前的贡献原则创建一个节点支座:

'创建节点支座
朦胧 nodSup 作为 RFEM5.NodalSupport
nodSup.No = 100
nodSup.IsColumn = 错误
nodSup.IsValid = 没错
nodSup.nodeList = nodeList
nodSup.ReferenceSystem = GlobalSystemType

nodSup.RestraintConstantX = 0.01
nodSup.RestraintConstantY = 0.01
nodSup.RestraintConstantZ = 0.01

nodSup.SupportConstantX = -1
nodSup.SupportConstantY = -1
nodSup.SupportConstantZ = -1

'定义非线性'
nodSup.SupportNonlinearityZ = WorkingDiagramType

iModDat.PrepareModification
nodSup iModDat.SetNodalSupport
iModDat.FinishModification

WorkingDiagramType类型在全局z方向上表示为非线性。

创建和赋值非线性支座

现在已经为非线性WorkingDiagramType准备了节点支座,必须要创建:

'创建非线性'
朦胧 nldgrm 作为 RFEM5.NonlinearityDiagram

nldgrm.ForceType = StiffnessDiagramForceType.NoneStiffnessForce
nldgrm.PositiveZoneType = DiagramAfterLastStepType.StopDiagramType
nldgrm.Symmetric = 没错

'创建图表
ReDim nldgrm.PositiveZone(3,1)
nldgrm.PositiveZone(0,0)= 0#
nldgrm.PositiveZone(0,1)= 0#

nldgrm.PositiveZone(1,0)= 0.01
nldgrm.PositiveZone(1,1)= 100

nldgrm.PositiveZone(2,0)= 0.03
nldgrm.PositiveZone(2,1)= 200

nldgrm.PositiveZone(3,0)= 0.05
nldgrm.PositiveZone(3,1)= 300

该图由二维场组成。 数据记录的第一个维和数据集的元素的第二个维。 在这个例子中,数据集中的第一个元素是以m为单位的位移,第二个是以N为单位的力。上面的例子创建了四个数据集,例如,图中的第三个点是30 mm和0.2 kN at所在地。 现在必须将该非线性指定给可用的支座。 为此我们将接口连接到节点支座上,接着是非线性:

'应用非线性'
朦胧 iNodSup 作为 :RFEM5.INodalSupport
设置 iNodSup = iModDat.GetNodalSupport(100,ItemAt.AtNo)
朦胧 iNldiag 作为 RFEM5.INonlinearityDiagram
设置 iNldiag = iNodSup.GetNonlinearity(AlongAxisZ)

iModDat.PrepareModification
iNeldiag.SetData nldgrm
iModDat.FinishModification

非线性沿Z轴,因此在调用LengthAxisZ时必须选择。 它们是在众所周知的Modification Block中指定的。

在程序中创建工具

在RFEM中可以对外部程序进行集成。 为此,必须在程序路径中修改RFEM.ini。 在C#和VB中编写可执行文件时,必须使用Excel在VBA中执行该工具。 可以在启动时使用参数为Excel分配一个打开的文件。 这将在命令行中显示如下信息,其中Excel文件存储在C:\ temp下,Excel安装为32位版本:
“C:\ Program Files(x86)\ Microsoft Office \ Office15 \ EXCEL.EXE”C:\ temp \ table1.xlsm

使用所需的文件打开Excel。 由于您只能在没有附加参数的情况下打开RFEM的外部程序(例如文件名EXCEL.EXE),您必须创建一个Windows批处理文件。这个简单的文本文件扩展名为“.bat”,就像Windows一样为可执行文件的EXE文件。 例如,在创建数据之后,需要使用编辑器创建TXT文件,该编辑器在创建后接收新的文件扩展名“.bat”。文件扩展名的显示可能不会先显示在Windows资源管理器中。 该批处理文件(以下简称EXCEL-Werzeug.bat)必须包含以下条目:
“C:\ Program Files(x86)\ Microsoft Office \ Office15 \ EXCEL.EXE”C:\ temp \ table1.xlsm
这与在命令行中输入的命令相对应。

创建可执行文件后,您可以在RFEM.ini文件中将其作为外部工具输入。 RFEM.ini位于RFEM的程序路径中(RFEM 5.07 64位标准: C:\ Program Files \ Dlubal \ RFEM 5.07) 可以添加以下参赛作品:

ModuleName2 = EXCEL工具
ModuleExeName2 =“c:\ temp \ EXCEL-Tools.bat”
ModuleDescription2 =非线性杆件端部释放

您必须在C:/temp/下保存批处理文件EXCEL-Werkzeug.bat以及宏table1.xlsmauch。

确保宏也是自动执行的,当打开子程序时,必须在Excel自动执行的子程序中启动子程序。 该子子程序名为Workbook_Open,必须存储在工作簿中。

图片 02 - Workbook_Open工作簿中的子程序

成功执行该程序后,仍然无法退出Excel。如果发生错误或RFEM未打开,您可以编辑该宏。 为此我们将对其进行区分。 完整的模板如下:

私有的 Workbook_Open()

'错误处理例行程序启动RFEM
错误GoTo e

接口为RFEM
朦胧 iApp 作为RFEM5应用
设置 iApp = GetObject(, “RFEM5.Application”)

e: '如果发生错误,'则打开RFEM'
如果 Err.Number <> 0 然后
MsgBox “RFEM未打开”,Err.Source
   退出
结束 如果

'错误处理例行程序
错误GoTo [F12]

软件使用和软件定时程序否
iApp.LockLicense

'获取活动模型的接口
朦胧 iModel 作为 RFEM5.model
如果 iApp.GetModelCount> 0 然后
设置iModel = iApp.GetActiveModel
Else
'如果没有足够的模型,则输入错误
Err.Raise vbObjectError, “LoadModel()”“iApp.GetModelCount << 1”
End If

'自定义源代码空间

f: '截取源代码中的错误信息
若Err.Number <> 0则
MsgBox Err.Description ,, Err.Source
'COM许可证已经发布,可以再次进行程序访问
iModel.GetApplication.UnlockLicense
'发生错误时,Excel应保持打开状态
   退出Sub
End If

发布COM许可证,可以再次进行程序访问
iModel.GetApplication.UnlockLicense
'应用程序成功后应该关闭Excel工具
应用领域.Quit

结束子

所有缺失的部分都是对先前创建的子程序的引用,您可以在“自定义源代码的位置”下找到它。 完整的源代码可以在以下链接中找到。

小结

非线性节点支座的创建是对以前的贡献的补充,而外部模块的创建是新的领域。 使用可执行文件(例如通常在Visual Studio和VB或C#中创建的文件)时嵌入的问题较小。 出于这个原因,在这里描述了使用Excel的更复杂的过程。

下载

更多信息

联系我们

Kontakt zu Dlubal

如果您有任何关于我们产品的问题或者建议,请联系我们的技术支持或者搜索我们的问题和解答 (FAQs)。

+49 9673 9203 0

(可要求接中文热线)

info@dlubal.com

RFEM 主程序 RFEM
RFEM 5.xx

主程序

结构设计与有限元­分析软件(FEA)可以用于建立 平面与空间结构模型,适用于由杆件、面、 板、墙、折板、膜、壳、实体以及接触单元等的建模与分析计算。

首个许可价格
3,540.00 USD
RFEM 其他附加模块
RF-COM 5.xx

附加模块

RFEM 可编程序的 COM 接口

首个许可价格
580.00 USD