add def for getting values out of the material data
This commit is contained in:
@@ -103,6 +103,9 @@ def search_keys(data, keys):
|
|||||||
from json import loads
|
from json import loads
|
||||||
|
|
||||||
def find_values(key, json_repr):
|
def find_values(key, json_repr):
|
||||||
|
"""\
|
||||||
|
Find values inside json string
|
||||||
|
"""
|
||||||
results = []
|
results = []
|
||||||
def _decode_dict(a_dict):
|
def _decode_dict(a_dict):
|
||||||
try:
|
try:
|
||||||
@@ -146,6 +149,19 @@ def print_quantity(quantity, prespaces=0):
|
|||||||
print(prespaces*' ' + '%s' % quantity)
|
print(prespaces*' ' + '%s' % quantity)
|
||||||
|
|
||||||
|
|
||||||
|
def get_value(data, element):
|
||||||
|
"""\
|
||||||
|
Get value of nested dictionary.
|
||||||
|
If element is itself a list of length one, the element of the list is returned
|
||||||
|
"""
|
||||||
|
keys = element.split('/')
|
||||||
|
for key in keys:
|
||||||
|
data = data.get(key)
|
||||||
|
if data and len(data) == 1:
|
||||||
|
data = next(iter(data.values()))
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
"""\
|
"""\
|
||||||
Main function
|
Main function
|
||||||
@@ -209,25 +225,20 @@ def main():
|
|||||||
if args.debug:
|
if args.debug:
|
||||||
print("data:")
|
print("data:")
|
||||||
print_material(data)
|
print_material(data)
|
||||||
|
mat_index = {
|
||||||
|
"rho": "Mechanical Properties/rho",
|
||||||
|
"E": "Mechanical Properties/E",
|
||||||
|
"R_p": "Mechanical Properties/Yield strength",
|
||||||
|
"R_m": "Mechanical Properties/R_m"
|
||||||
|
}
|
||||||
for element in args.const_collection: # iter the way it is been entered as args
|
for element in args.const_collection: # iter the way it is been entered as args
|
||||||
if element == "rho":
|
print_quantity(get_value(data, mat_index[element]))
|
||||||
print_quantity(data['Mechanical Properties']['rho'])
|
|
||||||
elif element == "E":
|
|
||||||
print_quantity(data['Mechanical Properties']['E'])
|
|
||||||
elif element == "R_p":
|
|
||||||
if len(data['Mechanical Properties']['Yield strength']) == 1:
|
|
||||||
print_quantity(next(iter(data['Mechanical Properties']['Yield strength'].values())))
|
|
||||||
else:
|
|
||||||
print_quantity(data['Mechanical Properties']['Yield strength'])
|
|
||||||
elif element == "R_m":
|
|
||||||
print_quantity(data['Mechanical Properties']['R_m'])
|
|
||||||
|
|
||||||
elif args.search:
|
elif args.search:
|
||||||
search_list = [element for element in args.search.split(',')]
|
search_list = [element for element in args.search.split(',')]
|
||||||
if args.debug:
|
|
||||||
print("search_list: " + str(search_list))
|
|
||||||
data = read_material(args.materialname)
|
data = read_material(args.materialname)
|
||||||
if args.debug:
|
if args.debug:
|
||||||
|
print("search_list: " + str(search_list))
|
||||||
print("data: " + data)
|
print("data: " + data)
|
||||||
data_dict = search_keys(data, keys=search_list)
|
data_dict = search_keys(data, keys=search_list)
|
||||||
print_dict(data_dict)
|
print_dict(data_dict)
|
||||||
|
|||||||
Reference in New Issue
Block a user