使用Abaqus / Python脚本从多个Excel表格中读取XY坐标

时间:2016-05-06 10:42:51

标签: python excel matlab abaqus

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

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
  4. 我搜索了一会儿,发现了这样的事情:

    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与图像处理工具箱

1 个答案:

答案 0 :(得分:1)

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

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

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

的内容
module

然后输入您剩余的命令。