Programmer avec Python
Lire et modifier la scène existante
scene.objets(), scene.trouver(), déplacer ce qui est déjà là, vider, régler la gravité.
Explication
Un script ne part pas forcément d'une feuille blanche : il voit la scène telle qu'elle est, y compris ce que tu as posé à la souris. scene.objets() rend la liste de tout ; scene.trouver(type="engrenage") filtre. Chaque objet rendu se lit (o.x, o.type, o.masse…) et se déplace (o.x = 100, o.angle = 45).
Tout ce que le script change est appliqué à la fin, d'un coup, et s'annule d'un seul Ctrl+Z.
Manipulation
Pose à la souris trois ou quatre pièces n'importe où. Puis :
for o in scene.objets():
print(o.type, "en", o.x, o.y, "-", round(o.masse, 2), "kg")
Essayer ce code dans l’atelier PythonPuis, pour les aligner toutes sur une ligne :
x = -300
for o in scene.objets():
if o.type != "ground":
o.x = x
o.y = -100
x = x + 150
Essayer ce code dans l’atelier PythonObservation
Le bilan dit « 3 déplacés » ; les pièces sont alignées. Ctrl+Z : elles reviennent où elles étaient.
Ce qu'on peut faire
| Appel | Effet |
|---|---|
scene.objets() | tous les objets, souris comprise |
scene.trouver(type="engrenage"), scene.trouver(materiau="acier") | les objets qui correspondent (types : rectangle, cercle, engrenage, sol, dessin, pivot, ressort ; anglais aussi) |
o.x = …, o.y = …, o.angle = … | déplacer, tourner (les seules propriétés qui se règlent) |
scene.vider() | tout effacer, y compris ce qui est posé à la souris — Ctrl+Z rend tout |
scene.gravite(1.62) | la gravité en m/s², de −50 à 50 |
mecanique.masse(o), mecanique.inertie(o) | la masse, et l'inertie du corps réel (déjà construit) |
Ce qu'on ne peut pas faire depuis un script : effacer un objet en particulier, changer son matériau ou sa taille, lire sa vitesse pendant la lecture. Voir Ce qui n'existe pas (encore). Un script qui ne fait que lire (des print) ne laisse rien dans l'historique.
Détails : scene, les objets.