CaRMetal-FR

Forum des utilisateurs francophones
login.php?sid=2514df7944ec71af0e225981c107e912 profile.php?mode=register&sid=2514df7944ec71af0e225981c107e912 faq.php?sid=2514df7944ec71af0e225981c107e912 memberlist.php?sid=2514df7944ec71af0e225981c107e912 search.php?sid=2514df7944ec71af0e225981c107e912 index.php?sid=2514df7944ec71af0e225981c107e912

Fonctions CaR dans les scripts ?

 
Poster un nouveau sujet   Répondre au sujet    CaRMetal-FR Index du Forum -> Les CaRScripts
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
jerome



Inscrit le: 06 Nov 2007
Messages: 173
Localisation: Saint-Brieuc

MessagePosté le: Dim Oct 04, 2009 6:47 am    Sujet du message: Fonctions CaR dans les scripts ? Répondre en citant

Bonjour,
Dans un script, j'aurais besoin de la distance entre deux points.
Code:
distance = d("A","B");
ne fonctionne évidemment pas.

Alors pour l'instant je tape quelque chose comme :
Code:
distance=Expression("d(_o,_i)",-3,-4);SetHide(distance, true);
distance=GetExpressionValue(distance);


Existe-t-il un moyen plus rapide ?
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
alain974



Inscrit le: 13 Juin 2009
Messages: 144
Localisation: Réunion

MessagePosté le: Dim Oct 04, 2009 7:01 am    Sujet du message: Répondre en citant

Si tu crées un segment, sa valeur est la distance:

Code:

s=Segment("A","B");
SetHide(s,true);
p=Point("_s",0);


L'abscisse de "p" est la distance voulue.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
jerome



Inscrit le: 06 Nov 2007
Messages: 173
Localisation: Saint-Brieuc

MessagePosté le: Dim Oct 04, 2009 10:34 am    Sujet du message: Répondre en citant

Ok, merci,
Mais d'une façon plus générale, y a-t-il un moyen de récupérer des fonctions (d() ou autres) ou constantes (par exemple pixel) de CaR dans l'éditeur de scripts ?
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
yves974
Site Admin


Inscrit le: 30 Oct 2007
Messages: 244
Localisation: Réunion

MessagePosté le: Dim Oct 04, 2009 4:53 pm    Sujet du message: Répondre en citant

Pour d c'est comme pour les valeurs des curseurs, il suffit de le mettre dans une expression : dans une expression LaD, tu mets la distance dont tu as besoin et tu peux utiliser LaD dans le script ou la prendre par dist='LaD";

Cela dit pour les distances jusque là j'ai toujours utlisé un segment car on peut directement utiliser s1 (s'il s'appelle comme ça) dans les commandes entre guillements, c'est pratique aussi.

Par contre pour pixel, moi non plus je n'ai pas d'idée.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
stephrey



Inscrit le: 20 Jan 2011
Messages: 16
Localisation: Limoges

MessagePosté le: Ven Jan 21, 2011 11:10 am    Sujet du message: Répondre en citant

Bonjour,

Je propose l'ajout d'une fonctionnalité à Carmetal version 3.5.2 (c'est la seul version pour laquelle je dispose du code source).
Il s'agit de donner l'accès au ZirkelCanvas de la figure. Pour ce faire, modifions le fichier src/eric/JSprogram/JSRun.java pour ajouter la méthode Zir à la classe JSRun.On n'oubliera pas d'ajouter la chaine "Zir" au tableau allnames.

Code:

public class JSRun {
    static Context cx = null;
    static ScriptableObject scope = null;
    static Construction C = null;
    static ZirkelCanvas ZC = null;
    static String CTOOL = "";
    static String CBACKUP = "";
    static String FILENAME = "";
    static ArrayList<String> BACKUPS = new ArrayList<String>();
    static String[] allnames = {"cm",  ... , "Layer",  "Zir"};
    //
    //
    //
    static public ZirkelCanvas Zir() {
       return ZC;
    }
}


Après compilation de cette version modifiée, on peut faire les choses suivantes dans un CarScript :

Code:

// On suppose que A et B sont des points de la figure

pixel = Number(Zir().JSreceive("pixel"));
Println("pixel/2 =" + (pixel/2));

distanceAB = Number(Zir().JSreceive("d(A,B)"));
Println("distanceAB = " + distanceAB);
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
stephrey



Inscrit le: 20 Jan 2011
Messages: 16
Localisation: Limoges

MessagePosté le: Dim Jan 23, 2011 11:13 am    Sujet du message: Répondre en citant

Bonjour,

Je pensais qu'il n'était pas possible d'accéder au ZirkelCanvas de la figure sans rajouter une méthode à la classe JSRun.
Eh bien en relisant le code source de CaRMetal 3.5.2 (Pas dans son intégralité, je vous rassure !), je viens de m'apercevoir que j'avais tort et qu'il n'est donc pas nécessaire de modifier CaRMetal.

Code:

ZC = Packages.eric.JZirkelCanvas.getCurrentZC();

a = InteractiveInput("Point A","Point");
b = InteractiveInput("Point B","Point");

pixel = Number(ZC.JSreceive("pixel"));
Println("pixel =" + pixel);

distance = Number(ZC.JSreceive("d("+a+","+b+")"));
Println("d("+a+", "+b+") = " + distance);


J'espère que ceci répondra à la question de Jérome :

Citation:

Mais d'une façon plus générale, y a-t-il un moyen de récupérer des fonctions (d() ou autres) ou constantes (par exemple pixel) de CaR dans l'éditeur de scripts ?
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
jerome



Inscrit le: 06 Nov 2007
Messages: 173
Localisation: Saint-Brieuc

MessagePosté le: Dim Jan 23, 2011 12:57 pm    Sujet du message: Répondre en citant

Très intéressant.
Merci.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
alain974



Inscrit le: 13 Juin 2009
Messages: 144
Localisation: Réunion

MessagePosté le: Dim Mar 04, 2012 4:26 pm    Sujet du message: Répondre en citant

jerome a écrit:
y a-t-il un moyen de récupérer des fonctions (d() ou autres) ou constantes (par exemple pixel) de CaR dans l'éditeur de scripts ?


Au bout de plus de deux ans après la question, je viens de trouver un élément de réponse Embarassed

En supposant qu'on a tracé une fonction f1 dans la figure, on peut créer un miroir de f1 avec ce script:

Code:
figure=getC();
fonction=figure.find("f1");

function f1(x){
    return fonction.evaluateF(x);
}


On peut aussi redéfinir l'intervalle de définition de f1 avec

Code:
fonction.setRange(-5,5,0.1)


Une fois que c'est fait, on peut alors calculer l'intégrale de la fonction sur ce nouvel intervalle, avec



Code:
Println(fonction.getIntegral());


Ceci dit, cette dernière "fioriture" est inutile puisqu'on peut créer une expression donnant l'intégrale:

Code:
var e=Expression("integrate(f1,-5,5)",0,0);
Println(GetExpressionValue(e));
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
jerome



Inscrit le: 06 Nov 2007
Messages: 173
Localisation: Saint-Brieuc

MessagePosté le: Lun Mar 05, 2012 8:06 am    Sujet du message: Répondre en citant

Merci.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    CaRMetal-FR Index du Forum -> Les CaRScripts Toutes les heures sont au format GMT
Page 1 sur 1

 
  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum
You cannot attach files in this forum
You cannot download files in this forum


Powered by phpBB © 2001-2004 phpBB Group
phpBB Style by Vjacheslav Trushkin
Traduction par : phpBB-fr.com