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

Вывод последнего действия ( Last Operation )

Alexander Ledenev

Активный участник
Рейтинг
13
существует ли команда, выводящая последнее действие.
в майе, есть undoInfo
- в сочитании с -undoName выводит самое последнее действие.
- в сочетании с -printQueue выводит список последних действий.

есть ли подобное в МАКСскрипте?

Alexander Ledenev

Активный участник
Рейтинг
13
ну, блин блинский.
как сделать так, чтобы при создании бокса вылетало сообщение "бокс", а при создании сферы, вылетало сообщение "сфера"?
Рейтинг
31
fn logCreateNode = (
	anode = callbacks.notificationParam()
	print ((classof anode) as string)
)


callbacks.removeScripts #sceneNodeAdded id:#bs_sceneNodeAdded 
callbacks.addScript #sceneNodeAdded "logCreateNode()" id:#bs_sceneNodeAdded
Копай топик General Event Callback Mechanism в хелпе по MaxScript.

Если не секрет, зачем такие извращения?

Alexander Ledenev

Активный участник
Рейтинг
13
Black Sphinx
большое спасибо, посмотрю.

Если не секрет, зачем такие извращения?
это долгая история. просто хочу оптимизировать работу - иметь одно окно ввода информации (достало лазить по десяткам окон). что-то вроде скетчапа. например при создании бокса ввести 50;50;50 (а не вставлять по числу в три окна) при создании плоскости вводить 50;50, при создании сферы вводить 50. И всё это вводить в одно окно.

таков мой план:
- пользователь создает объект (сфера)
- вводит информацию "50" с фокусировкой на окно ( setFocus )
- дальше, определяется последнее действие и если это сфера,
- то распределить введенную инфу на свойства сферы


так же это будет работать со смещением и вращением объектов:
- пользователь смещает объект по оси x
- вводит информацию 50
- определяется последнее действие и если происходит релятивное смещение по оси x,
- то вычислить разницу между введенным числом "50" и результатом смещения
- сместить на величину этой разницы, в итоге произойдет то самое смещение на 50.

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

почему не использую скетчап?
мне нравится легкость скетчапа и при том, в плане параметрических задач, он на голову выше макса (что странно, т.к. макс пользуется успехом у интерьерщиков), но скетчап не подходит для объектов сложной формы. К тому же, делать работу поочередно в двух программах - гемор ещё тот.

Поэтому, я решил реализовать мегаплюсы скетчапа в какой нибудь программе посложней и полагаясь на слухи структуры "коструктора", мой выбор пал на maya. Взялся за MEL и после двух недель изучения - удалось частично решить задачу со смещением и экструдированием. НО в плане экспорта майя безобразна, кое как экспортирует в dwg, который не опознается скетчапом, а экспорт в векторный ai - отдельный танец с бубном при помощи рендера. А мне важна связь со внешним миром.

Перекачевал обратно на макс и пытаюсь сделать программу своей мечты. хотя и тут есть свои недостатки, а именно синтаксис максСкрипта, но главное - возможность реализации. как-то так
Рейтинг
31
Александр, у меня ощущение, основанное на опыте работы с MaxScript, что твоя задумка в контексте Макса нереализуема.

Предлагаемый тобой алгоритм работы скрипта завязан на получении информации о последнем действии пользователя. Похоже, что к этой информации доступа нет. (Вообще в Максе History - вещь в себе. Например иногда она почему-то очищается. И не по принципу FIFO, а целиком.)

Теоретически что-то подобное твоему описанию сделать можно, но только путём переписывания на МаксСкрипте доброй половины пользовательского интерфейса. Т.е. использовать Макс как ядро, но пользоваться самописным UI. Думаю, что практически это нереально сделать: во-первых, из-за огромного объёма работы по созданию такой системы скриптов, а во-вторых, из-за того, что в один прекрасный момент обнаружится, что к какой-то функции ядра нет интерфейса из МаксСкрипта (я уже натыкался на такие вещи).

Если посмотреть с другой стороны, то не проще ли переучиться на родной UI Макса, если ты решил использовать именно этот пакет? Ведь тяжело только первые тысячу лет, а потом привыкаешь.