(1) 2 »


Property égale au nombre dans un nom
Clan Afficionado
Inscrit:
02/08/2012 12:16
Post(s): 43
Bonjour a tous, je m'explique: j'ai un script que j'aimerais simplifier en faisant en sorte que le mesh remplacer soit "inv.(peut importe).(select)" de façon a pouvoir ajouter un mesh en le nomant simplement par inv.(un nom).(un numéro) .
import bge 
def Build(): 
   cont = bge.logic.getCurrentController() 
   own = cont.owner select = cont.owner["hand1"] 
   if select == 0: 
       own.replaceMesh("nothing slot.0") 
   if select == 1: 
       own.replaceMesh("inv.stick.1") 
   if select == 2: 
       own.replaceMesh("inv.log.2")


Pour ce faire il faudrait prendre le nombre qui est dans une string et pour ça j'ai déjà trouvé ça :
>>> str = "h3110 23 cat 444.4 rabbit 11 2 dog" 
>>> [int(s) for s in str.split() if s.isdigit()] 
[23, 11, 2]


mais je ne sais pas comment l'utiliser. Merci d'avance.

Contribution le : 02/11/2016 20:58
Créer un fichier PDF de la contribution Imprimer


Re: Property égale au nombre dans un nom
Fou Furieux du Clan
Inscrit:
21/05/2014 10:29
Post(s): 261
@babacool: Je comprends pas trop ton problème mais je vais essayer:

Si tu connais le nom tu peux faire:
meshName = "inv." + name + "." + str(num)


Si tu veux connaitre le numéro et le nom d'un mesh:
list = meshName.split(".")
name = list[1]
num = int(list[2])


Donc si tu veux changer de mesh just avec le numéro de fin:
meshList= ["inv.stick.1", …]

for mesh in meshList:
    if int(mesh.split(".")[-1]) == select:
        obj.replaceMesh(mesh)


Contribution le : 02/11/2016 22:34
Créer un fichier PDF de la contribution Imprimer


Re: Property égale au nombre dans un nom
Clan Afficionado
Inscrit:
02/08/2012 12:16
Post(s): 43
ok j'ai essayé ton script mais je n'arrive pas a le faire fonctionner. En gros ce que j'aimerais c'est transformer ça
if select == 2:
    own.replaceMesh("inv.log.2")

en ça:
own.replaceMesh("inv"."aucune importance".select)


Merci quand même pour ton aide.

Contribution le : 03/11/2016 11:46
Créer un fichier PDF de la contribution Imprimer


Re: Property égale au nombre dans un nom
OverdOzed
Inscrit:
21/08/2013 19:12
De CH [+]
Post(s): 1558
Salut,

Tu peux simplement concaténer les strings:

own.replaceMesh("inv.aucune importance." + str(select))


Ou utiliser le formatage:

own.replaceMesh("inv.aucune importance.%s" % select)


etc.

Contribution le : 03/11/2016 12:18
_________________
BAddons, La Collection d'Addons de Matpi: https://github.com/qwenger/BAddons
Développeur Blender quand j'en ai le temps...

Créer un fichier PDF de la contribution Imprimer


Re: Property égale au nombre dans un nom
Clan Afficionado
Inscrit:
02/08/2012 12:16
Post(s): 43
ok mais le script va prendre en compte le "aucune importance" non ?

Contribution le : 03/11/2016 12:21
Créer un fichier PDF de la contribution Imprimer


Re: Property égale au nombre dans un nom
OverdOzed
Inscrit:
21/08/2013 19:12
De CH [+]
Post(s): 1558
Ben... tu as dit "sans importance", non?

S'il a une importance (c.-à-d. s'il est défini dans une variable), tu peux aussi le formater:

own.replaceMesh("inv.%s.%s" % (variable_sans_importance, select))


Et si c'est pas ça, il va falloir nous expliquer plus complètement ce que tu souhaites faire.

Contribution le : 03/11/2016 12:25
_________________
BAddons, La Collection d'Addons de Matpi: https://github.com/qwenger/BAddons
Développeur Blender quand j'en ai le temps...

Créer un fichier PDF de la contribution Imprimer


Re: Property égale au nombre dans un nom
Clan Afficionado
Inscrit:
02/08/2012 12:16
Post(s): 43
Désolé pour la clarté de mes questions mais cette fois je vais essayer d'être le plus claire possible : il faudrait que le script remplace par un mesh qui s'appelle inv.(quelque chose dont le script ne doit pas tenir compte).la proprety select .Tout en sachant qu'il y a plusieurs mesh qui commencent par "inv." et finissent par ".un numéro" avec le nom de l'objet dont le script ne doit pas tenir compte entre pour que je puissent facilement m'y retrouver. J'espère que je me suis bien exprimé cette fois ci .

(en fait quand je disais "aucune importance" je voulais dire que le script ne le prend pas en compte, je ne l'avais pas vu de ton point de vue ...)

Contribution le : 03/11/2016 12:37
Créer un fichier PDF de la contribution Imprimer


Re: Property égale au nombre dans un nom
Clan Afficionado
Inscrit:
02/08/2012 12:16
Post(s): 43
Ok finalement j'ai enlevé le "aucune importance" et j'ai écrit une liste qui associe chaque nombre a un nom pour m'y retrouver mais maintenant, toujours dans la même optique, j'ai ceci :
if collision.positive: 
    cont.owner['prop'] = (collision.hitObject.name - ".inv")

et j'aimerais savoir comment faire pour le faire fonctionner de sorte a ce que prop soit égale au nombre qui ce trouve devant le .inv

Contribution le : 03/11/2016 18:17
Créer un fichier PDF de la contribution Imprimer


Re: Property égale au nombre dans un nom
OverdOzed
Inscrit:
21/08/2013 19:12
De CH [+]
Post(s): 1558
Ah ok, j'ai compris ta première question.
Dans ce cas, il te faut faire une boucle pour passer en revue tous les objets et regarder au cas par cas si le nom correspond au "pattern" cherché:

scene = bge.logic.getCurrentScene()

for obj in scene.objects:
    if obj.name.endswith("." + str(select)):
        # on pourrait tester d'autres éléments si nécessaire
        # p.ex. si le nom commence par "inv.", etc.
        own.replaceMesh(obj.name)
        # si tu souhaites forcer l'unicité:
        break


(on pourrait aussi utiliser une expression régulière pour à peine booster les perfs)


Du coup je suis pas sûr d'avoir compris ta nouvelle question.
En particulier ce passage: "au nombre qui ce trouve devant le .inv"?

Contribution le : 03/11/2016 19:20
_________________
BAddons, La Collection d'Addons de Matpi: https://github.com/qwenger/BAddons
Développeur Blender quand j'en ai le temps...

Créer un fichier PDF de la contribution Imprimer


Re: Property égale au nombre dans un nom
Clan Afficionado
Inscrit:
02/08/2012 12:16
Post(s): 43
Oui c'est ma faute j'ai changé en court de temps le nom des objets, le nombre n'est plus derrière mais devant comme ça il sont dans l'ordre dans l'onglet outliner mais sinon maintenant c'est ok pour le replaceMesh. J'ai simplement mis :
own.replaceMesh(str(select) + ".inv")


Pour mon autre question j'ai un cube avec une property qui doit changer en fonction de l'objet avec lequel il est en collision (la prop sera égal a 1 si le cube touche l'objet 1.inv, a 2 si 2.inv, etc). En gros il faudrait assigner a la prop le nom de l'objet en collision mais sans le .inv
J'ai tenté un truc comme ça mais bon .
if collision.positive: cont.owner['hand1'] = (collision.hitObject.name - ".inv")

Contribution le : 03/11/2016 19:46
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant
(1) 2 »




Enregistrer votre réponse
Compte*
Nom   Mot de passe   Authentification
Message:*



[Recherche avancée]



Sujets récemment répondus
Forums Sujets Réponses Lus Dernières contributions
Questions & Réponses comment modifier l'échelle d'incrémentation d'un champ? 1 642 Hier 20:09:37
moonboots 
Questions & Réponses Armature en IK sur squelette complexe 3 100 Hier 18:36:27
Melodicpinpon 
Le coin des geeks vitesse d'un rendu EEVEE Windows/Linux 5 106 Hier 15:18:10
Bibi09 
Hors Sujet !! les tutos de Moonboots    [1][2][3]...[22] 218 21548 23/10 16:17:44
moonboots 
Moteur de jeu GameBlender et alternatives [WIP] Godot Engine - Projet Arsenal    [1][2] 18 1299 22/10 16:38:22
Redstar 
Questions & Réponses Pousser le pc au max 3 135 22/10 11:07:37
xjoce 
Questions & Réponses [non résolu] Problème de vide 1 81 21/10 18:09:50
sapajou 
[WIP] et travaux terminés [WIP] La gabarre '' Le Gros Ventre''    [1][2][3]...[10] 98 17658 21/10 15:53:58
Guiu 
Questions & Réponses [résolu] Os et FBX 3 258 20/10 16:15:38
zeromeetsinfinity 
Moteur de jeu GameBlender et alternatives [non résolu] Cs (vaisseau)    [1][2][3]...[56] 559 171034 20/10 11:06:51
Redstar 
Questions & Réponses texture procédurale qui suis une plane 2 132 20/10 10:19:22
Many 
Questions & Réponses Vertex groups qui disparaissent 0 62 20/10 09:09:22
Melodicpinpon 
Questions & Réponses MeasureIt et dpi 4 943 20/10 09:02:36
jcnouveau 
Questions & Réponses De Maya vers Blender concordance de axes. 9 181 19/10 17:04:59
Bibi09 
Questions & Réponses [résolu] Enlever "snapping" dans la timeline ? 6 158 19/10 09:47:12
CBY 
[WIP] et travaux terminés [terminé] Appli Blender de Poche en FR    [1][2][3] 29 1321 18/10 19:14:29
moonboots 
Questions & Réponses Débutant Blender, temps de travail pour un rendu ? 2 130 18/10 11:37:55
Jalis 
Questions & Réponses [WIP] Dragster-Tracteur pour Bécassine    [1][2][3] 24 5824 17/10 18:37:48
Laorz 
Graphisme alternatif faire de la bd avec blender    [1][2][3]...[13] 123 9419 17/10 14:20:26
blend74 
Questions & Réponses Bug texture sur plane avec bevel 1 231 16/10 08:09:13
Laorz 

Qui est en ligne
192 utilisateur(s) en ligne (dont 80 sur Forums)

Membre(s): 8
Invité(s): 184


RobinLembe, MarlonTren, LeeCromwel, EfrenWilli, Neva91Z04, ErnestoSer, SkyeGuess3, JulieDejes, plus...
Nouveaux membres
TheodoreAd 25/10/2021
LatashaGav 25/10/2021
Jose19D031 25/10/2021
TiffaniOdp 25/10/2021
ClaribelTa 25/10/2021
LuisHildeb 25/10/2021
QHKSummer8 25/10/2021
SWELillian 25/10/2021
BoyceStric 25/10/2021
RosalineKh 25/10/2021
Dernier Ajout
2020-09-24.jpg

Evènements à venir
Nov 18
Anniversaire de RichDeg
Dec 29
Anniversaire d'ebrain
Jan 8
BUG de Lyon
plus 247 plus d'élément(s)
 Par Mickaël Guédon [ebrain] © 2003-2021 The Blender Clan - hébergé par TuxFamily - Site déclaré à la CNIL sous le numéro 1155445