Hi Rick,
Many thanks. Very usefull 
I think we’re almost there - its not working yet and I suspect it has got to do with the format of the JSON.
So I’m using this:
try:
pink_mesh_file = Storage().get("pinkmesh.json", scope='entity')
except Exception as e:
print(f"Error loading file for page_2_blue: {e}")
with pink_mesh_file.open() as fp:
mesh_data = json.loads(fp.read())
print("Printing mesh data pour vous:")
print(mesh_data)
# Initialize pink_mesh_saved as None or some default value in case 'pinkmesh' is not found
pink_mesh_saved = None
# Iterate through each item in the mesh_data list
for item in mesh_data:
# Check if this item's 'ParamName' is 'pinkmesh'
if item['ParamName'] == 'pinkmesh':
# If found, extract the part of the mesh data you need, for example, the 'InnerTree'
pink_mesh_saved = item['InnerTree']['{0}'][0]
break # Exit the loop once the required data is found
input_data = {
'stage2active': "true",
'xycopies': params.page_2_blue.xycopies,
'pinkmesh_saved' : pink_mesh_saved
#'pinkmesh_saved': str(entity_folder_path.parent / "viktor-grasshopper/outputs/pinkmesh.3dm"),
# Add other parameters specific to page 2 as needed
}
if pink_mesh_saved is None:
print("Error: 'pinkmesh' data not found.")
else:
# Proceed with using input_data as needed
print("Input data prepared successfully.")
and this:
# Prepare and run the analysis
print("Output filenames:",output_filenames)
input_data = self.prepare_input_data(params, current_page)
print("input data =",input_data)
input_json = json.dumps(input_data)
files = [('input.json', BytesIO(bytes(input_json, 'utf8')))]
#input_files = self.prepare_input_files(params, current_page)
#files.extend(input_files)
# print("input files =",input_files)
print("files =", files)
#adding the output list:
mesh_files = [filename.replace('.3dm', '') for filename in output_filenames if filename.endswith('.3dm')]
data_files = [filename.replace('.json', '') for filename in output_filenames if filename.endswith('.json')]
output_specs = [{"mesh": mesh, "data": data_files} for mesh in mesh_files]
outputs_json = json.dumps(output_specs)
files.append(('outputs.json', BytesIO(bytes(outputs_json, 'utf8'))))
print("files =", files)
print("Generated outputs.json:", outputs_json)
#run the analysis using the files and output_filenames
generic_analysis = GenericAnalysis(files=files, executable_key="run_grasshopper",
output_filenames=output_filenames)
generic_analysis.execute(timeout=3600)
In my little log from run_grasshopper I can find this:
2024-02-15 15:52:15,761 - INFO - Input parameters:{
“stage2active”: “true”,
“xycopies”: 2,
“pinkmesh_saved”: {
“type”: “Rhino.Geometry.Mesh”,
“data”: “{"version":10000,"archive3dm":60,"opennurbs":-1903654895,"data":"+n8CAGcDAAAAAAAA+/8CABQAAAAAAAAA5NTXTkfp0xG/5QAQgwEi8C25G1z8/wIALwMAAAAAAAA4GAAAAAYAAADSHTOevfjl/9IdM569+OX/0h0znr345f/SHTOevfjl/9IdM569+OX/0h0znr345f/SHTOevfjl/9IdM569+OX/AAAAAAAAAAAAAAAAAAAAAAAAgD8AAIA/AACAPwAAgL8AAIC/AACAvwAAgD8AAIA/AACAPwAAgL8AAIC/AACAvwAAgD8AAIA/AACAvwAAgL//////AAAAAAABAAAAAAECAwQFBgcICQoLDA0ODxAREhMUFRYXIAEAAFJfoUQBAIAAQD4AAAAAAAAAeNpjYEAHDg4QusEBlY1NDTYAk3NwwFSHbE6DA6ZZIDa6GnT3IKuBsdHNQGYjq8FlFzY1EDYApqcVAWpXQpUgAQAAPE+V9wEAgABAIwAAAAAAAAB42mNggIGG/QxEsYlVhwxI0dNgjyRGBJu2egAYmRfpsrvadAAAAAAAAAAAYAAAACqaPecA/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAQKQAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAGk8mKMAAAAAAQCAAEBoAAAAAAAAAAEAAAAAAAAAGAAAAEACAAAV8y/GAQCAAEBDAAAAAAAAAHjaY2AgBnA4oPIFHPCLE2sOsQBdH4cDcebhco+AA3HugokTModQ+OAyB12ckDtwieMyh1R/EWsOQhwAc0cKgYABjATg1whJ0h0znr345f/SHTOevfjl/9IdM569+OX/0h0znr345f/SHTOevfjl/9IdM569+OX/USb4l/9/AoAAAAAAAAAAAA=="}”
}
}
2024-02-15 15:52:15,811 - INFO - Error during Grasshopper definition evaluation: Expecting value: line 1 column 1 (char 0)
and this results in the follow print from app.py
Printing mesh data pour vous:
[{‘ParamName’: ‘pinkmesh’, ‘InnerTree’: {‘{0}’: [{‘type’: ‘Rhino.Geometry.Mesh’, ‘data’: ‘{“version”:10000,“archive3dm”:60,“opennurbs”:-1903654895,“data”:“+n8CAGcDAAAAAAAA+/8CABQAAAAAAAAA5NTXTkfp0xG/5QAQgwEi8C25G1z8/wIALwMAAAAAAAA4G
AAAAAYAAADSHTOevfjl/9IdM569+OX/0h0znr345f/SHTOevfjl/9IdM569+OX/0h0znr345f/SHTOevfjl/9IdM569+OX/AAAAAAAAAAAAAAAAAAAAAAAAgD8AAIA/AACAPwAAgL8AAIC/AACAvwAAgD8AAIA/AACAPwAAgL8AAIC/AACAvwAAgD8AAIA/AACAvwAAgL//////AAAAAAABAAAAAAECAwQFBgcIC
QoLDA0ODxAREhMUFRYXIAEAAFJfoUQBAIAAQD4AAAAAAAAAeNpjYEAHDg4QusEBlY1NDTYAk3NwwFSHbE6DA6ZZIDa6GnT3IKuBsdHNQGYjq8FlFzY1EDYApqcVAWpXQpUgAQAAPE+V9wEAgABAIwAAAAAAAAB42mNggIGG/QxEsYlVhwxI0dNgjyRGBJu2egAYmRfpsrvadAAAAAAAAAAAYAAAACqaPecA/wD/A
P8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAQKQAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAGk8mKMAAAAAAQCAAEBoAAAAAAAAAAEAAAAAAAAAGAAAAEACAAAV8y/GAQCAAEBDAAAAAAAAAHjaY2AgBnA4oPIFHPCLE2sOsQBdH4cDcebhco+AA3HugokTModQ+OAyB12ckDtwieMyh1R/EWsOQhwAc0cKgYABjATg1whJ0h0znr345f/SHTOevfjl/9IdM569+OX/0h0znr345f/SHTOevfjl/9IdM569+OX/USb4l/9/AoAAAAAAAAAAAA==”}’}]}}]
Input data prepared successfully.
input data = {‘stage2active’: ‘true’, ‘xycopies’: 2, ‘pinkmesh_saved’: {‘type’: ‘Rhino.Geometry.Mesh’, ‘data’: ‘{“version”:10000,“archive3dm”:60,“opennurbs”:-1903654895,“data”:“+n8CAGcDAAAAAAAA+/8CABQAAAAAAAAA5NTXTkfp0xG/5QAQgwEi8C2
5G1z8/wIALwMAAAAAAAA4GAAAAAYAAADSHTOevfjl/9IdM569+OX/0h0znr345f/SHTOevfjl/9IdM569+OX/0h0znr345f/SHTOevfjl/9IdM569+OX/AAAAAAAAAAAAAAAAAAAAAAAAgD8AAIA/AACAPwAAgL8AAIC/AACAvwAAgD8AAIA/AACAPwAAgL8AAIC/AACAvwAAgD8AAIA/AACAvwAAgL//////AAA
AAAABAAAAAAECAwQFBgcICQoLDA0ODxAREhMUFRYXIAEAAFJfoUQBAIAAQD4AAAAAAAAAeNpjYEAHDg4QusEBlY1NDTYAk3NwwFSHbE6DA6ZZIDa6GnT3IKuBsdHNQGYjq8FlFzY1EDYApqcVAWpXQpUgAQAAPE+V9wEAgABAIwAAAAAAAAB42mNggIGG/QxEsYlVhwxI0dNgjyRGBJu2egAYmRfpsrvadAAAAAA
AAAAAYAAAACqaPecA/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAQKQAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAGk8mKMAAAAAAQCAAEBoAAAAAAAAAAEAAAAAAAAAGAAAAEACAAAV8y/GAQCAAEBDAAAAAAAAAHjaY2AgBnA4oPIFHPCLE2sOsQBdH4cDcebhco+AA3HugokTModQ+OAyB12ckDtwieMyh1R/EWsOQhwAc0cKgYABjATg1whJ0h0znr345f/SHTOevfjl/9IdM569+OX/0h0znr345f/SHTOevfjl/9IdM569+OX/USb4l/9/AoAAAAAAAAAAAA==”}’}}
files = [(‘input.json’, <_io.BytesIO object at 0x0000014A306FDB30>)]
files = [(‘input.json’, <_io.BytesIO object at 0x0000014A306FDB30>), (‘outputs.json’, <_io.BytesIO object at 0x0000014A3071C9A0>)]
Generated outputs.json: [{“mesh”: “bluemesh”, “data”: [“xyCopies”]}]
2024-02-15 15:52:14.911 INFO : External analysis not yet finished, waiting 1 seconds to retry…
2024-02-15 15:52:16.077 ERROR : Exception is raised
Traceback (most recent call last):
File “viktor_connector\connector.pyx”, line 295, in connector.Job.execute
File “viktor\core.pyx”, line 1924, in viktor.core._handle_job
File “viktor\core.pyx”, line 1870, in viktor.core._handle_job._handle_button
File “C:\Users\dolfb\PycharmProjects\DolfLab\VIKTORApp\BabySteps\app.py”, line 286, in set_page_2_and_run_grasshopper
self.run_grasshopper_script(params, **kwargs)
File “C:\Users\dolfb\PycharmProjects\DolfLab\VIKTORApp\BabySteps\app.py”, line 107, in run_grasshopper_script
generic_analysis.execute(timeout=3600)
File “viktor\external\external_program.pyx”, line 385, in viktor.external.external_program.ExternalProgram.execute
viktor.errors.ExecutionError: Something went wrong during the execution.
When I see your script I suspect it has got to do with how you get from the pinkmesh to a pinkmesh_encoded?
Could you please assist and have a look at the info above?
I’ve been trying to find info on the json-format it should have but I couldn’t find anything.
Many thanks in advance 