Back to SDS/2 Parametric Scripts
data_file =
r'H:\TEMP\temsys\sample_points3.txt'
def convert_data(s):
for
func in (int, float):
try:
n = func(s)
return n
except:
pass
return
s
def each8(s):
while
len(s) > 0:
yield
s[:8]
s = s[8:]
def read_file_data(f):
ptDict = {}
wireDict = {}
fList = open(f).readlines()
for
line in fList:
lineList = [x.lower().strip()
for x in line.strip().split(' ',
1) if x != '']
data
= [lineList[0], lineList[1][:8],
lineList[1][8:]]
if
'rect' in lineList or 'tria' in lineList:
wireDict[convert_data(data[1])] = [convert_data(x)
for x in each8(data[2])]
elif 'pnt'
in lineList:
ptDict[convert_data(data[1])] = [convert_data(x)
for x in data[2].split() if x != '']
return
ptDict,wireDict
if __name__ == '__main__':
ptDict,wireDict = read_file_data(data_file)
print
'Point dictionary:'
for
key in ptDict:
print
'%s = %s' % (key, ptDict[key])
print
'\nWire dictionary:'
for
key in wireDict:
print
'%s = %s' % (key, wireDict[key])
'''
>>> Point dictionary:
30400000 = [10.0, 0.0, 0.0]
40000000 = [15.0, 0.0, 0.0]
20020003 = [5.0, 0.0, 0.0]
80009000 = [10.0, 5.0, 0.0]
50050000 = [20.0, 0.0, 0.0]
90009000 = [15.0, 5.0, 0.0]
70000000 = [5.0, 5.0, 0.0]
60000800 = [0.0, 5.0, 0.0]
10010012 = [3.0, 0.0, 0.0]
Wire dictionary:
30000088 = [30000208, 40000002, 90005000, 80003000]
20000092 = [20000105, 30000004, 80004000, 71111167]
40000094 = [40000304, 50000071, 90000600]
10000071 = [10000101, 20000022, 70000000, 60000055]
>>>
'''
''' Data File:
Rect 1000007110000101200000227000000060000055
Rect 2000009220000105300000048000400071111167
Rect 3000008830000208400000029000500080003000
Tria 40000094400003045000007190000600
Pnt 100100123. 0.
0.
Pnt 200200035. 0.
0.
Pnt 3040000010. 0.
0.
Pnt 4000000015. 0.
0.
Pnt 5005000020. 0.
0.
Pnt 600008000. 5.
0.
Pnt 700000005. 5.
0.
Pnt 8000900010. 5.
0.
Pnt 9000900015. 5.
0.
'''
'''
>>> d = {100: [1,0,0],102:
[0,1,0],202: [0,1,1]}
>>> dict(zip([str(x) for x in d.values()], d.keys()))
{'[0, 1, 1]': 202, '[1, 0, 0]': 100, '[0, 1, 0]': 102}
>>>
'''
'''
>>> d = {100: [1,0,0],102:
[0,1,0],202: [0,1,1]}
>>> dict(zip([tuple(x) for x in d.values()], d.keys()))
{(0, 1, 0): 102, (0, 1, 1): 202, (1, 0, 0): 100}
>>>
'''