Походу нет такого в Синей (и не больно-то хотелось . Ты имеешь ввиду максовскую функцию по клавише «H»? Так в максе эта функция возникла потому что у него нет «Менеджера Объектов». А в Синей он есть и объекты всегда на виду. Причем их можно группировать для последующего выделения (а группа в Синьке несколько отличается от групп Макса именно прямым доступом к любому объекту без надобности что-то «открывать» «извлекать» и т.п.). Можно выбирать обводя габаритной рамкой в Objects. Можно, наконец, закреплять выбранное в Selection objects, но вот выбирать по алфавиту по-моему нельзя (или нужно ждать более искушенную публику для расстановки всех точек над i).
Ну не удержался.
Задал вопрос ведь нормально, а мне вместо ответа выдали кучу бесполезной информации. Я своей репликой показал, что это был не ответ. Вот АкаМу реальное спасибо. Его и поблагодарил. Он такой ответ дал, который скорей всего пригодится не только мне.
Выходит, что я и добрым и злым бываю.
Задал вопрос ведь нормально, а мне вместо ответа выдали кучу бесполезной информации. Я своей репликой показал, что это был не ответ. Вот АкаМу реальное спасибо. Его и поблагодарил. Он такой ответ дал, который скорей всего пригодится не только мне.
Выходит, что я и добрым и злым бываю.
> поскольку все, кроме информации про макс (которым я не пользуюсь ,
> мне уже известно.
Тогда это подозрительно…
А где ты видел что можно так выделять? (прямо как в анекдоте про жениха, который покрасил свое орудие перед первой брачной ночью в зеленый цвет, чтоб на вопрос невесты «а почему он зеленый?» поинтересоваться «а где ты видела не зеленый??!»
Если ты создавал дубликаты, то ведь они сразу сгруппировались. Клон тоже делает все в одной куче. Как же у тебя так получилось? И почему нельзя просто «обвести» нужные объекты в менеджере?
> мне уже известно.
Тогда это подозрительно…
А где ты видел что можно так выделять? (прямо как в анекдоте про жениха, который покрасил свое орудие перед первой брачной ночью в зеленый цвет, чтоб на вопрос невесты «а почему он зеленый?» поинтересоваться «а где ты видела не зеленый??!»
Если ты создавал дубликаты, то ведь они сразу сгруппировались. Клон тоже делает все в одной куче. Как же у тебя так получилось? И почему нельзя просто «обвести» нужные объекты в менеджере?
Выбирать обьекты по имени совершенно нормальная операция для большого проекта с кучей обьектов. Очень удобный, естественный и прозрачный для пользователя способ селекции.
Если бы его не было, стоило бы его придумать.
Но вообще придуман до меня.
Способ выбора обьектов по имени есть например в Maya и LW3d.
У меня проект экспортированный из Макса в .fbx и загруженный в Синьку.
В нем куча обьектов сгруппированных таким образом, что обвести их не выходит.
И вообще, я Синьку в последнее время просто заобожал. Очень хочется найти способ селектить обьекты по имени. Единственный ее минус в моем рабочем процессе. Может плаг какой есть?
Если бы его не было, стоило бы его придумать.
Но вообще придуман до меня.
Способ выбора обьектов по имени есть например в Maya и LW3d.
У меня проект экспортированный из Макса в .fbx и загруженный в Синьку.
В нем куча обьектов сгруппированных таким образом, что обвести их не выходит.
И вообще, я Синьку в последнее время просто заобожал. Очень хочется найти способ селектить обьекты по имени. Единственный ее минус в моем рабочем процессе. Может плаг какой есть?
Ну, раз функция выделения группы объектов по части имени в 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:luginDialog()
{ 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.
В папке 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:luginDialog()
{ 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.
Маленькая поправочка, чтобы кнопка не была узкой линией.
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:luginDialog()
{ 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);
}
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:luginDialog()
{ 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);
}