示例#1
0
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())
示例#3
0
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())
示例#5
0
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))
示例#6
0
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
示例#7
0
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