PDA

Voir la version complète : Repères en coffee



Glloq
25/04/2010, 22h21
Bonjour,



Comment peut-on définir le type de données d'une variable ?

Et existe-t-il la possibilité de faire des macro en coffee ?

Jean-Laurent
26/04/2010, 08h22
Salut,
si je ne dis pas de bêtises en coffee on ne défini pas le type de donnés. Le typage est dynamique. Comme en python vivement conseillé en ce moment. :wink:
Si tu insistes pour le faire il faut que tu passes en C++. Tu télécharges le SDK C++ pour C4D.

var i = 0.23 sera float , var i = 2 sera int , var i = vector(2,3,5) sera quelque chose. :mrgreen: (liste de float ?)

Idem pour les macro, il me semble bien que ce n'est pas possible en coffee.
Faut passer au C++.

Glloq
26/04/2010, 14h00
Justement, en python on a bien des fonctions pour définir chaque type, même une fonction pour au moins connaître le type mais soit elles n'existent pas soit elles n'ont pas le même nom en coffee.

J'écarte pas non plus le fait que je puisse simplement mal utiliser c4d...



Python est intégré à c4d ou c'est aussi merdique que le c++ qui n'est qu'une bibliothèque c4d à utiliser dans un compilateur ?

xs_yann
26/04/2010, 14h43
var i = vector(2,3,5) sera quelque chose. :mrgreen: (liste de float ?)


Je dirais que i sera du type vector, qui est répresenté par une structure de trois membres de type float, avec typeof(i) == DT_VECTOR.



même une fonction pour au moins connaître le type mais soit elles n'existent pas soit elles n'ont pas le même nom en coffee.


Et typeof(), getclass() et getparent() c'est du mou de veau ? ©



Python est intégré à c4d ou c'est aussi merdique que le c++ qui n'est qu'une bibliothèque c4d à utiliser dans un compilateur ?


Le C++ n'est pas une bibliothèque, c'est un langage. Sinon pour répondre a ta question Python est un langage interprété (comme le COFFEE) donc il n'a pas besoin d'etre compilé par définition.

valkaari
26/04/2010, 14h52
Python est intégré à c4d ou c'est aussi merdique que le c++ qui n'est qu'une bibliothèque c4d à utiliser dans un compilateur ?


Je te conseille de lire, et de lire beaucoup beaucoup beaucoup beaucoup avant de commencer le développement.

oli_d
26/04/2010, 16h19
Et existe-t-il la possibilité de faire des macro en coffee ?


Tout dépend de ce que l'on appelle une macro, pour moi c'est synonyme de script...

Donc oui on peu faire des macro en coffee, il y a déjà le tuto de maître Fluffy ici : http://fluffy4d.com/?p=79i, où on récupère simplement des nom de commandes via l'historique de scripts ou script log in english. Et tout ça c'est du coffee donc rien ne t'empèche de complexifier tout ça avec des boucles des conditions et tout le toutim... Regarde un peu ici http://www.frenchcinema4d.fr/forum/index.php?topic=25880.0 ou dans le sujet de César ici où il fait au final un script http://www.frenchcinema4d.fr/forum/index.php?topic=26154.0

Ill y a un tuto kièmaimepofini ici http://www.frenchcinema4d.fr/forum/index.php?topic=25634.0. Au risque de me répéter encore une fois le python réuni les avantages du coffee ( utilisable directement dans c4d, sous forme de scripts, tag, objet, noeud Xpresso) sans en avoir les limitations (beaucoup de fonctions existent en c++ et son absentes du coffee). Mais il offre également les avantages du C++ (création de plugin objet, tag , menu etc...) tout ça avec la puissance et la simplicité du langage python ...(non je vous jure je n'ai aucune action dans Py4D !).

Le seul bémol c'est que c'est encore une version béta, donc il manque 2-3 chose par rapport au c++ et il y a quelques bugs. Mais le gars qui développe tout ça est hyper réactif et disponible, tous les bugs que j'ai signalé sont déjà corrigés dans la dernière version et les fonctions manquantes seront probablement disponible dans la version 1.0

Glloq
26/04/2010, 20h19
xs_yann, merci pour typeof(), tu connais aussi la correspondance de chaque identifiant ?

Sinon pour définir le type, y a pas un settype(), type(), int(), float(), etc. ?


Et tu veux me dire qu'on utilise pas une bibliothèque C4D pour coder en c++ ou j'ai mal compris ? :o




Oli_D, je pense au même genre que #define en c.

Merci pour tes exemples (même si ton César parle bizarrement), quant au python, je vais attendre car pour l'instant, j'essaie de me familiariser avec c4d pour aboutir en c++ (que je connais déjà) et le coffee est visiblement la première étape dans un bon apprentissage du développement pour C4D.

valkaari
26/04/2010, 20h42
Ben la je vais rejoindre mon camarade oli et rajouter qu'il n'y aujourd'hui, aucun intérêt à apprendre le coffee.

Sachant qu'il vas être remplacer par le python, les fonctions du sdk coffee et du sdk c++ ne sont pas les mêmes. Le coffee est limité dans certaines fonctions. Il est encore plus mal documenté que le sdk c++ (et dieu sais que c'est déjà assez pénible)

Le seul truc chiant aujourd'hui avec le c++ c'est qu'il faut compiler pour mac et pour pc en 32 et 64 teub.

Quitte à apprendre un ensemble de fonctions, autant prendre le c++ (ou le python en béta).

Glloq
26/04/2010, 23h45
Le c++ est tout de même éloigné de C4D, il est dans un compilateur, il faut compiler avant chaque essai...

Mais si toutes les fonctions n'ont pas le même nom, c'est sûr que ça fout la merde. Est-ce qu'au moins, avec le py4D, ce sont les mêmes fonctions qu'en C++ ?


Pour ma part, mon problème c'est que je ne sais vraiment, mais alors vraiment pas grand-chose en C4D, je sais tout juste faire un cube.

Je veux aider un pote a faire des addiciels puisque que je programme et que j'ai décrypté totalement un format de fichiers que C4D ne gère pas.



C'est dingue que le coffee ne soit pas le langage le plus complet pour C4D...

valkaari
27/04/2010, 00h36
Le c++ est tout de même éloigné de C4D, il est dans un compilateur, il faut compiler avant chaque essai...


De toute façon, que ça soit en coffee, en c++ ou en python (si je me trompe pas), pour un plugin complet (donc hors noeud coffee ou python), il faut relancer cinema4D à chaque modif pour qu'elle soit pris en compte. Mais alors ça c'est d'un chiant de chez chiant de chez reloud..... même les fichiers d'interfaces ne sont pas chargés à chaque lancement du plugin mais une seule fois. (au premier lancement du plug)

Mais alors ça c'est un truc à devenir fou.... Donc un coup de compile avant de lancer le test ça prends 2 secondes, c'est pas ça qui vas te ralentir. La recherche de documentation, des fonctions, de qui fait quoi, ça c'est un truc qui bouffe un temps fou. Quand tu tombes pas sur un "ce n'est pas possible actuellement dans cinema4D" ....

Mais avec un peu de volonté et de patience, on fini par s'y retrouver.

Jean-Laurent
27/04/2010, 11h49
De toute façon, que ça soit en coffee, en c++ ou en python (si je me trompe pas), pour un plugin complet (donc hors noeud coffee ou python), il faut relancer cinema4D à chaque modif pour qu'elle soit pris en compte. Mais alors ça c'est d'un chiant de chez chiant de chez reloud..... même les fichiers d'interfaces ne sont pas chargés à chaque lancement du plugin mais une seule fois. (au premier lancement du plug)



C'est ce que je faisais aussi au début. Mais j'ai gagné beaucoup de temps par la suite grâce à tengaal (de mémoire). :wink:

Quand tu fais un plug coffee il n'est pas systématiquement nécessaire de relancer C4D.
Si tu es bon, tu peux même n'ouvrir le logiciel qu'une seule fois. :nono:
Dans la console coffee il y a la fonction "reload coffee plugin". Et c'est reparti. :poucehaut:
Si les modifications de ton code sont correctes aucun problème. Elles seront prises en compte.
Par contre si tu as des boucles infinies ou autres joyeusetés tu es bon pour ré ouvrir le logiciel.

C'est même ce qui m'a fait rester sur coffee par rapport au C++. Tu fais un plugin avec l'éditeur de texte et point barre et ça tourne sur toutes les versions avec peu de modifs. De la CE6 à la R11 en tout cas.
L'ennui c'est le SDK mal documenté et le manque de fonctions disponibles.

valkaari
27/04/2010, 12h00
Le reload fonctionne pas tout le temps non plus. (puis j'ai pas trop cherché à savoir pourquoi)

Vivement que python sorte pour justement avoir les avantages de coffee, mais en attendant il vaut mieux se tourner du coté c++ que coffee.

Jean-Laurent
27/04/2010, 13h11
Le reload fonctionne pas tout le temps non plus. (puis j'ai pas trop cherché à savoir pourquoi)


Il fonctionne systématiquement tant que le code est bon. :mrgreen:

xs_yann
28/04/2010, 13h46
xs_yann, merci pour typeof(), tu connais aussi la correspondance de chaque identifiant ?


-> COFFEE SDK maxon.net



Oli_D, je pense au même genre que #define en c.


Pas de directive de pré-processeur en COFFEE, cependant étant donné que les variables sont a typage dynamique, les macros peuvent etre remplacées par des fonctions.


#define ABS(X) ((X) < 0 ? -(X) : (X))

devient

abs(x)
{
return (x < 0 ? -x : x);
}


Personnellement pour les define de constantes j'utilise par exemple : "const var PI = 3.14;" en global.





Le reload fonctionne pas tout le temps non plus. (puis j'ai pas trop cherché à savoir pourquoi)


Il fonctionne systématiquement tant que le code est bon. :mrgreen:


Et que l'id du plug n'a pas changé.

Glloq
28/04/2010, 22h29
Ah oui, en faire une constante globale n'est pas con, merci.




-> COFFEE SDK maxon.net
Je... dois faire quoi ?


Le chm pour le coffee de la version 11 n'a même pas le mot typeof quand je fais une recherche... :|

xs_yann
29/04/2010, 14h06
Le chm pour le coffee de la version 11 n'a même pas le mot typeof quand je fais une recherche... :|



C.O.F.F.E.E. SDK documentation addendum for R11

Il te faut le SDK 9.5 : http://www.maxon.net/en/support/for-developers/older-sdk-downloads.html

Glloq
03/11/2010, 21h36
Existe-t-il un moyen de réallouer un tableau en COFFEE ?

Autrement qu'en créant une fonction qui le recopie.

xs_yann
03/11/2010, 21h45
Non mais tu peux utiliser ta propre classe de tableau dynamique : http://www.xsyann.com/270/coffee/vector-stack

edit : les exemples sur mon site datent un peu, il y a quelques défauts (mais c'est utilisable).

Glloq
04/11/2010, 00h58
Oui, c'est ce que j'ai fait, enfin, en une fonction équivalente à ta méthode PushBack.

Et aussi, est-ce qu'il existe des pointeurs, références ou un équivalent COFFEE ?


PS : Tout ton site est en anglais ?

xs_yann
04/11/2010, 09h24
Et aussi, est-ce qu'il existe des pointeurs, références ou un équivalent COFFEE ?
Non



PS : Tout ton site est en anglais ?
Oui, mais je peux fournir du code commenté ou des explications en français.