【问题标题】:Read XY Coordinates from Multiple Excel Sheets Using Abaqus/Python Script使用 Abaqus/Python 脚本从多个 Excel 工作表中读取 XY 坐标
【发布时间】:2016-05-06 10:42:51
【问题描述】:

我有一堆 CT 扫描图像。使用 Matlab 处理(来自这些堆栈的一个图像)CT 扫描图像后,我将每个不同边界区域的 XY 坐标保存在不同的 Excel 工作表中,如下所示:

I = imread('myCTscan.jpeg');
BW = im2bw(I);
[coords, labeledImg] = bwboundaries(BW, 4, 'holes'); 
sheet = 1;
for n=1:length(coords);
    xlswrite('fig.xlsx',coords{n,1},sheet,'A1');
    sheet = sheet+1;
end

下一步是导入这组坐标并将其绘制到 Abaqus CAE Sketch 中以进行有限元分析。 我发现我的工作流程是这样的:

  1. 导入 Excel 工作簿
  2. 对于工作簿中的每个工作表:
    2.1。对于每一行:读取两列以获得 xy 坐标(每行有两列,x 和 y 坐标)
    2.2.将每个 xy 坐标放在一个列表中
    2.3.从列表中,使用样条法绘制草图
  3. 对工作簿中的其他工作表重复步骤 2

我找了一会儿,发现是这样的:

from abaqus import *
lines= open('fig.xlsx', 'r').readlines()
pointList= []
for line in lines:
    pointList.append(eval('(%s)' %line.strip()))
s1= mdb.models['Model-1'].ConstrainedSketch(name='mySketch', sheetSize=500.0)
s1.Spline(points= pointList)

但这只能从一张纸上读取 XY 坐标,我被困在上面的第 3 步。因此我的问题是如何使用 Abaqus/Python (Abaqus 6.14, Python 2.7) 脚本在不同的工作表中读取这些坐标?

我是 Python 编程的新手,我可以阅读和理解语法,但写得不是很好(我还在为如何在 Abaqus 中导入 Python 模块而苦恼)。手动输入每个坐标(如在 Abaqus 的 modelAExample.py 教程中)实际上是不可能的,因为我的每张 CT 扫描图像都可以有 100++ 个边界区域和 10k++ 个点。

我正在使用:
Windows 7 x64
Abaqus 6.14(内置 Python 2.7)
Excel 2013
Matlab 2016a 与图像处理工具箱

【问题讨论】:

    标签: python excel matlab abaqus


    【解决方案1】:

    您正在尝试将 excel 文件作为逗号分隔的文件读取。根据定义,CSV 文件不能有多个选项卡。您的读取命令将文件解释为 csv,并且不允许您遍历文件中的选项卡(尽管在保存 xlsx 和读取 csv 时,它首先提出了文件如何正确打开的问题)。

    有许多 Python 库可以解析和处理 XLS/XLSX 文件。

    Take a look at pyxl 并使用它来读取您的文件。 你可能会使用类似的东西

    from openpyxl import Workbook
    (some commands to open the workbook)
    
    listofnames=wb.sheetnames
    for k in listofnames:
        ws=wb.worksheets(k)
    

    然后输入剩余的命令。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-09
      • 1970-01-01
      • 2023-01-26
      相关资源
      最近更新 更多