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

select objects by name

Тема в разделе "Cinema 4D", создана пользователем -, 19 апр 2004.

  1. Guest

    Ребят. Безуспешно искал в мануале способ селектить обьекты по части имени.

    Пример:
    В сцене 50 обьектов с именами
    red_win_1
    red_win_2
    red_win_3
    .
    .
    .
    red_win_50

    нужно выбрать их по части имени red_win_
     
  2. Guest

  3. Guest

    Походу нет такого в Синей (и не больно-то хотелось :). Ты имеешь ввиду максовскую функцию по клавише «H»? Так в максе эта функция возникла потому что у него нет «Менеджера Объектов». А в Синей он есть и объекты всегда на виду. Причем их можно группировать для последующего выделения (а группа в Синьке несколько отличается от групп Макса именно прямым доступом к любому объекту без надобности что-то «открывать» «извлекать» и т.п.). Можно выбирать обводя габаритной рамкой в Objects. Можно, наконец, закреплять выбранное в Selection objects, но вот выбирать по алфавиту по-моему нельзя (или нужно ждать более искушенную публику для расстановки всех точек над i).
     
  4. Guest

    Видимо, нужно ждать более искушенную публику, поскольку все, кроме информации про макс (которым я не пользуюсь :), мне уже известно.
    Спасибо, что не поленился и набрал такой длинный текст. ;)
     
  5. Guest

    2 Nek. Ты какой-то злой и невежливый. Нехорошо. Люди ведь к тебе доброжелательно... Кто как может, тот так и помогает.
    А ты, блин, сама язва и желчь!
    Ну куда это годится?
     
  6. Guest

    Ну не удержался.
    Задал вопрос ведь нормально, а мне вместо ответа выдали кучу бесполезной информации. Я своей репликой показал, что это был не ответ. Вот АкаМу реальное спасибо. Его и поблагодарил. Он такой ответ дал, который скорей всего пригодится не только мне.
    Выходит, что я и добрым и злым бываю.
     
  7. Guest

    Ну и слава Богу что никто не стал в бутылку лезть.
    А то ведь у нас тут все равно такой хороший форум. Вполне теплая и дружелюбная обстановка. Это, кстати, сильно мне бросилось в глаза когда я впервые сюда зашел и начал людей спрашивать... Хотелось бы ее такой же доброжелательной сохранить и впредь.
     
  8. Guest

    Вообще, ты очень прав.
    Синьковская русскоязычная коммьюнити рулит!
     
  9. Guest

    > поскольку все, кроме информации про макс (которым я не пользуюсь :),
    > мне уже известно.

    Тогда это подозрительно… :)
    А где ты видел что можно так выделять? (прямо как в анекдоте про жениха, который покрасил свое орудие перед первой брачной ночью в зеленый цвет, чтоб на вопрос невесты «а почему он зеленый?» поинтересоваться «а где ты видела не зеленый??!» :)

    Если ты создавал дубликаты, то ведь они сразу сгруппировались. Клон тоже делает все в одной куче. Как же у тебя так получилось? И почему нельзя просто «обвести» нужные объекты в менеджере?
     
  10. Guest

    Выбирать обьекты по имени совершенно нормальная операция для большого проекта с кучей обьектов. Очень удобный, естественный и прозрачный для пользователя способ селекции.
    Если бы его не было, стоило бы его придумать.
    Но вообще придуман до меня. :)
    Способ выбора обьектов по имени есть например в Maya и LW3d.

    У меня проект экспортированный из Макса в .fbx и загруженный в Синьку.
    В нем куча обьектов сгруппированных таким образом, что обвести их не выходит.

    И вообще, я Синьку в последнее время просто заобожал. Очень хочется найти способ селектить обьекты по имени. Единственный ее минус в моем рабочем процессе. Может плаг какой есть? :)
     
  11. Guest

    не уверен, но скорее всего есть плагины/скрипты на оф. сайте максонов. там всего до ... очень много. мож и это есть
    а если нет, то можешь и сам написать скрипт (если разберешься)
    либо ещё можно попросить AkaM (он написал такой хороший плаг aligner)

    просто масса вариантов :)
     
  12. Guest

    Объекты не выделяются прямоугольным или ещё каким там выделением только потому, что оси объектов находятся чёрте знает где :), а выделение происходит именно по захвату оси.
     
  13. Guest

    Ну, раз функция выделения группы объектов по части имени в Cinema4D обнаружена не была ... то можно сделать следующую штуку.

    В папке Plugins (где Синема установлена) создаем текстовый докумет. Вставляем в него следующий текст:
    -----------------------------------------------------
    const var Plugin_ID = 1000098;
    var plgDlg;
    enum
    { MOTHER_GRP = 1000,
    H_GRP,
    NAME,
    NAME_TITLE,
    SELECT
    }
    class pluginDialog : GeDialog
    { public:
    pluginDialog();
    CreateLayout();
    Command(id,msg);
    }
    pluginDialog::pluginDialog()
    { super(Plugin_ID); }
    pluginDialog::CreateLayout()
    { SetTitle("pnSelect");
    AddGroupBeginV(MOTHER_GRP, BFH_SCALEFIT, 1, "", 0);
    AddGroupBorderSpace(2, 1, 1, 1);
    AddGroupBorder(BORDER_GROUP_IN);
    AddGroupBeginH(H_GRP, BFH_LEFT, 1, "", 0);
    AddStaticText(NAME_TITLE, BFH_LEFT, 0, 0, "Name (part):", 0);
    AddEditText(NAME, BFH_LEFT, 250, 0);
    AddGroupEnd();
    AddButton(SELECT, BFH_CENTER, 100, 1, "Select");
    AddGroupEnd();
    return TRUE;
    }
    pluginDialog::Command(vID,vMSG)
    { if (vID == SELECT)
    { var sOBJ = GetActiveDocument()->GetFirstObject();
    StopAllThreads();
    if (GetString(NAME) == "")
    return;
    do
    { if (strstr(sOBJ->GetName(),GetString(NAME))== -1)
    { if (sOBJ->GetBit(BIT_AOBJ))
    sOBJ->ToggleBit(BIT_AOBJ);
    }
    else
    { if (!sOBJ->GetBit(BIT_AOBJ))
    sOBJ->ToggleBit(BIT_AOBJ);
    }
    GeEventAdd(NEW_ACTIVE_OBJECT);
    if (sOBJ->GetDown())
    { sOBJ = sOBJ->GetDown();
    continue;
    }
    if (sOBJ->GetNext())
    { sOBJ = sOBJ->GetNext();
    continue;
    }
    do
    { if (sOBJ->GetUp())
    { sOBJ = sOBJ->GetUp();
    if (sOBJ->GetNext())
    { sOBJ = sOBJ->GetNext();
    break;
    }
    }
    else
    sOBJ = NULL;
    }
    while (sOBJ);
    }
    while (sOBJ);
    }
    }
    class selectPlugin : MenuPlugin
    { public:
    selectPlugin();
    GetID();
    GetName();
    GetHelp();
    Execute(doc);
    RestoreLayout(secret);
    }
    selectPlugin::selectPlugin() {super();}
    selectPlugin::GetID() {return Plugin_ID;}
    selectPlugin::GetName() {return "pnSelect";}
    selectPlugin::GetHelp() {return "Select Objects by part of name";}
    selectPlugin::Execute(doc)
    { if (!plgDlg) plgDlg=new(pluginDialog);
    plgDlg->Open(TRUE, -1, -1);
    }
    selectPlugin::RestoreLayout(secret)
    { if (!plgDlg) plgDlg=new(pluginDialog);
    plgDlg->RestoreLayout(secret);
    }
    main()
    {
    Register(selectPlugin);
    }
    ----------------------------------------------------
    Расширение " .txt " меняем на " .cof ". Имя можно задать любое. Запускаем Cinema4D и смотрим в Plugins. Строчка Name Select нам поможет.

    Для удобства плагин можно встроить в Layout и/или присвоить ему HotKey.
     
  14. Guest

    Ты настоящий Гуру.

    PS
    Пробую запустить плагин на маке. :)
    В остальном, для меня Cinema 4d теперь лучший пакет.
     
  15. Guest

    > Dr.NO!

    Неужели сам написал? Круто! … всегда завидовал знаниям.

    > Nek

    А я так и думал что это экспорт. В Синеме с самого начала можно всё делать так, чтоб не захлебнуться в куче объектов.
     
  16. Guest

    хехе....хе......хе

    Это АкаМ так шутит.....

    ...так, что прошу завидовать ему...

    зы Он еще и не так, бывает шутит... :)))
     
  17. Guest

    АкаМ, прими очередную порцию аплодисментов :)
     
  18. Guest

    AkaM, респект!
     
  19. Guest

    Маленькая поправочка, чтобы кнопка не была узкой линией.


    const var Plugin_ID = 1000098;
    var plgDlg;
    enum
    { MOTHER_GRP = 1000,
    H_GRP,
    NAME,
    NAME_TITLE,
    SELECT
    }
    class pluginDialog : GeDialog
    { public:
    pluginDialog();
    CreateLayout();
    Command(id,msg);
    }
    pluginDialog::pluginDialog()
    { super(Plugin_ID); }
    pluginDialog::CreateLayout()
    { SetTitle("pnSelect");
    AddGroupBeginV(MOTHER_GRP, BFH_SCALEFIT, 1, "", 0);
    AddGroupBorderSpace(2, 1, 1, 1);
    AddGroupBorder(BORDER_GROUP_IN);
    AddGroupBeginH(H_GRP, BFH_LEFT, 1, "", 0);
    AddStaticText(NAME_TITLE, BFH_LEFT, 0, 0, "Name (part):", 0);
    AddEditText(NAME, BFH_LEFT, 250, 0);
    AddGroupEnd();
    AddButton(SELECT, BFH_CENTER, 100, 15, "Select");
    AddGroupEnd();
    return TRUE;
    }
    pluginDialog::Command(vID,vMSG)
    { if (vID == SELECT)
    { var sOBJ = GetActiveDocument()->GetFirstObject();
    StopAllThreads();
    if (GetString(NAME) == "")
    return;
    do
    { if (strstr(sOBJ->GetName(),GetString(NAME))== -1)
    { if (sOBJ->GetBit(BIT_AOBJ))
    sOBJ->ToggleBit(BIT_AOBJ);
    }
    else
    { if (!sOBJ->GetBit(BIT_AOBJ))
    sOBJ->ToggleBit(BIT_AOBJ);
    }
    GeEventAdd(NEW_ACTIVE_OBJECT);
    if (sOBJ->GetDown())
    { sOBJ = sOBJ->GetDown();
    continue;
    }
    if (sOBJ->GetNext())
    { sOBJ = sOBJ->GetNext();
    continue;
    }
    do
    { if (sOBJ->GetUp())
    { sOBJ = sOBJ->GetUp();
    if (sOBJ->GetNext())
    { sOBJ = sOBJ->GetNext();
    break;
    }
    }
    else
    sOBJ = NULL;
    }
    while (sOBJ);
    }
    while (sOBJ);
    }
    }
    class selectPlugin : MenuPlugin
    { public:
    selectPlugin();
    GetID();
    GetName();
    GetHelp();
    Execute(doc);
    RestoreLayout(secret);
    }
    selectPlugin::selectPlugin() {super();}
    selectPlugin::GetID() {return Plugin_ID;}
    selectPlugin::GetName() {return "pnSelect";}
    selectPlugin::GetHelp() {return "Select Objects by part of name";}
    selectPlugin::Execute(doc)
    { if (!plgDlg) plgDlg=new(pluginDialog);
    plgDlg->Open(TRUE, -1, -1);
    }
    selectPlugin::RestoreLayout(secret)
    { if (!plgDlg) plgDlg=new(pluginDialog);
    plgDlg->RestoreLayout(secret);
    }
    main()
    {
    Register(selectPlugin);
    }
     
  20. Guest

    AkaM, 5 балов !!! :))
    ... Ну ежели Вы еще и фарфор сумеете употребить...
    © Формула любви
     

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