PDA

Voir la version complète : Changer l'icône par défaut d'un .cob ?



Sir Gong
09/10/2008, 13h11
Salut les djeunz !

Tout est dans le titre : est-il possible de modifier et personnaliser l'icône par défaut d'un plug .cob glissé dans son interface ?


merci pour vos réponses :wink:

Buzhug
09/10/2008, 13h37
Coucou vieux crouton.
Tu n'as pas un .tif avec ton .cob dans le répertoire du plugin?

http://jipsou.free.fr/frc4d/iconcob.jpg

Tengaal
09/10/2008, 13h39
je ne pense pas qu'on puisse définir l'icône d'une plugin car un plugin contient dans son code la définition de son icône, si il n'y a pas définition de faite alors C4D utilise une icône par défaut. Dans le code d'un plugin il y a une structure à respecter qui définit le plugin (icône, nom du plugin , infos dans la barre de statut, visible ou pas dans l'interface, fenetre modale ou non, etc...)

Donc à part définir l'icône du plugin dans le code même de celui-ci, je ne pense pas qu'on puisse le faire autrement...
En tout cas je n'ai pas encore essayé... :roll:

xs_yann
09/10/2008, 13h40
Salut,

Tu ne peux pas modifier un .cob, donc si l'icone est par defaut et non un .tif dans les ressources tu ne peux pas la modifier.
En revanche, tu peux te créer un sorte de plugin "passerelle", avec l'icone que tu désires. Il suffit d'un petit MenuPlugin en coffee avec un CallCommand(id_du_plug) dans le execute.

Voici un exemple :

Tout d'abord pour récupérer l'id d'un plug ou d'une commande, ça se passe dans le Command Manager ( shift+F12).

Une fois que tu as ton id, tu créés un dossier nommé "SirGong" par exemple que tu mets dans ton dossier plugin de c4d. Dans ce dossier tu créés un fichier "SirGong.cof" vierge, et tu places ton icone "sirgong.tif" au même niveau que ton .cof.

Tu as donc :

Cinema4D
-----plugins
----------SirGong
---------------SirGong.cof
---------------sirgong.tif

Tu ouvres SirGong.cof avec un editeur de texte et tu y places :



const var PLUGIN_ID = 1000001; // Tu peux obtenir un id sur pulgincafe.com

class SirGong : MenuPlugin
{
public:

SirGong();

GetID();
GetName();
GetHelp();
GetIcon();
Execute(doc);
}

SirGong::SirGong()
{
super();
}

SirGong::GetID()
{
return PLUGIN_ID;
}

SirGong::GetName()
{
return "SirGong";
}

SirGong::GetHelp()
{
return "SirGong";
}

SirGong::GetIcon()
{
var bitmap = new(BaseBitmap,1,1);
var f = new(Filename);
f = GeGetRootFilename();
f->RemoveLast();
f->AddLast("sirgong.tif"); // Ton icone
bitmap->Load(f);
return bitmap;
}

SirGong::Execute(doc)
{
CallCommand(1011982); // La commande désirée
return TRUE;
}
main()
{
Register(SirGong);
}


Normalement, si tu relances c4d, tu devrais avoir un nouveau plugin avec le nom et l'icone que tu lui a donné, et qui execute la même commande que ton .cob. :wink:

Tengaal
09/10/2008, 13h46
heuu... un peu tordu ça comme méthode ...

Faire un plugin avec icône qui appelle un plugin sans icône... :roll:
Surtout qu'il faut s'assurer d'avoir un ID unique sinon on risque de générer un conflit avec un autre plugin qui aurait le même ID, ça oblige d'aller requérir un ID chez Maxon...

mieux vaut simplement passer par les scripts personnalisés auxquels on peut affecter n'importe quelle icône perso, et lancer des commandes, donc appeler le plugin eventuellement... bien plus simple.

fenetre -> gestionnaire de scripts.
Nouveau -> on donne un nom
on change l'icône à côté si on veut.
puis dans l'espace du bas, pour le contenu du script, on entre le code necessaire. (*)

avec la fenetre "historique de script" on a la liste de toutes les actions faites dans C4D (CallCommand(numero))
il suffit donc de faire un copier/coller du CallCommand correspondant à l'appel du plugn, puis de le copier dans le script.

on lance le script par modules externes -> Scripts personnalisés
ou bien on glisse le script dans l'interface...

EDIT : ah oui, pour afficher la fenetre "historique de scripts" il faut afficher le gestionnaire de commandes (Shift + F12) puis entrer "histo" dans le filtre de nom, là on selectionne "historique de script" puis en bas, bouton "executer", la fenetre est là avec toutes les actions CallCommand() faites dans C4D.

(*) dans mon cas, si j'appelle le plugin de Majoul "VSM4D" j'ai en retour dans l'historique de scripts: CallCommand(1017061); // VSM4D
je copie donc "CallCommand(1017061); // VSM4D" dans mon script perso, celui-ci lancera le plugin.

avec l'historique de scripts, on peut d'ailleurs automatiser une suites d'actions, puis copier les actions CallCommand() dans un script perso, ainsi il reproduira ces actions là d'un seul clic. :wink:

Sir Gong
09/10/2008, 14h10
Merci pour vos réponses.

Buz, je n'avais pas fichier .tif, non et je croyais qu'on pouvait attribuer un icône de son choix dans le gestionnaire de commandes, mais non.

Xs-yan et Tengaal, merci pour les pistes, je crois que celle de Tengaal est moins dure ( :lol:) pour ma petite cervelle et je m'en vais de ce pas essayer de la suivre.

Sir Gong
09/10/2008, 14h37
Impec, ça fonctionne parfaitement, merci encore :odile:

Tengaal
09/10/2008, 14h39
T'es trop fort mon Gong ! :boss:

xs_yann
09/10/2008, 17h54
J'avais pensé à la solution des scripts personnalisés, mais je ne savais pas qu'on pouvait leur affecter une icone. Merci Tengaal. :poucehaut: