Render.ru
Поддержать

Оформить скрипт в плагин?

Ilya Крупко

Знаток
Рейтинг
75
День добрый!
Написал скрипт небольшой, хочу теперь оформить в плагин, или инсталер какой-нибудь. Чтобы пару файлов кинул в максовские папки, поставил автозагрузку скрипта, и создал может быть кнопку на панеле инструментов для его быстрого вызова. В хелпе нашел классы плагинов, но это как я понимаю добавляем стредства запуска только на панель создания, я же хочу отдельную кнопку, например рядом с рендером или его свойствами.
Спасибо

Ilya Крупко

Знаток
Рейтинг
75
как я понимаю есть способ сделать скрипт макроскриптом или плагином, но в любом случае пользователю придется самому лезть в кастумайз интерфейс и вытаскивать его на тулбар или еще куда-то. Нет ли способа прямо в скрипте добраться до нее? сделать скриптом для себя самого кнопку на панеле инструментов? я честно почитав не нашел..((

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
Нет нету, предпологается что пользователь сам вытащит кнопку куда ему удобней.

Protactinium

Пользователь сайта
Рейтинг
2
Есть один неофициальный способ добавить кнопку скриптом.
Для этого нужно напрямую отредактировать текущий .cui файл (файл описания пользовательского интерфейса).
Сам файл можно получить с помощью функции cui.getConfigFile().
В этом файле описаны все панели инструментов и кнопки на них например так:

[Snaps]
Rank=0
SubRank=0
Hidden=1
FRect=149 184 451 245
DRect=2147483647 2147483647 -2147483648 -2147483648
DRectPref=2147483647 2147483647 -2147483648 -2147483648
DPanel=0
Tabbed=0
TabCt=0
CurTab=-1
CurPos=16 149 184 451 245
CType=1
ToolbarRows=1
ToolbarType=16
ItemCount=10
Item0=2|0|0|31|4|1259304063|50067|0|0|"Snap To Grid Points Toggle"||0|Snap_Points
Item1=2|0|0|31|4|1259304063|50069|0|0|"Snap To Pivot Toggle"||1|Snap_Points
Item2=2|0|0|31|4|1259304063|50073|0|0|"Snap To Vertex Toggle"||3|Snap_Points
Item3=2|0|0|31|4|1259304063|50074|0|0|"Snap To Endpoint Toggle"||6|Snap_Points
Item4=2|0|0|31|4|1259304063|50076|0|0|"Snap To Midpoint Toggle"||5|Snap_Points
Item5=2|0|0|31|4|1259304063|50075|0|0|"Snap To Edge/Segment Toggle"||2|Snap_Points
Item6=2|0|0|31|4|1259304063|50077|0|0|"Snap To Face Toggle"||4|Snap_Points
Item7=3|6|16|31|1
Item8=2|0|0|31|3|0|40905|0|0|"Snaps To Frozen Objects Toggle"|"Snaps To Frozen Objects Toggle"|-1|
Item9=2|0|0|31|3|0|40904|0|0|"Snaps Use Axis Constraints Toggle"|"Snaps Use Axis Constraints Toggle"|-1|

ItemCount определяет количество кнопок. А Item1 (например) вторую кнопку.
Если например кнопка описана как:
Item27=2|0|0|31|4|647394|namedSelSets`Edit|0|0|"Edit Named Selection Sets"||0|enss_maintoolbar
то nameSelSets - это имя макроскрипта, Edit - категория скрипта, "Edit Named Selection Sets" - всплывающая подсказка enss_maintoolbar - имя файла иконки, 0 - номер иконки в файле. 2|0|0|31|4|647394 - понятия не имею че это такое, но это должно быть )

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
Вот вот, после таких советов макс а то и проект обычно приходиться поднимать заново.
Очень плохая практика.
Denis Omelchenko не думаю что это было так уж неоходимо человеку, поставить кнопку занимает 15 секунд. Зато вроде как блеснул познаниями =)

Ps. На свой страх и риск как говориться.

Protactinium

Пользователь сайта
Рейтинг
2
Абсолютно согласен )
Здесь главное аккуратность.

Если человеку необходимо именно програмно создавать панели инструментов, то он все таки может это сделать, но на свой страх и риск.

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
Если человеку необходимо именно програмно создавать панели инструментов, то он все таки может это сделать, но на свой страх и риск.
В корне не верный подход, почему я тебе и сделал замечание.

Прежде чем советовать воспользоваться хаком, нужно понять что он дейcтвительно необходим. Человек(извини Kruil) пока не может отличить плагин от макроскрипта, а ты ему сразу не разобравшись давай хачить. Тем более что даже формат файла знанаеш не до конца.

понятия не имею че это такое, но это должно быть )

Protactinium

Пользователь сайта
Рейтинг
2
Тем не менее речь идет о написании инсталера. В таком случае этот совет как раз в тему.
У меня была подобная задача, иначе я бы не стал давать этот совет.

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
Как думаеш, я наверно не знал этого метода ? Ну теперь точно буду в курсе.=)

Ilya Крупко

Знаток
Рейтинг
75
Так. в общем я уже продвинулся, создал инсталятор с помощью фриварной софтины, файлы кидаются куда надо. Теперь хотел бы полностью разобраться в описании файла cui. Кто знает где можно достать описание файла точное? где что в нем описано?Denis Omelchenko конечно подкинул информации для размышлений, но мне ее боюсь не хватает(

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
Kruil нет точного описания, уже говорили что это неофицильный хак. Формат файла я вляется внутренним и меняется от версии к версии.
PS
В максе есть много других способов запустить скрипт или функцию, от докабельного диалога куда можно поместить туже кнопку до регистрации в главном меню или в кваде.
Про установку можно почитать тут.

Protactinium

Пользователь сайта
Рейтинг
2
Вообще былобы неплохо разобрать формат cui и здесь разместить. Но это придется делать методом тыка...

На сколько я понял, официальный способ создания тулбаров - через max sdk.
Там есть хороший пример: 3ds Max 2008 SDK\maxsdk\howto\ui\cuitest\.
А в хелпе по сдк объясняется, как это сделать.

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
Да в SDK есть такая возможность, если так уж хочется то можно вытащить функции работы с CUI в макскрипт написав раширение.
Это наболее корректный путь.

PS
Были одно время попытки сделать утилиты для работы с этими файлами, но уже со следущей версией они работали не корректно.
Не нужно повторять чужие ошибки.

Protactinium

Пользователь сайта
Рейтинг
2
Да но если мы пишем инсталятор, то это расширение придется всегда тоскать вместе с инсталятором. Это возможно?

p.s.
А что мешает разбираться с кажддой новой версией cui файла? Думаю изменения там не слишком большие вносят...

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
Почему бы нет ? Так достаточно часто и делают, когда хотят получить скорость и простоту разработки UI.
Просто прекомпилировать библеотеку с новым SDK, намного проще чем снова заниматься анализом фомата файла и вносить изменения в скрипт.