Maintenant que tout le monde sais construire et simuler des problemes magnetiques , ainsi qu'utiliser la console LUA ,

Je vais expliquer chaque commande utile avec un petit example de son utilisation.

En fait cela sera plus ou moin une traduction du manuel LUA pour FEMM avec des examples en prime ;)

clearconsole() : se contente d'éffacer la fenetre de sortie de la console

create(type de document) : quand vous lancer LUA il n'y a ni probleme magnetique ni probleme electrostatique.

cette commande crée un probleme magnetique quand 0 est entrée pour 'type de document' et crée un probleme electrostatique si 1 est entrée pour 'type de document'.

hideconsole() : cache la console LUA
messagebox("message") : affiche le "message" dans une fenetre pop-up
open("fichier") : Ouvre le document specifié par "fichier"
pause() : Attend que vous appuyez le boutton ok du pop-up qui s'ouvre , ca peut aider au debogage de programme
print() : ceci ecrit quelque chose dans la fenetre de sortie de la console , cela va d'un message à des nombre , s'il y a plusieur chose à écrire on peut séparer avec des virgules.

prompt("message") : cette commande ouvre un pop-up et attend une saisi de votre pars , "message" sera ce qui s'affichera comme titre de ce pop-up.

Cette fonction retournera une chaine de caracteres , donc si l'on entre un nombre utile au script , celui ci devra premierement etre reconverti en chiffre avec tonumber( chaine de caracteres) ou bien directement appeler cette fonction comme ceci : valeur = tonumber(prompt("message"))

Essayez ceci :

valeur = 0
valeur = tonumber(prompt("entrer un nombre"))
print("Vous avez saisi le nombre ",valeur)

Ce qui donnera ceci ...

quit() : ferme tout les documents et quitte FEMM
showconsole() : affiche la console LUA
mi_addnode(x,y) : ceci va créer un nouveau point aux coordonnées X et Y
mi_addsegment(x1,y1,x2,y2) : ceci va tracer une ligne entre les points x1,y1 et x2,y2 , si les coordonnées des points ne sont pas exacte , la ligne sera tracée à partir des 2 points les plus proche de x1,y1 et x2,y2
mi_addblocklabel(x,y) : ceci va créer un Label aux coordonnées X et Y
mi_addarc(x1,y1,x2,y2,angle,nbsegments) : ceci va créer un arc de cercle entre les points x1,y1 et x2,y2 , il aura pour angle la valeur 'angle' et sera composé de 'nbsegment' , la valeur 5 pour nbsegment et assé precise , pour de trés grand arc de cercle augmenter cette valeur.
mi_deleteselected : Effacera tout ce qui est selectionné dans la fenetre d'édition.
mi_deleteselectednodes : Effacera tout les points sélectionnés dans la fenetre d'édition
mi_deleteselectedlabels : Effacera tout les labels sélectionnés dans la fenetre d'édition
mi_deleteselectedsegments : Effacera toutes les lignes sélectionnées dans la fenetre d'édition
mi_deleteselctedarcsegments : Effacera toutes les courbes sélectionnées dans la fenetre d'édition
Avant que certain ne fassent des erreurs , il faut savoir que lorsqu'on efface un point , les lignes ou courbes reliées à ce point seront aussi éffacées !
mi_clearselected() : Ceci désélectionne tout ce qui est sélectionné.
mi_selectsegment(x , y) : Ici on selectionne la ligne la plus proche des coordonnées X et Y
mi_selectnode(x , y) : On selectionne le point le plus proche des coordonnées X et Y
mi_selectlabel(x , y) : Selectionner le label le plus proche des coordonnées X et Y
mi_selectarcsegment(x , y) : On selectionne la courbe la plus proche des coordonnées X et Y
mi_selectgroup(n) : Selection du groupe correspondant au nombre 'n' mis entre parenthèses

Attention !! , ce que vous selectionnez ou deselctionnez n'est pas directement visible dans la fenetre de l'éditeur !!

Donc .... pas de panique si vous ne voyez rien changer ;)

 

C'est assé contraignant et c'est aussi pour ca que je le fait directement dans l'éditeur et non par programmation

On va donc s'en passer ....

mi_analyse(visibilité) : Lance les calculs , 'visibilité" à 0 cache la fenetre des calculs et à 1 montre cette fenetre
mi_loadsolution() : Aprés avoir éffectué un calcul il faut charger la solution pour qu'elle puisse etre disponible.

mi_saveas("Nom du Fichier") : Sauvegarde vos beaux dessins

ATTENTION ... si "Nom du Fichier" inclu un chemin il faut doubler les slash !!

example : sauvegarder "MonFichier.fem" dans C:\projets\FEMM\test\ .... il faudra ecrire :

mi_saveas("c:\\projets\\FEMM\\test\\MonFichier.fem")

Avec les commandes de Calculs , les commandes d'édition sont certainement les plus importantes.

Elles permettent de copier , tourner , bouger etc ... donc , trés utiles quand on passera à la phase de programmation de script !

mi_copyrotate(x , y , angle , nombre de copie) : Cette commande permet de de copier et tourner un objet à un certain angle et cela autant de fois que necessaire

X et Y sont les coordonnées à partir desquels l'objet sera tourné

Angle , est l'angle de rotation de base en degrées , il sera incrémenté à chaque nouvelle copie

Nombre de copie est le nombre de fois que l'on veut copier/tourner l'objet selectionné.

On crée un objet qui appartiendra au Groupe 1

ensuite on deselectionne tout et on selectionne le groupe 1

De la on peut utiliser notre commande

Ici on tourne l'objet de 45° et cela 7 fois , l'axe de rotation sera 0,0.

Voila ce que cela donne ....
mi_copytranslate(DistanceX , DistanceY ,Nombre de Copie) : Pareil que pour copier/tourner sauf qu'ici on copie et on bouge notre objet à une DistanceX et DistanceY de l'original.

On crée l'objet que l'on assigne au groupe 1

Ensuite on déselectionne tout et on selectionne le Groupe 1

Et l'on peut copier / bouger notre objet

Ici on decale de 0.5 en X et 0.2 en Y à chaque copie de l'objet (10 copies)

Cela vous plait ? :)

mi_createradius(x , y , Rayon) : Avec cette foncton on peut transformer un coin en arrondi.

Cela prendra en compte le coin situé aux coordonnées X et Y et en fera un coin arrondi de taille Rayon

Nous allons un peu arrondir ce coin.

Pour connaitre la coordonnée d'un point il suffit d'y mettre le curseur de la souris et de regarder en bas à gauche de la fenetre d'édition de FEMM

C'est tout mignon MAIS il faut vérifier que les 2 points et la courbe créée fassent partie du Groupe 1 .

Ce qui n'est pas toujour le cas , alors avant de bouger , tourner etc , verifiez !

mi_moverotate(x , y , Angle) : On effectue une rotation de l'objet selectionnées à partir du point X et Y
On va tourner notre objet de 45° à partir de son centre

C'est qui qui a dis que LUA c'est compliqué ????

voila le résultat attendu ;)

mi_movetranslate(x , y) : deplace l'objet selectionnée , X et Y est relatif à la position actuelle , ce qui veut dire que le déplacement sera de X et Y unité et non à la coordonnée X et Y ....

Plus simplement , l'objet a décaler est actuellement aux coordonnées :

X = 1.2 , Y = 0

Est on le décale de 1 en X et de 1 en Y

Donc la position finale sera :

X = 2.2 , Y = 1

On lance la commande et on regarde ...

Voila qui est fait

mi_scale(x , y , agrandissement) : L'objet sélectionné sera agrandi ou rétréci à partir de x , y et d'un coefficient 'agrandissement'

L'agrandissement est defini comme suis ... 0.5 et l'objet sera 50% plus petit , 2 et l'objet sera 2 x plus grand. .

Nous allons agrandir/retrecir ces 3 objets à partir des points indiqué

Celui du Groupe 1 sera 50% plus grand

Celui du Groupe 2 sera 50% plus petit

Celui du Groupe 3 sera 2 fois plus grand

Observez bien qu'a chaque fois je déselectionne tout , ensuite je sélectionne le groupe concerné , et enfin j'applique la modification de taille.

Et ceci pour chaque objet (groupe)

Le résultat

mi_mirror(x1,y1,x2,y2) : Fait un 'mirroir' de l'objet selectionné à partir d'une ligne imaginaire passant par X1 , Y1 et

X2,Y2

Attention !! .. cette commande crée un nouvel objet !

Je pense que cela se passe de commentaire ...

Voila pour les commandes principales et utiles de la console LUA , il reste bien d'autres commandes , mais celle ci ne sont vraiment pas interressante à utiliser dans la console vu leur complexité.

La phase suivante sera la programmation de script et la création de video , Quand on en aura fini je peut vous dire que peu de chose vous résisteront en magnétisme dans FEMM ;)

Index des commandes par DARTHMAGNET