2017-09-05 2 views
1

Je veux préciser le champ d'analyse qui suit avec Python (Abaqus):Abaqus/Python lire les données MappedField de fichier csv

mdb.models['Model-1'].MappedField(name='AnalyticalField-1', description='', 
     regionType=POINT, partLevelData=False, localCsys=None, 
     pointDataFormat=XYZ, fieldDataType=SCALAR, xyzPointData=((0.0, 0.0, 
     0.0, 100.0), (-0.5, -0.5, 0.0, 50.0), (0.5, -0.5, 0.0, 50.0), (-0.5, 
     0.5, 0.0, 50.0), (0.5, 0.5, 0.0, 50.0))) 

Comment puis-je faire en lisant le xyzPointData à partir d'un fichier csv, qui ressemble à

[Data] 
X , Y , Z , Temperature 

0.0, 0.0, 0.0, 100.0 
-0.5, -0.5, 0.0, 50.0 
0.5, -0.5, 0.0, 50.0 
-0.5, 0.5, 0.0, 50.0 
0.5, 0.5, 0.0, 50.0 

? (Certainement, j'ai plus que cinq points) Peut-être qu'il y a un moyen simple, mais je n'ai pas encore trouvé la solution. Alors merci pour votre aide.

+0

pouvez-vous montrer plus de détails sur où vous êtes coincé? Est-ce un simple "comment lire une question de csv? Je suis sûr qu'il y a un tas de questions connexes si vous recherchez ce site – agentp

+0

Qu'avez-vous essayé jusqu'à présent? Avez-vous essayé de lire le fichier csv, et de construire un tuple pour chaque rangée? – mquantin

Répondre

1

agentp: non seulement comment lire, mais plutôt l'obtenir sous une forme appropriée. mquantin: merci pour les mots-clés. C'est ce que j'ai cherché. Une solution est:

path = "/home/user/test.csv" 
datalist = [] 
with open(path, "rb") as fp: 
    for row in fp.readlines(): 
     tmp = row.split(",") 
     try: 
      datalist.append((float(tmp[0]), float(tmp[1]), float(tmp[2]), float(tmp[3]))) 
     except:pass 

mdb.models['Model-1'].MappedField(name='AnalyticalField-1', description='', 
     regionType=POINT, partLevelData=False, localCsys=None, 
     pointDataFormat=XYZ, fieldDataType=SCALAR, xyzPointData=datalist)