Редактирование файла проекта

Файл проекта Wrap представляет собой простой текстовый файл в формате JSON. Его можно легко прочитать и исправить в любом текстовом редакторе.

Структура файлов проекта

Ниже приведен пример файла проекта, содержащего две ноды Load и Subdivide. Сначала он загружает геометрию из файла *.obj, а затем разбивает ее на части. Полный файл проекта можно скачать здесь.

Project.wrap
{
    "formatVersion": 0,
    "nodes": {
        "Load": {...},
        "Subdivide": {...},
    },
    "timeline": {
        "current": 0,
        "max": 10,
        "min": 0
    }
}

В некоторых случаях может быть полезно иметь возможность найти и изменить параметр ноды внутри файла проекта с помощью текстового редактора или пользовательского скрипта.

Например, мы хотим изменить этот проект так, чтобы он загружал геометрию из другого файла *.obj.

Давайте рассмотрим ноду Load, который загружает геометрию.

"Load": {
    "isAlwaysVisible": true,
    "nodeId": 0,
    "nodeType": "LoadGeom",
    "params": {
        "fileNames": {...},
        "texture": {...},
        "transform": {...},
        "visualParam": {...}
        }
    },
    "x": 262,
    "y": 242
},

Мы видим, что у ноды есть 4 параметра, один из которых ``fileNames““.

"fileNames": {
    "connectedNodeId": -1,
    "dataType": "StringList",
    "value": [ "C:/Models/Alex.obj" ]
},

Изменить имя файла очень просто. Все, что нам нужно сделать, это изменить строку

"value": [ "C:/Models/Alex.obj" ]

на строку

"value": [ "C:/Models/John.obj" ]

Редактирование файла проекта с помощью Python

Предыдущую операцию можно выполнить с помощью нескольких строк Python скрипта

import json
f = open('Project.wrap','r')
project = json.loads(f.read())
project['nodes']['Load']['params']['fileNames']['value'] = ['C:/Models/John.obj']
f.close()

Чтобы записать отредактированный проект обратно в файл, мы можем сделать следующее

f = open('Project.wrap','w')
f.write(json.dumps(project))
f.close()

Вы также можете использовать Интерфейс командной строки для вычисления отредактированного проекта в Wrap.

Предупреждение

Формат файла проекта не гарантируется в будущем. Вы можете использовать редактирование проекта как временное решение для автоматизации, пока мы не включим поддержку Python скриптов в Wrap.