【发布时间】: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 中以进行有限元分析。 我发现我的工作流程是这样的:
- 导入 Excel 工作簿
- 对于工作簿中的每个工作表:
2.1。对于每一行:读取两列以获得 xy 坐标(每行有两列,x 和 y 坐标)
2.2.将每个 xy 坐标放在一个列表中
2.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