ANSA前处理二次开发进阶:Excel与ANSA数据交互

交互的基本操作

选择文件

打开窗口选择文件,获取文件路径
  • 函数名:utils.SelectOpenFile
  • 调用格式:utils.SelectOpenFile(flag, filters)
    • flag:为 0 时代表打开单个文件,为 1 时代表打开多个文件
    • filters:文件类型
  • 示例:File = utils.SelectOpenFile(0,'Excel file(*.xlsx)', 'Excel file(*.xls)')

打开Excel文件

  • 函数名:utils.XlsxOpen
  • 调用格式:utils.XlsxOpen(filename)
  • 示例:Table = utils.XlsxOpen('/home/user/mysheet.xlsx')

获取值

获取表格数据:

  • 函数名:utils.XlsxGetCellValue
  • 调用格式:utils.XlsxGetCellValue(file, sheet, row, column)
    • fileXlsxCreateXlsxOpen创建的索引(变量,句柄)
  • 示例:Value = utils.XlsxGetCellValue(Table,'Sheet1',0,0)

获取表格的行列数:

  • 函数名:utils.XlsxMaxSheetCell
  • 调用格式:utils.XlsxMaxSheetCell(file, sheet)
  • 示例:utils.XlsxMaxSheetCell(Table, 'Sheet1')
  • (建议最好复制粘贴新表格作为输入,防止在某位置存在空数据)

写入存储

  • 函数名:utils.XlsxSetCellValue
  • 调用格式utils.XlsxSetCellValue(file, sheet, row, column, value)
  • 实例:utils.XlsxSetCellValue(Table,'Sheet2', 2,1, '0')
  • 需要配合XlsxSave使用:utils.XlsxSave(Table)

实例1:根据Excel数据创建Entity

数据

假设有以下Excel数据,储存不同ID节点的坐标信息,根据数据在ANSA中画出节点。

IDXYZ
1001101232
1002121134
............

程序


import ansa
from ansa import *

def main():
    File = utils.SelectOpenFile(0, 'Excel file(*.xlsx)', 'Excel file(*.xls)')
    Table = utils.XlsxOpen(File[0])
    Value = utils.XlsxGetCellValue(Table, 'Sheet1', 1, 1)
    line_Max = utils.XlsxMaxSheetCell(Table, 'Sheet1')
    for i in range(1, line_Max[0] + 1):
        Nodes = []
        for j in range(line_Max[1] + 1):
            Value = utils.XlsxGetCellValue(Table, 'Sheet1', i, j)
            Nodes.append(Value)
        print(Nodes)
        base.CreateEntity(constants.LSDYNA, 'NODE',{'NID': Nodes[0], 'X': float(Nodes[1]), 'Y': float(Nodes[2]), 'Z': float(Nodes[3])})

if __name__ == '__main__':
    main()

实例2:识别ANSA中Entity创建Excel数据


import ansa
from ansa import * 

def main():
  File = utils.SelectOpenFile(0,'Excel file(*.xlsx)', 'Excel file(*.xls)')
  Table = utils.XlsxOpen(File[0])
  Nodes = base.CollectEntities(constants.LSDYNA, None, 'NODE')
  for i in range(len(Nodes)):
     X = base.GetEntityCardValues(constants.LSDYNA, Nodes[i], ('X'))['X']
     utils.XlsxSetCellValue(Table, 'Sheet1', i+1, 6, str(X))
     utils.XlsxSave(Table)
 
if __name__ == '__main__':
        main()



免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空