1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

Перенос выделения референсированного объе

Тема в разделе "Maya", создана пользователем SteadFast, 15 авг 2013.

Модераторы: Dark™, Skif
  1. SteadFast

    SteadFast Пользователь сайта

    С нами с:
    06.09.2006
    Сообщения:
    13
    Симпатии:
    0
    Баллы:
    2
    Столкнулся с проблемой большого количества рефов, но никак не выходит написать скрипт что бы он смотрел какой референсный объект я выделил во viewport или в outliner, открывал reference editor и выделял его там, и, если референс вложенный, раскрывал стрелочку.

    Понимаю как открыть reference editor, взять выделенный объект через команду ls и как найти путь рефа через referenceQuery или его неймспейс.

    Но как отправить в reference editor запрос на выделение в нем строки и раскрыть стрелочку вложенных референсов?

    Обновление сообщения автором
    16.08.2013 в 12:13
    Разобрался как выделять:
    sceneEditor -edit -selectItem 0 $gReferenceEditorPanel;

    0 - это индекс референса. Соответственно, этой командой можно выделить только самую первую строчку. Если в первой строке есть вложенные рефы, то их выделить нельзя пока стрелка не развернута.

    Остается вопрос в том как сделать проверку на вложенный реф, развернуть стрелочку и выяснить индекс всех референсов в сцене, например, если есть несколько референсов со вложенными в них рефами, т.е. две или больше таких ветвей. Если стрелка свернута, то у вложенных референсов нет индекса вообще и команда:
    sceneEditor -edit -selectItem 1 $gReferenceEditorPanel; выдаст ошибку:

    // Error: line 1: //
     
  2. Dark™ vip

    Dark™ Administrator Команда форума

    С нами с:
    28.10.2001
    Сообщения:
    3.110
    Симпатии:
    217
    Баллы:
    1.520
    Во-первых, зачем это надо? Какая итоговая цель этого выделения?
     
  3. Владимир Забелин

    Владимир Забелин Активный участник

    С нами с:
    19.04.2012
    Сообщения:
    400
    Симпатии:
    12
    Баллы:
    17
    да цель-то понятна. выделить объект в сцене и посмотреть его эдится, например...
     
  4. SteadFast

    SteadFast Пользователь сайта

    С нами с:
    06.09.2006
    Сообщения:
    13
    Симпатии:
    0
    Баллы:
    2
    Для того, что бы быстро найти имя файла, откуда приходит конкретный референс, его путь, номер копии или сдублировать его и все остальное что быстро можно сделать в референс эдиторе. У меня в сцене рефов бывает больше 100, и частенько приходится тратить время на то что бы найти их в реф эдиторе. Я знаю что можно искать по имени, но опять же, если у несокльких рефов одинаковое имя, то нужно делать дополнительные действия для выяснения какой мне нужен файл.
     
  5. Владимир Забелин

    Владимир Забелин Активный участник

    С нами с:
    19.04.2012
    Сообщения:
    400
    Симпатии:
    12
    Баллы:
    17
    не убежден, что запрос на выделение можно вообще отправить в референс эдитор . все-таки выделение объекта в сцене и выделение строки в редакторе - это совершенно разные процедуры.
     
  6. Dark™ vip

    Dark™ Administrator Команда форума

    С нами с:
    28.10.2001
    Сообщения:
    3.110
    Симпатии:
    217
    Баллы:
    1.520
    Вот с этих целей и надо было начинать тему.
    Для единичного выделения:
    referenceQuery -filename `ls -sl`;

    Код:
    string $sels[] = `ls -sl`;
    duplicateReference `referenceQuery -rfn $sels[0]` `referenceQuery -f $sels[0]`;
    
     
  7. SteadFast

    SteadFast Пользователь сайта

    С нами с:
    06.09.2006
    Сообщения:
    13
    Симпатии:
    0
    Баллы:
    2
    Я же в начале другую цель написал :) Цель не в том что бы выделить ноды, а что бы получить выделение строки в окне референс эдитора выделив ноду, во вью порте.

    Выделение в референс эдиторе можно делать так:
    sceneEditor -edit -selectItem 0 $gReferenceEditorPanel;
    0 - это номер строки. НО если у этой строки есть вложенный реф (когда стрелочка слева от строки), то у того вложенного рефа нет индекса, что бы его выделить. Индекс появляется когда вручную кликаешь на стрелочку. Поэтому вопрос то собственно как и в 1 сообщении - как через мел, или, может, еще как то, сделать проверку есть ли такая стрелочка (т.е. получается есть ли индекс у рефа чью ноду во вью порте я выделил), открыть эту стрелочку, ну а выделить строку, если известен ее индекс уже понятно как.
     
  8. Dark™ vip

    Dark™ Administrator Команда форума

    С нами с:
    28.10.2001
    Сообщения:
    3.110
    Симпатии:
    217
    Баллы:
    1.520
    Нафига это надо? Финальная цель не в самом выделении, а в итоговом результате, который хотите получить от этого выделения.
    Любые действия с референсами можно осуществить через стандартные команды, а эти команды сохранить аккуратно на шелф и пользоваться ими. И свой GUI тоже можно создать.
     
  9. SteadFast

    SteadFast Пользователь сайта

    С нами с:
    06.09.2006
    Сообщения:
    13
    Симпатии:
    0
    Баллы:
    2
    Если делать для каждого дейсвтия отдельнй скрипт, то получится еще один референс эдитор разбросанный по шелвам. А там и без этих скриптов навалом уже всего нужного. В референс эдиторе все удобно сделано, не вижу смысла переписывать эти команды еще раз в другом месте.
     
Модераторы: Dark™, Skif

Поделиться этой страницей