Bonjour à tous,
Je viens vers vous car j'ai un petit soucis sur un petit script. Cela fait un petit moment que j'ai pas codé un script en python et là je sèche.
Pour vous expliquer mon problème je vous explique ce que je fais.
Alors j'ai un fichier contenant des cartes GRID (fichier calcul Nastran pour les connaisseurs) et d'autres cartes divers. Mon script ne s'occupe que des cartes GRID et il a pour but de changer l'ID de la carte.
Voici un exemple de carte GRID :
Dans cet exmple l'ID c'est le 86725 et mon script le change comme il le faut.
Code : Sélectionner tout - Visualiser dans une fenêtre à part GRID 86725 8290. 1863.13 2003.55
Mon soucis intervient quand je tombe sur une ligne qui n'est pas une carte GRID et dans ce cas je demande à mon script de ré-écrire la ligne telle quelle.
Sauf que j'ai un soucis de saut de ligne que je n'arrive pas à comprendre.
Alors voici le fichier d'entré que j'utilise avec la ligne qui commence par CROD pour le test MPC_NODE.rar :
et voici le résultat que j'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 GRID 86725 8290. 1863.13 2003.55 GRID 86726 8290. 1842.13 2003.55 GRID 86727 8290. 1821.13 2003.55 GRID 86728 8290. 1800.13 2003.55 GRID 86729 8288. 1750. 2003.55 CROD 10000 GRID 86730 8288. 1726. 2003.55 GRID 86731 8288. 1689. 2003.55 GRID 86732 8288. 1665.5 2003.55 GRID 86733 8288. 1642. 2003.55 GRID 86734 8288. 1617.9 2003.55 GRID 86735 8288. 1593.8 2003.55 GRID 86736 8288. 1569.7 2003.55 GRID 86737 8288. 1545.6 2003.55 GRID 86738 8288. 1521.5 2003.55 GRID 86739 8288. 1498. 2003.55 GRID 86740 8288. 1474.5 2003.55 GRID 86741 8288. 1437.5 2003.55 GRID 86742 8288. 1414. 2003.55 GRID 86743 8288. 1390.5 2003.55 GRID 86744 8288. 1369.4 2003.55 GRID 86745 8288. 1348.3 2003.55 GRID 86746 8288. 1327.2 2003.55 GRID 86747 8288. 1306.1 2003.55 GRID 86748 8288. 1285. 2003.55 GRID 86749 8288. 1261.5 2003.55 GRID 86750 8288. 1238. 2003.55 GRID 86751 8288. 1201. 2003.55 GRID 86752 8288. 1177.5 2003.55 GRID 86753 8288. 1154. 2003.55 GRID 86754 8288. 1131.42 2003.55 GRID 86755 8288. 1108.83 2003.55 GRID 86756 8288. 1086.25 2003.55 GRID 86757 8288. 1063.67 2003.55 GRID 86758 8288. 1041.08 2003.55 GRID 86759 8288. 1018.5 2003.55 GRID 86760 8288. 995. 2003.55 GRID 86761 8288. 971.5 2003.55 GRID 86762 8290. 934.5 2003.55 GRID 86763 8290. 903.017 2005.55 GRID 86764 8290. 881.443 2005.55 GRID 86765 8290. 859.869 2006.55 GRID 86766 8290. 838.295 2006.55 GRID 86767 8290. 816.722 2007.55
Comme vous voyez le changement d'ID se passe correctement mais les deux sauts de lignes; aux lignes 7 et 9 me pose problème je ne souhaite pas les avoir et je ne comprend pas pourquoi ils y sont.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 GRID 99900000 8290. 1863.13 2003.55 GRID 99900001 8290. 1842.13 2003.55 GRID 99900002 8290. 1821.13 2003.55 GRID 99900003 8290. 1800.13 2003.55 GRID 99900004 8288. 1750. 2003.55 CROD 10000 GRID 99900005 8288. 1726. 2003.55 GRID 99900006 8288. 1689. 2003.55 GRID 99900007 8288. 1665.5 2003.55 GRID 99900008 8288. 1642. 2003.55 GRID 99900009 8288. 1617.9 2003.55 GRID 99900010 8288. 1593.8 2003.55 GRID 99900011 8288. 1569.7 2003.55 GRID 99900012 8288. 1545.6 2003.55 GRID 99900013 8288. 1521.5 2003.55 GRID 99900014 8288. 1498. 2003.55 GRID 99900015 8288. 1474.5 2003.55 GRID 99900016 8288. 1437.5 2003.55 GRID 99900017 8288. 1414. 2003.55 GRID 99900018 8288. 1390.5 2003.55 GRID 99900019 8288. 1369.4 2003.55 GRID 99900020 8288. 1348.3 2003.55 GRID 99900021 8288. 1327.2 2003.55 GRID 99900022 8288. 1306.1 2003.55 GRID 99900023 8288. 1285. 2003.55 GRID 99900024 8288. 1261.5 2003.55 GRID 99900025 8288. 1238. 2003.55 GRID 99900026 8288. 1201. 2003.55 GRID 99900027 8288. 1177.5 2003.55 GRID 99900028 8288. 1154. 2003.55 GRID 99900029 8288. 1131.42 2003.55 GRID 99900030 8288. 1108.83 2003.55 GRID 99900031 8288. 1086.25 2003.55 GRID 99900032 8288. 1063.67 2003.55 GRID 99900033 8288. 1041.08 2003.55 GRID 99900034 8288. 1018.5 2003.55 GRID 99900035 8288. 995. 2003.55 GRID 99900036 8288. 971.5 2003.55 GRID 99900037 8290. 934.5 2003.55 GRID 99900038 8290. 903.017 2005.55 GRID 99900039 8290. 881.443 2005.55 GRID 99900040 8290. 859.869 2006.55 GRID 99900041 8290. 838.295 2006.55 GRID 99900042 8290. 816.722 2007.55
Je souhaite obtenir ceci :
Voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 GRID 99900000 8290. 1863.13 2003.55 GRID 99900001 8290. 1842.13 2003.55 GRID 99900002 8290. 1821.13 2003.55 GRID 99900003 8290. 1800.13 2003.55 GRID 99900004 8288. 1750. 2003.55 CROD 10000 GRID 99900005 8288. 1726. 2003.55 GRID 99900006 8288. 1689. 2003.55 GRID 99900007 8288. 1665.5 2003.55 GRID 99900008 8288. 1642. 2003.55 GRID 99900009 8288. 1617.9 2003.55 GRID 99900010 8288. 1593.8 2003.55 GRID 99900011 8288. 1569.7 2003.55 GRID 99900012 8288. 1545.6 2003.55 GRID 99900013 8288. 1521.5 2003.55 GRID 99900014 8288. 1498. 2003.55 GRID 99900015 8288. 1474.5 2003.55 GRID 99900016 8288. 1437.5 2003.55 GRID 99900017 8288. 1414. 2003.55 GRID 99900018 8288. 1390.5 2003.55 GRID 99900019 8288. 1369.4 2003.55 GRID 99900020 8288. 1348.3 2003.55 GRID 99900021 8288. 1327.2 2003.55 GRID 99900022 8288. 1306.1 2003.55 GRID 99900023 8288. 1285. 2003.55 GRID 99900024 8288. 1261.5 2003.55 GRID 99900025 8288. 1238. 2003.55 GRID 99900026 8288. 1201. 2003.55 GRID 99900027 8288. 1177.5 2003.55 GRID 99900028 8288. 1154. 2003.55 GRID 99900029 8288. 1131.42 2003.55 GRID 99900030 8288. 1108.83 2003.55 GRID 99900031 8288. 1086.25 2003.55 GRID 99900032 8288. 1063.67 2003.55 GRID 99900033 8288. 1041.08 2003.55 GRID 99900034 8288. 1018.5 2003.55 GRID 99900035 8288. 995. 2003.55 GRID 99900036 8288. 971.5 2003.55 GRID 99900037 8290. 934.5 2003.55 GRID 99900038 8290. 903.017 2005.55 GRID 99900039 8290. 881.443 2005.55 GRID 99900040 8290. 859.869 2006.55 GRID 99900041 8290. 838.295 2006.55 GRID 99900042 8290. 816.722 2007.55
Qui peux m'expliquer pourquoi j'ai ces deux sauts de ligne ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75 ######################################################################################## """ DUPLICATE NODE FOR NASTRAN BULK v1.0 ---------- 14 February 2016 **************************************************************************************** [+] INPUT : - NODE_FILE : File contains the original GRID card that the user wants duplicate. [+] OUTPUT : - DUPLICATE_NODE : Output file contains the duplicate GRID cards. [+] VARIBALE : - FORMAT : Format for the bulk file : - 8 for small format - 16 for large format - N_ID : New ID for the GRID card duplicate. The width of the N_ID can not be larger than the FORMAT chose. Must be an integer > 0. - STEP : Increments the next ID for the duplicate GRID card ID. Must be an integer > 0. """ ######################################################################################## def Duplicate_Node(Bulk_Node, Bulk_Node_Duplicate): FORMAT = 8 N_ID = 99900000 STEP = 1 for LINE in Bulk_Node : if LINE[:8].replace(" ","") == "GRID" : CARD = LINE[:9].replace(" ", "") ID = LINE[9:16].replace(" ", "") CP = LINE[16:24].replace(" ", "") X1 = LINE[24:32].replace(" ", "") X2 = LINE[32:40].replace(" ", "") X3 = LINE[40:48].replace(" ", "") CD = LINE[48:56].replace(" ", "") PS = LINE[56:64].replace(" ", "") SEID = LINE[64:72].replace(" ", "") CARD = CARD + (FORMAT - len(CARD))* " " ID = ID + (FORMAT - len(ID)) * " " CP = CP + (FORMAT - len(CP)) * " " X1 = X1 + (FORMAT - len(X1)) * " " X2 = X2 + (FORMAT - len(X2)) * " " X3 = X3 + (FORMAT - len(X3)) * " " CD = CD + (FORMAT - len(CD)) * " " PS = PS + (FORMAT - len(PS)) * " " SEID = SEID + (FORMAT - len(SEID))* " " Bulk_Node_Duplicate.write(CARD + str(N_ID) + CP + X1 + X2 + X3 + CD + PS + SEID + '\n') N_ID = N_ID + STEP else : Bulk_Node_Duplicate.write(LINE + '\n') NODE_FILE = open("MPC_NODE.dat", "r") DUPLICATE_NODE = open("duplicate_node.dat", "w") Duplicate_Node(NODE_FILE,DUPLICATE_NODE) NODE_FILE.close() DUPLICATE_NODE.close()
Merci d'avance pour votre aide
Partager