68x
004331
2023-01-23

知识库 001790 | 将 WebService API 与 EXCEL 和 Python 结合使用

主题:
将 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 库。 在我们的官网上可以找到有关安装的信息和视频。 在这里我们选择了几个重要的帮助页面和视频, 它们将向您展示安装过程和编程的第一步:

在这些视频中还介绍了程序编辑器。 对于本示例,可以使用任意编辑器。 最后还需要安装 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 函数的第一部分:


            

...
#打开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),则必须先打开一个文件:


            

wb = xw.Book('userSheet.xlsm')


如果在 EXCEL 之外使用 xlwings,则使用以下命令建立连接:


            

wb = xw.Book.caller()


wb 变量包含完整的工作簿,可以使用 sheet() 方法从中提取单个工作表。 在该示例中打开“Inputs”工作表,并且可以通过方括号访问各个单元格。 通过 value 属性可以读取或修改单元格的值, 该实现可以在示例的末尾找到:


            

...
#将结果写入输出图纸
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 的结果。

总结

在示例中...