def RunCommand(is_interactive): if "FOFIN" not in sc.sticky: print("Initialise the plugin first!") return FOFIN = sc.sticky["FOFIN"] options = ["save", "save_as"] option = rs.GetString("Save the FOFIN session.", options[0], options) if not option: return data = {"settings": FOFIN["settings"], "cablenet": None} if FOFIN["cablenet"]: data["cablenet"] = FOFIN["cablenet"].to_data() file_dir = FOFIN["settings"]["file.dir"] file_name = FOFIN["settings"]["file.name"] if option == "save": if not file_dir: file_dir = compas_rhino.select_folder(default=HERE) if not file_dir: print("No directory selected.") return if not file_name: file_name = rs.GetString("File name") elif option == "save_as": FOLDER = file_dir or HERE file_dir = compas_rhino.select_folder(default=FOLDER) if not file_dir: print("No directory selected.") return file_name = rs.GetString("File name") FOFIN["settings"]["file.dir"] = file_dir FOFIN["settings"]["file.name"] = file_name if not os.path.isdir(file_dir): print("The selected directory is invalid: {}".format(file_dir)) return if not file_name: print("No filename provided.") return if not file_name.endswith(".fofin"): print("The filename is invalid: {}".format(file_name)) return filepath = os.path.join(file_dir, file_name) with open(filepath, "w") as f: json.dump(data, f)
def RunCommand(is_interactive): try: if 'compas_assembly' not in sc.sticky: raise Exception('Initialise the Assembly plugin first!') assembly = sc.sticky['compas_assembly']['assembly'] folder = compas_rhino.select_folder(default=compas_rbe.DATA) print(folder) if not folder: return filename = rs.GetString('Name of the json file?') print(filename) if not filename: return name, ext = os.path.splitext(filename) if ext != '.json': filename = name + ext + '.json' assembly.to_json(os.path.join(folder, filename)) except Exception as error: print(error) print(traceback.format_exc())
def RunCommand(is_interactive): if "FOFIN" not in sc.sticky: print("Initialise the plugin first!") return FOFIN = sc.sticky["FOFIN"] if not FOFIN["cablenet"]: print("No cablenet to serialise.") return file_dir = FOFIN["settings"]["file.dir"] FOLDER = file_dir or HERE file_dir = compas_rhino.select_folder(default=FOLDER) if not file_dir: print("No directory selected.") return if not os.path.isdir(file_dir): print("The selected directory is invalid: {}".format(file_dir)) return file_name = rs.GetString("File name") if not file_name: print("No filename provided.") return if not file_name.endswith(".json"): print("The filename is invalid: {}".format(file_name)) return filepath = os.path.join(file_dir, file_name) FOFIN["cablenet"].to_json(filepath)
def RunCommand(is_interactive): try: if 'compas_assembly' not in sc.sticky: raise Exception('Initialise the Assembly plugin first!') assembly = sc.sticky['compas_assembly']['assembly'] settings = sc.sticky['compas_assembly']['settings'] session_dir = compas_rhino.select_folder('Save where?', SESSIONS) if not session_dir: return session_name = rs.GetString('Session name', 'session.compas_assembly') if not session_name: return session_path = os.path.join(session_dir, session_name) Blocks = { key: assembly.blocks[key].to_data() for key in assembly.vertices() } data = { 'settings': settings, 'assembly': assembly.to_data(), 'blocks': Blocks, } with open(session_path, 'w+') as fo: json.dump(data, fo) except Exception as error: print(error) print(traceback.format_exc())
def RunCommand(is_interactive): if 'EG' not in sc.sticky: compas_rhino.display_message("EscobedoGroup UI no available.") return mesh = sc.sticky["EG"].get('mesh') if not mesh: compas_rhino.display_message("No mesh is loaded.") return folder = compas_rhino.select_folder() if not folder: return path = os.path.join(folder, 'mesh_update.json') mesh.to_json(path) compas_rhino.display_message("Mesh saved in {}.".format(path))
def RunCommand(is_interactive): if 'TNA' not in sc.sticky: raise Exception("Initialise the plugin first!") TNA = sc.sticky['TNA'] form = TNA['form'] force = TNA['force'] settings = TNA['settings'] options = ['save', 'save_as', 'open'] option = rs.GetString("Initialise FormDiagram from", options[0], options) if not option: return if option == 'save': # save the current file in the current directory # get the components of the current filepath if not settings['file.dir']: file_dir = compas_rhino.select_folder(default=HERE) else: file_dir = compas_rhino.select_folder(default=settings['file.dir']) if not os.path.isdir(file_dir): print('The selected directory is invalid: {}'.format(file_dir)) return settings['file.dir'] = file_dir if not settings['file.name']: file_name = compas_rhino.select_file(folder=settings['file.dir']) if not file_name: print('The filename is invalid: {}'.format(file_name)) return settings['file.name'] = file_name file_name = settings['file.name'] if not file_name.endswith('.json'): print('The filename is invalid: {}'.format(file_name)) return # compile the filepath filepath = os.path.join(file_dir, file_name) # compile the data dict data = {'settings': settings} if form: data['form'] = form.to_data() if force: data['force'] = force.to_data() # write the data dict to the specified file with open(filepath, 'w') as f: json.dump(data, f) elif option == 'save_as': # save the current file using a different name and location # get the components of the current filepath if not settings['file.dir']: file_dir = compas_rhino.select_folder(default=HERE) else: file_dir = compas_rhino.select_folder(default=settings['file.dir']) settings['file.dir'] = file_dir if not os.path.isdir(file_dir): print('The selected directory is invalid: {}'.format(file_dir)) return file_name = rs.GetString('File name') if not file_name: print('The filename is invalid: {}'.format(file_name)) return if not file_name.endswith('.json'): print('The filename is invalid: {}'.format(file_name)) return settings['file.dir'] = file_dir settings['file.name'] = file_name if not file_name.endswith('.json'): print('The filename is invalid: {}'.format(file_name)) return # compile the filepath filepath = os.path.join(file_dir, file_name) data = {'settings': settings} if form: data['form'] = form.to_data() if force: data['force'] = force.to_data() with open(filepath, 'w') as f: json.dump(data, f) elif option == 'open': # open a specified file # and update the current file properties in the settings # get the dirname of the current filepath if not settings['file.dir']: filepath = compas_rhino.select_file( folder=HERE, filter='JSON files (*.json)|*.json||') else: filepath = compas_rhino.select_file( folder=settings['file.dir'], filter='JSON files (*.json)|*.json||') if not filepath: return file_dir = os.path.dirname(filepath) file_name = os.path.basename(filepath) settings['file.dir'] = file_dir settings['file.name'] = file_name if not file_name.endswith('.json'): print('The filename is invalid: {}'.format(file_name)) return # compile the filepath filepath = os.path.join(file_dir, file_name) compas_rhino.clear_layer(settings['layer.form']) compas_rhino.clear_layer(settings['layer.force']) with open(filepath, 'r') as f: data = json.load(f) settings.update(data['settings']) if 'form' in data and data['form']: form = FormDiagram.from_data(data['form']) form.draw(layer=settings['layer.form'], clear_layer=True, settings=settings) else: form = None if form and 'force' in data and data['force']: force = ForceDiagram.from_data(data['force']) force.draw(layer=settings['layer.force'], clear_layer=True) else: force = None del TNA['form'] del TNA['force'] TNA['form'] = form TNA['force'] = force TNA['settings'] = settings else: # any other options are invalid raise NotImplementedError
def RunCommand(is_interactive): if 'TNA' not in sc.sticky: raise Exception("Initialise the plugin first!") TNA = sc.sticky['TNA'] form = TNA['form'] force = TNA['force'] settings = TNA['settings'] options = ['save', 'save as', 'open'] option = rs.GetString("Initialise FormDiagram from", options[0], options) if not option: return if option == 'save': if not settings['file.dir']: file_dir = compas_rhino.select_folder(default=compas_tna.DATA) else: file_dir = settings['file.dir'] if not os.path.isdir(file_dir): return if not settings['file.name']: file_name = rs.GetString('File name') if not file_name: return else: file_name = settings['file.name'] if not file_name.endswith('.json'): file_name += '.json' filepath = os.path.join(file_dir, file_name) if not filepath: return data = {'settings': settings} if form: data['form'] = form.to_data() if force: data['force'] = force.to_data() with open(filepath, 'w') as f: json.dump(data, f) elif option == 'save as': file_dir = compas_rhino.select_folder(default=compas_tna.DATA) if not file_dir: return if not os.path.isdir(file_dir): return file_name = rs.GetString('File name') if not file_name: return if not file_name.endswith('.json'): file_name += '.json' settings['file.dir'] = file_dir settings['file.name'] = file_name filepath = os.path.join(file_dir, file_name) if not filepath: return data = {'settings': settings} if form: data['form'] = form.to_data() if force: data['force'] = force.to_data() with open(filepath, 'w') as f: json.dump(data, f) elif option == 'open': filepath = compas_rhino.select_file(folder=settings['file.dir'], filter='json') if not filepath: return compas_rhino.clear_layer(settings['layer.form']) compas_rhino.clear_layer(settings['layer.force']) with open(filepath, 'r') as f: data = json.load(f) settings.update(data['settings']) if 'form' in data: if data['form']: form = FormDiagram.from_data(data['form']) form.draw(layer=settings['layer.form'], clear_layer=True, settings=settings) else: form = None else: form = None if form: if 'force' in data: if data['force']: force = ForceDiagram.from_data(data['force']) force.draw(layer=settings['layer.force'], clear_layer=True) else: force = None else: force = None del TNA['form'] del TNA['force'] TNA['form'] = form TNA['force'] = force TNA['settings'] = settings else: raise NotImplementedError