login.php?sid=34cd851be3af19cf5abaea455dc31bf5 profile.php?mode=register&sid=34cd851be3af19cf5abaea455dc31bf5 faq.php?sid=34cd851be3af19cf5abaea455dc31bf5 memberlist.php?sid=34cd851be3af19cf5abaea455dc31bf5 search.php?sid=34cd851be3af19cf5abaea455dc31bf5 index.php?sid=34cd851be3af19cf5abaea455dc31bf5

Fonctions CaR dans les scripts ?

 
Post new topic   Reply to topic     Forum Index -> Les CaRScripts
View previous topic :: View next topic  
Author Message
jerome



Joined: 06 Nov 2007
Posts: 173
Location: Saint-Brieuc

PostPosted: Sun Oct 04, 2009 6:47 am    Post subject: Fonctions CaR dans les scripts ? Reply with quote

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 ?
Back to top
View user's profile Send private message
alain974



Joined: 13 Jun 2009
Posts: 150
Location: Réunion

PostPosted: Sun Oct 04, 2009 7:01 am    Post subject: Reply with quote

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.
Back to top
View user's profile Send private message
jerome



Joined: 06 Nov 2007
Posts: 173
Location: Saint-Brieuc

PostPosted: Sun Oct 04, 2009 10:34 am    Post subject: Reply with quote

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 ?
Back to top
View user's profile Send private message
yves974
Site Admin


Joined: 30 Oct 2007
Posts: 261
Location: Réunion

PostPosted: Sun Oct 04, 2009 4:53 pm    Post subject: Reply with quote

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.
Back to top
View user's profile Send private message
stephrey



Joined: 20 Jan 2011
Posts: 16
Location: Limoges

PostPosted: Fri Jan 21, 2011 11:10 am    Post subject: Reply with quote

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);
Back to top
View user's profile Send private message
stephrey



Joined: 20 Jan 2011
Posts: 16
Location: Limoges

PostPosted: Sun Jan 23, 2011 11:13 am    Post subject: Reply with quote

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 :

Quote:

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 ?
Back to top
View user's profile Send private message
jerome



Joined: 06 Nov 2007
Posts: 173
Location: Saint-Brieuc

PostPosted: Sun Jan 23, 2011 12:57 pm    Post subject: Reply with quote

Très intéressant.
Merci.
Back to top
View user's profile Send private message
alain974



Joined: 13 Jun 2009
Posts: 150
Location: Réunion

PostPosted: Sun Mar 04, 2012 4:26 pm    Post subject: Reply with quote

jerome wrote:
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));
Back to top
View user's profile Send private message
jerome



Joined: 06 Nov 2007
Posts: 173
Location: Saint-Brieuc

PostPosted: Mon Mar 05, 2012 8:06 am    Post subject: Reply with quote

Merci.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic     Forum Index -> Les CaRScripts All times are GMT
Page 1 of 1

 
  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this 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