Gruppe durch anklicken selektieren

Ghandy-Kong

Grünschnabel
Hallo,

Ich habe einen ziemlich komplexen Aufbau erstellt, und einzelne Objekte zu Gruppen zusammengefasst. Die Gruppen lassen sich ja rechts in der Liste selektieren.
Wenn ich durch klicken ein Objekt im Arbeitsbereich auswähle wird aber nur das eine angeklickte Objekt innerhalb seiner Gruppe ausgewählt. Ich würde so aber gerne die gesamte Gruppe mit ihren Unterobjekten so auswählen. Ist das überhaupt möglich?

Mein Aufbau besteht aus ca. 1000 Gruppen, die jeweils 5 Unterobjekte beinhalten.
In meinem Fall sind das aufeinander gestapelte Zigaretten aus 5 Teilen (Filter, Hülse, Tabak...) Um eine gesamte Zigarette zu verschieben muss ich sie erst mal in der riesigen Liste suchen um sie zu verschieben...das muss doch einfacher gehen?

Habe versucht was in der C4D Hilfe zu finden - leider Fehlanzeige.

Danke schon mal,

Ghandy Kong
 
Hi!

Hm, kann mir ja kaum vorstellen, daß es für solche Situationen nix gibt: wenn ich Dich richtig verstehe, benötigst Du ja nur ein "Select Parent"?
Nun ja, finde diesen Shortcut / Befehl aber nicht und biete somit eine Script-Alternative: Fenster / Script-Manager. Neu, "Select Parent", Script einfügen, Ausführen ... am besten mit Tastenkürzel bestücken :)
Code:
op->GetUp()->SetBit(BIT_AOBJ);
op->DelBit(BIT_AOBJ);
return true;

Liebe Grüße,
Mark.
 
Hi,

Wow, danke für die schnelle Antwort!
Das klappt ganz gut.
Hab noch nie was mit dem Script Manager gemacht, gutes Ding.:)
Allerdings funktioniert das ganze nicht mehr wenn man mehrere Objekte mit "Shift" auswählt...auch dafür ne Idee?

Gruß,

Ghandy Kong
 
Hi!

Hm, das könnte etwa so ausschauen:
Code:
var selected;

add(obj) {
    var _selected = new(array, sizeof(selected)+1);
    var i;
    for(i=0; i<sizeof(selected); i++)
        _selected[i] = selected[i];
    _selected[sizeof(selected)] = obj;
    return _selected;
}

search(obj) {
    while (obj) {
        if (obj->GetDown())
            search(obj->GetDown());
        if (obj->GetBit(BIT_AOBJ))
            selected = add(obj);
        obj = obj->GetNext();
    }
}

main(doc, op) {
    selected = new(array, 0);
    var obj = doc->GetFirstObject();
    search(obj);
    CallCommand(12113);
    var i;
    for(i=0; i<sizeof(selected); i++)
        selected[i]->GetUp()->SetBit(BIT_AOBJ);
    return true;
}
...?

Liebe Grüße,
Mark.
 
Zurück