Держим modoXXX.CFG "чистым".

Главные вкладки

26

Зачем?

Чтобы можно было "безболезненно" удалить его. При возникновении некоторых ситуаций с настройками интерфейса, работы инструментов и программы вцелом, бывает необходимо восстановить "рабочее" состояние функционала, и если нет сил/времени/желания/возможности сделать это стандартными путями, поможет удаление фала конфигурации, в котором записываются все модификации интерфейса, инструментов, горячих клавиш, и т.д.
Сразу замечу, что переустановка modo смысла не имеет, т.к. ресурсы в процессе работы не изменяются, а накопленные изменения всегда можно "зачистить".
Свои настройки Вы сможете хранить в отдельных файлах, это также облегчит "перенос" своих меню и горячих клавиш на новую версию программы.

Для начала немного общей информации

Файл конфигурации находится в User Folder (нажать в modo System > Open User Folder) и называется modo601.CFG (Для версии 601, разумеется ;) ).
Большинство начальных настроек хранится в папке с ресурсами программы (команда для открытия file.open "resource:").
Файл конфигурации создаётся или обновляется во время закрытия modo. Поэтому удалять его следует после этого.
При открытии modo загружает дополнительные файлы конфигурации из следующих мест (порядок соблюдён) - resource:, module:Scripts, user:Configs, user:Scripts, content:Kits. При загрузке данных с одинаковыми "ключами", "старые" заменяются "новыми".
Импортированные формы нельзя удалить, если потребуеся, из Form Editor, их надо удалять из файла конфигурации, редактируя его в блокноте. Если это вызовет трудности, то перед экспортом надо сохранить необходимые формы в отдельные файлы.

Приступим

Зачистка начинается с экспорта конфигурации (File > Config Export), но предварительно лучше сохранить конфиг в отдельной папке, на всякий случай. Экспортировать лучше в папку Configs.
Можно  экспортировать сразу все фрагменты или по частям.
После экспорта закрываем modo и удаляем файл конфигурации, после чего запускаем modo и проверяем все ли нужные настройки загрузились из внешнего файла.
Если всё присутствует, то переходим к более детальному разбору, если есть желание, или же празднуем успех операции.)

Разбор

Для удобства манипуляций разными настройками, их лучше разнести по разным файлам.

Общие настройки

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <atom type="AppGlobal">
    <atom type="LassoStyle">rectangle</atom>
    <atom type="SelectionSize">4.5</atom>
    <atom type="SnapState">0</atom>
  </atom>
  <atom type="Preferences">
    <atom type="remapping.absInput">tablet</atom>
    <atom type="remapping.enterAsTab">1</atom>
    <atom type="remapping.doubleSided">1</atom>
    <atom type="handles.toolHandleSel">advanced</atom>
    <atom type="handles.toolHandleUnsel">advanced</atom>
    <atom type="application.imageFormatName">PNG16</atom>
    <atom type="application.defaultSubdivs">face</atom>
    <atom type="remapping.openDialogsUnderMouse">1</atom>
  </atom>
</configuration>

Горячие клавиши

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <atom type="InputRemapping">
    <hash type="Region" key="view3DSelect+(contextless)/(stateless)+edge@s">@C:\Users\Oleg\AppData\Roaming\Luxology\Scripts\dj_LoopSlicePick.py</hash>
    <hash type="Region" key="view3DSelect+(contextless)/(stateless)+edge@ctrl-alt-s">@C:\Users\Oleg\AppData\Roaming\Luxology\Scripts\dj_LoopSlicePick.py 0</hash>
    <hash type="Region" key="view3DSelect+(contextless)/(stateless)+edge@alt-shift-s">@C:\Users\Oleg\AppData\Roaming\Luxology\Scripts\dj_LoopSlicePick.py 2</hash>
    <hash type="Region" key=".global+(contextless)/(stateless)+.anywhere@shift-backspace">@edgeRemoveTrue.pl</hash>
    <hash type="Region" key=".global+(contextless)/(stateless)+.anywhere@q">@makeCap.LXM</hash>
    <hash type="Region" key="view3DOverlay3D+(contextless)/(stateless)+.anywhere@ctrl-shift-v">@pasteandselect.pl</hash>
    <hash type="Region" key="view3DSelect+(contextless)/(stateless)+polygon@s">@sectionToPolys.py selMouse selAdd selKeep</hash>
    <hash type="Region" key=".global+(contextless)/(stateless)+.anywhere@alt-backspace">edge.remove true</hash>
    <hash type="Region" key=".global+(contextless)/(stateless)+.anywhere@q">@C:\Users\Oleg\AppData\Roaming\Luxology\Scripts\test.pl</hash>
    <hash type="Region" key="shaderTree+(contextless)/(stateless)+.anywhere@e">@maskToggleVisibility.py</hash>
    <hash type="Region" key=".global+(contextless)/(stateless)+.anywhere@n">@LayerNEW_groupIt.pl</hash>
  </atom>
</configuration>

Формы

<?xml version="1.0"?>
<configuration>
  <atom type="Attributes">
    <hash type="Sheet" key="63329076329:sheet">
      <atom type="Label">orient_UV_shel</atom>
      <atom type="Style">inline</atom>
      <hash type="InCategory" key="42919327293:sheet#tail">
        <atom type="Ordinal">49.50.55</atom>
      </hash>
      <list type="Control" val="cmd @orient_UV_shell.py">
        <atom type="Label">orient_UV_shell</atom>
        <atom type="StartCollapsed">0</atom>
        <atom type="Hash">11459076337:control</atom>
      </list>
    </hash>
  </atom>
</configuration>

Остались вопросы? Спрашивайте, дополню тему.

Вторая часть - Укрощение форм. Работа с Form Editor, Forms в cfg, структура и построение интерфейса из Form и Layout.

26 Комментариев

#

Спасибо, отлично изложено. Я бы добавил для макострадальцев, что файл MODOXXX лежит по адресу:

~/Library/Preferences

и называется com.luxology.modo601 В Finder-e делаем Shift+Cmd+G, пишем путь ~/Library/Preferences, находим com.luxology.modo601 и бросаем его в помойку.

Плюс, есть хороший скрипт для раздельного сохранения конфигов и их последующего анализа:

# python
import sys
import lx
#get folder path
lx.command("dialog.setup", style="dir")
lx.command("dialog.title", title="Select Folder to Export Fragments")
lx.command("dialog.fileType", type="config")
lx.command("dialog.open")

#Save and remove layouts from Modo config
outputFile = lx.eval("dialog.result ?") + "/Layouts.cfg"
LXCMD ="config.export ["+outputFile+"] frame [0] [0]"
lx.eval(LXCMD)
#Save and remove Forms from Modo config
outputFile = lx.eval("dialog.result ?") + "/Forms.cfg"
LXCMD ="config.export ["+outputFile+"] attrs [0] [0]"
lx.eval(LXCMD)

#Save and remove Keys from Modo config
outputFile = lx.eval("dialog.result ?") + "/Keys.cfg"
LXCMD ="config.export ["+outputFile+"] keys [0] [0]"
lx.eval(LXCMD)
#Save and remove Preferences from Modo config
outputFile = lx.eval("dialog.result ?") + "/Prefs.cfg"
LXCMD ="config.export ["+outputFile+"] prefs [0] [0]"
lx.eval(LXCMD)

#Save and remove TOOL Presets from Modo config
outputFile = lx.eval("dialog.result ?") + "/Tool_Presets.cfg"
LXCMD ="config.export ["+outputFile+"] tools [0] [0]"
lx.eval(LXCMD)
#Save and remove Input mapping from Modo config
outputFile = lx.eval("dialog.result ?") + "/InputMapping.cfg"
LXCMD ="config.export ["+outputFile+"] inputs [0] [0]"
lx.eval(LXCMD)

#Save and remove Macros from Modo config
outputFile = lx.eval("dialog.result ?") + "/Macros.cfg"
LXCMD ="config.export ["+outputFile+"] macros [0] [0]"
lx.eval(LXCMD)

Я по запаре забыл, откуда его взял :( У автора и видео записано, как и чего - найду через какое-то время и добавлю.

#

Спасибо, отличное дополнение. И отдельное спасибо, что выложил скрипт.

Как он называется?
Плохо, что автор не оставил описание, ссылку на видео и контактную информацию внутри скрипта. )

#

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

Да, все оно есть в конфигах, никуда не делось, вот только подгрузиться как было изначально не захотело.

#

Sample wrote:

т.е. когда экспортишь он потом из разных файлов подтягивает или как?

Да. Подтягивает все конфиги из указанных папок:
  <import>resource:</import>
  <import>module:Scripts</import>
  <import>user:Configs</import>
  <import>user:Scripts</import>
  <import>content:Kits</import>

#

APEC wrote:

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

Да, все оно есть в конфигах, никуда не делось, вот только подгрузиться как было изначально не захотело.

С формами есть особенности, о них ещё будет рассказано подробнее.

#

Тринадцатый Гость wrote:

Спасибо, отличное дополнение. И отдельное спасибо, что выложил скрипт.

Как он называется?
Плохо, что автор не оставил описание, ссылку на видео и контактную информацию внутри скрипта. )

С превеликим удовольствием :)))

Таки нашел, откуда спёр, лежало под носом: http://content.luxology.com/community/user_tutorials/timvazquez/modoconf..., архив 125 MiB

А изначально все обнаружилось тут: http://hellomodo.com/2012/12/essentials-config-files/ В самом посте у чувака там еще несколько ссылок на Люксовский форум, где обсуждались непонятки с модовским стилем конфигурирования. В принципе, все понятно, если разобраться - при запуске модо конкатенирует конфигурацию сессии из разных мест, какие найдет, и каковые можно самому добавлять директивой <import>путь к добру</import> Примерно как в нюке, гудини или еще где. Подвох кроется в том, что после закрытия, модо сбрасывает все, что насосало, или что юзер накрутил в процессе работы, в этот вот пресловутый файл MODO.xxx и при последующих запусках он становится основным конфигом, эталоном. Поэтому у людей и появляются пустые файлы конфигов после операции Save Config - нечего сохранять-то, изменения в основной файл.ххх модо уже внесла! сама! когда закрылась! :))) Люксам бы лучше было бы передусмотреть вариант в преференсах где-нибудь: сохраняться автоматически (для нормальных людей) или сохраняться принудительно (для шаловливых ручек). Но и так в принципе жить можно - хоть и не интуитивно, но в любой пайплайн мода встраивается без проблем. Уф-ф-ф :)))

#

В общий конфиг записываются изменения и принудительный импорт. Импорт автоматический, при запуске модо, в общий конфиг не добавляется.
modoXXX.CFG не эталон, а текущее состояние, которое сравнивается с эталоном в ядре движка (и с внешними конфигами) при экспорте, и разница сохраняется.
Config Save сохраняет текущие изменения в modoXXX.CFG и они становятся приоритетными, так как записаны после команд импорта внешних конфигов.

У меня программка стоит - Process Killer, в любой момент можно снять модо, и конфиг не испортится, бывает полезно.

#

Тринадцатый Гость wrote:

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

Спасибо, так гораздо понятнее. 

Но я запутался - почему ж автоматический импорт не добавляется-то? Я проверял, что прописано во внешнем файле, потом становится частью modoXXX.CFG. Или мы про разное говорим? Лично мне показалось, что лучше вообще "File/Save (Import, Export) Config" избегать, а действовать примерно так, показано в видео. И изучать потихоньку пресловутый "эталон" - кучу *.cfg файлов, которые лежат в папке с программой, в Виндовс это кажется /Program Files/modo/Resources, в Макос - modo.app/Contents/Resources

Мучает один вопрос - откуда ты про все это узнал? :))) В смысле, это опыт или где-то это все официально задокументировано? Или я может Scripting_and_Commands.pdf не весь прочитал :)

#

Про автоимпорт. У меня Mario Beta Case во внешнем конфиге, в общем его нет. Если я изменю в его формах что-нибудь, то соответствующая форма в измененном виде будет в общем конфиге.
Импорт конфига лучше избегать, согласен. Лучше положить этот конфиг папку с конфигами и модо его подключит, без загрязнения общего конфига. Экспорт всё же нужен.
В ресурсах стоит покопаться, но сначала лучше покопаться в общем конфиге и понять логигу построения, архитектуру "формовой" системы. Вроде бы ничего сложного, но есть ньюансы, на которых можно впадать в ступор.
Хэлп по командам не весь прочитал, там больше пользы когда знаешь, что хочешь. Всё-таки не учебник, а скорее справочник.
Разбирался сам, по форм эдитору, по чужим скриптам, конфигам, китам. Конструировал своё из других частей, не во все вникая досканально. От общего к частному. Анализ и синтез, разбор и переосмысление.
Если есть желание разобраться, то надо следить за веткой скриптинга на офсайте, там живые примеры, с разбором, историей, а главное не большие.
 

#

701 както по странному подхватывает конфиги...

Формы появились, а вот клавиши переназначенные не переназначились..., сделал импорт конфига клавиш, появились. Потом убираю папку с конфигами 601, т.к. не нужны и после этого пропадают переназначенные клавиши. Так и должно быть? Если да, то как импортнуть конфиг с клавишами чтоб потом его удалить можно было?

#

1. когда импортил да, после импорта убрал.

2. нет, но клавиши после импорта сразу переназначились даже без конфиг сейва. Потом закрыл/открыл и они все еще были. Потому конфиг сейв и не наживал, думал уже встроились. Потом перенес папку с конфигами 601 и клавиши ресетнулись на 701 дефолт.

Щас попробую импортнуть и конфиг сейвнуть.

Апдейт: попробовал, не помогло, сбрасываются назначенные клавиши. Импортнул конфиг клавиш - сонфиг сейв - вышел из программы - перенес папку в другое место - включаю прогу - клавиши дефолтные 701.

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

#

кхм, так сработало, НО...

кинул папку в корень С: , зашел в модо, экспортнул файл конфига кнопок, заработало, сейвнул конфиг, вышел. Открываю все работает :) НО , переместил папку из С: в другое место и снова все пропало =)

Короче намудрили чтото непонятное покачто с модо, оставлю пока в стандартном месте все и пусть живет там.

#

заремапь хот, сохрани, открой большой конфиг блокнотом и вставь в раздел Input Remapings свои строки. Тогда можно будет спокойно удалить внешние конфиги. Но зачем так делать, не пойму. Удобно же когда всё отдельно.
 

#

В общем.. что-то не то у меня с лыжами. )) 

Сношу общий конфиг. Перестают работать мои шоткаты. Логично.

Возвращаю его - все работает как и должно. Шоткаты на месте. Открываю конфиг в текстредакторе - нету моих шоткатов в нем. Сношу - не работают шоткаты. Опять возвращаю - все ок. Но в самом конфиге раздел InputRemapping не содерижт моих шоткатов. И экспорт тоже их не экспортит. А они есть. )) Может в большом конфиге есть перенаправление на другой какой то конфиг? Ну просто других идей у меня уже нету.

#

Экспорт надо делать или all или key mapings, я одно время путал с input mapings, потому что в конфиге на выходе раздел называется InputRemapping

Если снос конфига даёт разницу, то дело в нем. Пути импорта прописаны в первых строках большого конфига, и они не меняются ни чем, если только сам не добавлял строки.

Если не разберешься, то кидай мне свой конфиг - гляну. Можно здесь или в скайп.

#

Попробуй ещё искать по самому хоткею, текст в файлах. Например .anywhere@r

Напиши какой-нибудь хоткей свой, подскажу как он заисывается в конфиге, чтобы знать что искать. Где то он точно есть, "в уме" модо точно не держит)

#

Тринадцатый Гость wrote:

 Пути импорта прописаны в первых строках большого конфига, и они не меняются ни чем, если только сам не добавлял строки.

Вот где оказалось собака побрилась. )))

обнаружил в путях в самом начале конфига такую вот строку 

bio wrote:

<import>D:\Modo_Configs\Export_Configs\keys.CFG</import>

В этом вот конфиге все шоткаты мои и лежали. А в основном их не было. По самому хоткею искал конечно прям с самого начала. Спасибо огромное!

АРЕС, твоя кстати проблемка очень похожа на что-то вот такое же.

#

Это видимо такая строчка добавляется, когда импорт нажимаешь в модо. А я каппу не жал эту, я просто конфиги размещал в стандартных папках, потому и сбоей небыло при сносе конфига.
пс: а где-то я кажется писал, что импорт не нажимать.

#

Самое отвратительное что есть в модо, так это вот эта система сохранения настроек. Всего то надо автосохранение, чтобы допустим поставил чекбокс на настройке и она в тот же момент записывала это в файл настройки preferences.cfg, назначил горячую клавишу также автоматом сохраняется в keymaps.cfg и т.д. Элементарно же. Может кто предложит разработчикам у кого english грамотный

сделать такую нужную вещь?

#

Приходится всё сохранять в одном файле MODOXXX.CFG и бэкапить его, потому что при изменении чего нибудь и повторном экспорте всё в файле исчезает, а при нажатом append (при экспорте) всё дублируется. Жаль сколько времени из за каких-то настроек потерял.