PDA

Voir la version complète : Integrer une donnée utilisateur dans un effecteur formula



Aurety
29/01/2016, 12h53
Ola les amis, je voudrais agir sur la formule d'un effecteur formula via une DU, je me suis dit : Ô à moi les joies du python mais bon voilà faut pas rêver, je me suis douté que ce ne serait pas aussi facile que ça vu mes lacunes en code..

En gros, j'ai crée une DU que j'appelle "Tours"
Dans Xpresso j'ai importé mon neutre avec la DU et j'ai ajouté un noeud Python, j'ai supprimé le port 2 et ai renommé le premier "In" et en sortie j'ai renommé le port "Out"

Dans le noeud Python, j'ai édité le script pour un truc qui devrait être super simple mais j'y arrive pas :


import c4d

def main():
global Out
tours = str(In)
Out = "sin(((id/count)+t)*tours)"

Je me doute qu'il s'agit d'une erreur de string/integer mais bon j'y arrive pas, une petite idée ??

Désolé pour niveau de newb.. :icon_redface:

Aurety
29/01/2016, 13h14
désolé, en cherchant j'ai trouvé un truc qui marche..


import c4d

def main():
global Out
tours = str(In)
Out = "sin(((id/count)+t)*"+tours+")"

MacGreggor
29/01/2016, 13h27
Ben tant mieux, Lapinou, t'as bien de la chance de trouver des trucs qui marchent.

Math1712
29/01/2016, 13h56
Yep ça revient à faire ça http://www.c4dcafe.com/ipb/applications/core/interface/file/attachment.php?id=151481

oli_d
29/01/2016, 14h49
Rooooo Aurety qui va attraper le virus du python ! Bon c'est pas encore le niveau pour créer une blonde paramétrique, mais faut un début à tout ! :icon_mrgreen:

Aurety
29/01/2016, 18h51
oui mais vu dans la perspective neo-gothique-post-punk (époque réaliste ), c'est à la mesure de mon niveau actuel.
Dans une prochaine mouture, je vais tenter de cacher un "Hello world" dans le code histoire de respecter les anciens..:icon_artist:

valkaari
29/01/2016, 23h38
Si t'es vraiment allergique, tu peux aussi utiliser le noeud addition mais en changeant le type en string (chaine)
Du coup on peut ajouter des chaines de caractères et envoyer le tout dans le champ formule.



17000

Aurety
30/01/2016, 00h02
oh non, je veux bien apprendre surtout quand je vois qu'il faut 10 noeuds pour faire un truc qui se fait en 2 lignes.:sweatdrop:

valkaari
30/01/2016, 16h05
ha mais je t'encourage vivement de te mettre au python hein ^^

tu peux aussi écrire directement sans passer par une variable supplémentaire.

Out = "sin(((id/count)+t)*"+ str(In)+")"

tu peux aussi écrire celle ci qui a pour avantage de rendre encore plus lisible la formule et d'éviter l'oublie de "
(voir les fonctions printf en c++ ou en php

Out = "sin(((id/count)+t)* %s)" % (In)

par exemple:
Out = "my name is %s et je sodomise %s" % ('valkaari','geantvert')

xs_yann
01/02/2016, 14h17
tu peux aussi écrire celle ci qui a pour avantage de rendre encore plus lisible la formule et d'éviter l'oublie de "
(voir les fonctions printf en c++ ou en php

Out = "sin(((id/count)+t)* %s)" % (In)


Il est même conseillé d'utiliser d'utiliser string.format qui est plus puissant et qui n'est pas amené à disparaître contrairement à %.


Note The formatting operations described here are obsolete and may go away in future versions of Python. Use the new String Formatting in new code.

https://docs.python.org/release/3.1.5/library/stdtypes.html#old-string-formatting-operations


Out = "sin(((id/count)+t)*{tours})".format(tours=In)
ou

Out = "sin(((id/count)+t)*{0})".format(In)
voire en python 2.7 (R17) :

Out = "sin(((id/count)+t)*{})".format(In)

gr4ph0s
01/02/2016, 14h49
Ca serais cool qu'il mette la version 2.7 sur toute les versions de C4d et pas uniquement sur la R17.

Je pense notamment à l'intégration de fabric engine qui n'en serait que facilité, mais y'a un tas de librairie uniquement 2.7 et la plupart des fonctions sont compatibles...

valkaari
01/02/2016, 17h52
Il est même conseillé d'utiliser d'utiliser string.format qui est plus puissant et qui n'est pas amené à disparaître contrairement à %.




et c'est ce que j'utilise mais je trouvais ça un peu trop Errrrrkkkk pour une première approche

oli_d
01/02/2016, 18h40
et apparemment même format devrait disparaître http://sametmax.com/ou-format-en-python/ avec python.3.6

Il faut qu'on fasse gaffe, si on commence à disserter sur 15 post pour 3 lignes de code on va faire fuir notre valeureux lapin !:icon_mrgreen:

Aurety
02/02/2016, 22h44
Bhein non, ça me fait même plaisir car ça me donne au moins le moyen de comprendre enfin ce que je lis. 3 lignes justes comme il faut, qui font le job et maintenant on me dit qu'il y aurait dans toute cette rigueur de la poésie alors oui, ça m'emballe :icon_wavey: