ich bin neu hier im Forum, aber vor allem auch in der Programmierung (mit Python).
Ich bin gerade dabei meine Bachelorarbeit über ein Python-Script zu schreiben, mit dem ich eine optische Simulation mit dem Programm "Zemax OpticStudio" mit einer Thermo-Simulation über Abaqus koppeln möchte. Nur so für euch zur Orientierung. Für mein eigentliches Problem ist das nicht so wichtig.
Ich habe Beispielscripte (https://github.com/indranilsinharoy/PyZ ... n-article)) gefunden, mit denen man Beispielsimulationen per Zemax ablaufen lassen kann.
Dabei werden in einer Simulationen die Ergebnisse in eine .txt-Datei geschrieben:
Code: Alles auswählen
# trace the rays
ret = at.zArrayTrace(rd, timeout=5000)
# write the ray trace data into a file
outputfile = "C:\\tmp\\arrayTraceOutput.txt"
if ret==0:
k = 0
with open(outputfile, 'w') as f:
f.write("Listing of Array trace data\n")
f.write("{:^7} {:^7} {:^7} {:^15} {:^15} {:^9} {:^9} {:^9} {:^6}"
" {:^7} {:^7} {:^7} {:^7} {:^7} {:^7} {:^7}\n"
.format('px', 'py', 'error', 'xout', 'yout', 'l', 'm', 'n',
'opd', 'Exr', 'Exi', 'Eyr', 'Eyi', 'Ezr', 'Ezi', 'trans'))
for i in xrange(-radius, radius + 1, 1):
for j in xrange(-radius, radius + 1, 1):
k += 1
line = ("{:7.3f} {:7.3f} {:5d} {:15.6E} {:15.6E} {:9.5f} "
"{:9.5f} {:9.5f} {:7.3f} {:7.3f} {:7.3f} {:7.3f} "
"{:7.3f} {:7.3f} {:7.3f} {:7.4f}\n"
.format(i/(2*radius), j/(2*radius), rd[k].error,
rd[k].x, rd[k].y, rd[k].l, rd[k].m, rd[k].n,
rd[k].opd, rd[k].Exr, rd[k].Exi, rd[k].Eyr,
rd[k].Eyi, rd[k].Ezr, rd[k].Ezi, rd[k].intensity))
f.write(line)
Code: Alles auswählen
# Print the output
print("Listing of NSC Trace data:")
print("{:^4} {:^4} {:^4} {:^6} {:^4} {:^14} {:^14} {:^14} {:^12}"
.format('seg#', 'Prnt', 'Levl', 'In', 'Hit', 'X', 'Y', 'Z', 'Intensity'))
totalSegments = len(rayData)
for i, seg in enumerate(rayData):
segLevel = seg.segment_level
segParent = seg.segment_parent
insideOf = seg.inside_of
hitObj = seg.hit_object
x, y, z, l, m, n = seg.x, seg.y, seg.z, seg.l, seg.m, seg.n
intensity = seg.intensity
opl = seg.opl
print("{:4d} {:4d} {:4d} {:4d} {:4d} {:15.6E} {:15.6E} {:15.6E} {:8.4f}"
.format(i+1, segParent, segLevel, insideOf, hitObj, x, y, z, intensity))
Code: Alles auswählen
outputfile = "H:\\Listing of Array trace data.txt"
with open(outputfile, 'w') as f:
f.write("Listing of Array trace data\n")
f.write("{:^4} {:^4} {:^4} {:^6} {:^4} {:^14} {:^14} {:^14} {:^12}"
.format('seg#', 'Prnt', 'Levl', 'In', 'Hit', 'X', 'Y', 'Z', 'Intensity'))
for i, seg in enumerate(rayData):
segLevel = seg.segment_level
segParent = seg.segment_parent
insideOf = seg.inside_of
hitObj = seg.hit_object
x, y, z, l, m, n = seg.x, seg.y, seg.z, seg.l, seg.m, seg.n
intensity = seg.intensity
opl = seg.opl
line = ("{:4d} {:4d} {:4d} {:4d} {:4d} {:15.6E} {:15.6E} {:15.6E} {:8.4f}"
.format(i+1, segParent, segLevel, insideOf, hitObj, x, y, z, intensity))
f.write(line)
Code: Alles auswählen
Listing of NSC Trace data:
seg# Prnt Levl In Hit X Y Z Intensity
1 0 1 0 2 0.000000E+00 0.000000E+00 5.000000E+00 1.0000
2 1 2 2 2 1.435769E-01 0.000000E+00 5.500000E+00 0.3300
3 2 3 0 3 4.307306E+00 0.000000E+00 2.000000E+01 0.3300
4 1 2 2 2 0.000000E+00 0.000000E+00 5.500000E+00 0.3300
5 4 3 0 3 0.000000E+00 0.000000E+00 2.000000E+01 0.3300
6 1 2 2 2 -1.435769E-01 0.000000E+00 5.500000E+00 0.3300
7 6 3 0 3 -4.307306E+00 0.000000E+00 2.000000E+01 0.3300
8 1 2 0 0 5.520000E-01 0.000000E+00 3.077685E+00 0.3300
9 1 2 0 0 0.000000E+00 0.000000E+00 3.000000E+00 0.3300
10 1 2 0 0 -5.520000E-01 0.000000E+00 3.077685E+00 0.3300
Liebe Grüße
Robert