2016-05-06 7 views
0

Ich habe einen Stapel CT-Scan-Bilder. Nach der Verarbeitung (ein Bild von jenem stack) CT-Abtastbild mit Matlab, gespeichert I XY für jeden verschiedenen Randbereich Koordinaten Blätter in verschiedenen Excel wie folgt:Lesen von XY-Koordinaten aus mehreren Excel-Tabellen mit Abaqus/Python-Skript

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 

Der nächste Schritt dann diesen Satz von Koordinaten zu importieren und zeichnen Sie es in Abaqus CAE Sketch für Finite-Elemente-Analyse. ich herausfinden, dass mein Workflow so etwas wie diese:

  1. Import Excel-Arbeitsmappe
  2. Für jedes Blatt in der Arbeitsmappe:
    2.1. Für jede Zeile: beide Spalten lesen, um xy-Koordinaten zu erhalten (jede Zeile hat zwei Spalten, x- und y-Koordinaten)
    2.2. Setzen Sie jede XY-Koordinaten in eine Liste
    2.3. Aus der Liste, mit Skizze Spline-Methode
  3. Wiederholen Sie Schritt 2 für andere Blätter in der Arbeitsmappe

ich für eine Weile gesucht und so etwas wie diese gefunden:

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) 

Aber dies nur lesen XY-Koordinaten von nur ein Blatt und ich stecke bei Schritt 3 oben fest. Also mein Problem ist, dass, wie diese Koordinaten in verschiedenen Blättern mit Abaqus/Python (Abaqus 6.14, Python 2.7) Skript lesen?

Ich bin neu in der Python-Programmierung, ich kann die Syntax lesen und verstehen, aber kann nicht sehr gut schreiben (Ich habe immer noch Schwierigkeiten, Python-Modul in Abaqus zu importieren). Manuelles Eingeben jeder Koordinate (wie in Abaqus 'modelAExample.py tutorial) ist praktisch unmöglich, da jedes meiner CT-Scan-Bilder 100 ++ von Grenzbereichen und 10k ++ Punkten haben kann.

Ich verwende:
Windows 7 x64
Abaqus 6.14 (mit in Python eingebauten 2.7)
Excel 2013
Matlab 2016a mit der Image Processing Toolbox

Antwort

0

Sie versuchen, Excel-Dateien als Komma zu lesen getrennte Dateien. CSV-Dateien können per Definition nicht mehr als eine Registerkarte haben. Ihr Lesebefehl interpretiert die Datei als csv und erlaubt Ihnen nicht, über die Registerkarten in Ihrer Datei zu iterieren (obwohl es die Frage aufwirft, wie sich Ihre Datei überhaupt erst öffnet, wenn Sie ein xlsx speichern und ein csv lesen).

Es gibt zahlreiche Python-Bibliotheken, die XLS/XLSX-Dateien analysieren und verarbeiten.

Take a look at pyxl und es verwenden, Ihre Datei in lesen. Sie verwenden würde wahrscheinlich so etwas wie

from openpyxl import Workbook 
(some commands to open the workbook) 

listofnames=wb.sheetnames 
for k in listofnames: 
    ws=wb.worksheets(k) 

und geben Sie dann weitere Befehle.

Verwandte Themen