python:pygram:carre

Carré

  • Dans le fichier texte shapes.py, à la suite de la fonction Rectangle
  • Ajouter une fonction square(x,y,w) permettant de générer des carrés de toutes tailles.
  • Utiliser la fonction square() pour ajouter un carré à côté des deux premiers rectangles.
  • Voir plus bas les détails de construction.

Détails

  • Par la suite, nous masquons les « contenus » que vous devez créer par

Arguments

  • La fonction doit prendre 3 arguments et utiliser la fonction Rectangle

Nom

  • Les objets créés par la fonction square() doivent être nommés square
  • Pour renommer les objets créés par la fonction rectangle()
  • Il faut modifier la fonction rectangle() pour qu'elle retourne la variable obj qui contient l'objet Pygram qu'elle a créé :
def rectangle(...):
  ...
  return obj
  • Dans la fonction square() maintenant, récupérer l'objet et le stocker dans une variable obj
obj = rectangle(...)
  • Puis utiliser dans la fonction square() la fonction rename() des objets Pygram :
obj.rename("square")

Structure

  • Le fichier shapes.py doit donc maintenant contenir les éléments suivants :

Le module d'importation

import bpy
Pygram = bpy.data.texts["pygram.py"].as_module()
  • La fonction rectangle()
def rectangle(...) :
  ...
  • Suivie des appels de fonctions que nous pouvons maintenant stocker dans des variables
r1 = rectangle(...)
r2 = rectangle(...)
  • Ensuite, nous avons la fonction square()
  • Dans laquelle un appel de la fonction rectangle() a lieu
def square(...):
  ...
  obj = rectangle(...)
  ...
  return obj
  • Enfin, nous appelons la fonction square() et stockons l'objet dans une nouvelle variable :
sq = square(...)
  • :!: Attention à ne pas nommer la variable contenant l'objet carré « square », car ce nom est déjà utilisé par la fonction square().

Objets

  • À chaque fois que nous essayons ce script, de nouveaux objets sont créés qui viennent se superposer sur les objets précédemment créés.
  • Ajoutons juste en dessous de la ligne d'importation de module la fonction suivante pour supprimer tous les objets avant chaque nouvelle utilisation du script :
Pygram.cleanup()