主题:
将 WebService API 与 EXCEL 和 Python 结合使用
说明:
像 EXCEL 这样的电子表格软件很受工程师欢迎,工程师们使用它可以轻松进行计算并快速得出结果。 因此我们提供了 EXCEL 和 WebService API 的交互功能。 借助免费的 xlwings 库,可以控制 EXCEL 以及读写数值。 下面将举例说明该功能。
论文摘要:
准备工作
需要安装以下软件、库和编辑器:
- RFEM 6
- 优秀
- 蟒蛇
- Dlubal RFEM_Python_Client
- Python 库 xlwings
- 一个编辑器来编写程序
假设已经安装了 RFEM 6、EXCEL 和 Python,则必须先安装 RFEM_Python_Client 库。 在我们的官网上可以找到有关安装的信息和视频。 在这里我们选择了几个重要的帮助页面和视频, 它们将向您展示安装过程和编程的第一步:
- https://dlubal-software.github.io/.github/guide/
- https://www.dlubal.com/de/support-und-schulungen/schulungen/videos/003477
- https://www.dlubal.com/de/support-und-schulungen/schulungen/videos/003478
- https://www.dlubal.com/de/support-und-schulungen/schulungen/videos/003479
在这些视频中还介绍了程序编辑器。 对于本示例,可以使用任意编辑器。 最后还需要安装 xlwings,您可以点击以下链接查看相关信息:
例如,完整的代码位于 RFEM_Python_Client 的以下路径中:
- RFEM_Python_Client/tree/main/Examples/SteelDesign/
SteelDesignExcel.py 是 Python 程序(脚本), SteelDesignExcel.xlsm 是相关的 EXCEL 文件。
编程示例
xlwings 库提供了多种组合 Python 和 EXCEL 的选项。 一方面,可以从 Python 程序(更好为 Python 脚本)控制 EXCEL,也可以从 EXCEL 启动 Python 脚本。 当从 EXCEL 启动时,可以使用内置的插件,也可以创建一个子程序来启动Python 脚本。 想要了解详细信息,请点击以下链接:
在我们的示例中,Python 脚本是通过内置插件启动的(见图)。 这需要两个必要条件。 Python 脚本必须与 EXCEL 文件同名,并且必须包含一个 main 函数,因为该函数之后会通过插件执行的。
下面是 main 函数的第一部分:
- code.de#
...
- 打开excel表格
wb = xw.Book.caller()
- 读取输入
inputSheet = wb.sheets('Inputs')
frame_number = 6
width = 10
frame_length = 4
console_height = 3
column_height = 4
gable_height = 2
- 几何输入
frame_number = int (inputSheet ["G6"].value) #帧数
width = inputSheet["G7"].value # Width of Frame
frame_length = inputSheet["G8"].value # Frame Length
console_height = inputSheet["G9"].value # Height of Console
column_height = inputSheet["G10"].value # Height of Column
gable_height = inputSheet["G11"].value # Height of Gable
...
- /#
如果从 Python 脚本中直接使用 xlwings(不是通过 EXCEL),则必须先打开一个文件:
- code.de#
wb = xw.Book('userSheet.xlsm')
- /#
如果在 EXCEL 之外使用 xlwings,则使用以下命令建立连接:
- code.de#
wb = xw.Book.caller()
- /#
wb 变量包含完整的工作簿,可以使用 sheet() 方法从中提取单个工作表。 在该示例中打开“Inputs”工作表,并且可以通过方括号访问各个单元格。 通过 value 属性可以读取或修改单元格的值, 该实现可以在示例的末尾找到:
- code.de#
...
- 将结果写入输出图纸
nodaldeformation["A2"].value = node_number
nodaldeformation["B2"].value = nodeSupportType
nodaldeformation["C2"].value = nodeDisp_abs
nodaldeformation["D2"].value = nodeDisp_x
nodaldeformation["E2"].value = nodeDisp_y
nodaldeformation["F2"].value = nodeDisp_z
nodaldeformation["G2"].value = nodeRotation_x
nodaldeformation["H2"].value = nodeRotation_y
nodaldeformation["I2"].value = nodeRotation_z
...
- /#
在当前情况下读取荷载组合 7。 图 2 显示了在 EXCEL 中的杆件变形,为了便于比较,图 3 中显示了 RFEM 6 的结果。
总结
在示例中...