Invité samuelM Posté(e) le 27 mai 2011 Posté(e) le 27 mai 2011 Bonjour j'ai dans mon programme ce code pour orienter une direction mais il me demande deux point. par quoi je peux remplacer pour qu'il ne m'en demande q'un? (setq orient (getorient"\nIndiquer la direction\n"))
bryce Posté(e) le 27 mai 2011 Posté(e) le 27 mai 2011 Bonjour, Tu peux spécifier toi-même un 1er point : (setq orient (getorient pt1 "\nIndiquer la direction\n")) Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
Invité samuelM Posté(e) le 27 mai 2011 Posté(e) le 27 mai 2011 Merci Bryce, Je continue si tu veux bien.C'est plus pour getorient mais getdist: Voici le code que j'ai pour indiquer la distance, mais je voudrai pouvoir indiquer une addition au lieu d'un chiffre entier (setq dist (getdist "\nIndiquer la distance :"))
bryce Posté(e) le 27 mai 2011 Posté(e) le 27 mai 2011 Je ne pense pas que ce soit possible. Il faudrait peut-être utiliser getstring, et traiter ensuite toi-même la réponse. Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
Invité samuelM Posté(e) le 27 mai 2011 Posté(e) le 27 mai 2011 Voici mon programme : (defun c:a1 (/ p1 p2 orient dist longueur largeur p3 userecho ent_select ent_pickpt ent_orig off_pt off_angle last_entity last_pt expr off_dist newoff_pt ) (setq p1 (getpoint "\nPoint de Base\n")) (setq orient (getorient p1 "\nIndiquer la direction\n")) (setq dist (getdist "\nIndiquer la distance :")) (setq p2 (polar p1 orient dist) longueur (getdist p2 "\nLargeur tableau: ") largeur (getdist p2 "\nLongeur tableau: ") p3 (mapcar '+ p2 (list longueur largeur)) ) (command "_rectangle" "_non" p2 "_non" p3) (command "_rotate" "d" "" p2 180 "") ;;;décalage du cadre (or (member "geomcal.arx" (arx)) (arxload "geomcal")) (setq userecho (getvar "cmdecho")) (setvar "cmdecho" 0) (setq ent_select (entsel "\nSélectionner l'objet à décaler: ") ent_pickpt (cadr ent_select) ent_orig (car ent_select) ) ;_ setq (redraw ent_orig 3) (setq off_pt (getpoint "\nIndiquer la direction : ") off_angle (angle ent_pickpt off_pt) ) ;_ setq (setq last_entity ent_orig last_pt ent_pickpt ) (while (/= (setq expr (getstring "\nIndiquer la distance à décaler: ")) "") (if (setq off_dist (addition expr)) (progn (setq newoff_pt (polar last_pt off_angle 10)) (command "._offset" off_dist last_entity newoff_pt "") ) ;_ progn (alert "Expression non valide") ) ;_ if ) ;_ while (setvar "cmdecho" userecho) (princ) ) ;_ defun ;; addition ;; retourne le résultat d'une addition (ou nil) ;; ;; Argument ;; expr : une chaîne de caractère exprimant une addition (defun addition (expr) ((lambda (l) (if (vl-every 'numberp l) (apply '+ l) ) ) (mapcar 'distof (str2lst expr "+")) ) ) ;; str2lst ;; Transforme un chaine avec séparateur en liste de chaines ;; ;; Arguments ;; str : la chaine à transformer en liste ;; sep : le séparateur (defun str2lst (str sep / pos) (if (setq pos (vl-string-search sep str)) (cons (substr str 1 pos) (str2lst (substr str (+ (strlen sep) pos 1)) sep) ) (list str) ) ) et voici le getstring que je n'arrive pas à adapter : (setq expr (getstring "\nIndiquer la hauteur de la réservation sol fini (a) et la hauteur tableau(b) par addition (+ a b): ")) (setq off_dist (addition expr))
bryce Posté(e) le 27 mai 2011 Posté(e) le 27 mai 2011 Ton programme a l'air de fonctionner, on peut entrer une valeur de décalage sous la forme a+b.Je ne vois pas quel est le problème... Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
Invité samuelM Posté(e) le 30 mai 2011 Posté(e) le 30 mai 2011 Bonjour, Oui pour le décalage on peut mais moi c'est à la ligne (getdist : indiquez la distance) que je voudrai une addition.Au début du programme il y a P1, orient , dist. c'est ici.
bryce Posté(e) le 30 mai 2011 Posté(e) le 30 mai 2011 Bonjour, Tu peux essayer ça (pas testé) : (setq dist (addition (getstring "\nIndiquer la distance :"))) C'est juste une piste sans aucune validation de la réponse, il faudra sans doute améliorer. ;) Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
Invité samuelM Posté(e) le 31 mai 2011 Posté(e) le 31 mai 2011 Merci pour ton dernier message, je l'ai testé et ça ne fonctionne pas. j'essaye donc de le modifier mais sans succès!Merci quand même
bryce Posté(e) le 31 mai 2011 Posté(e) le 31 mai 2011 Je viens de tester, et ça fonctionne chez moi... Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
Invité samuelM Posté(e) le 1 juin 2011 Posté(e) le 1 juin 2011 Bonjour, Merci de ta réponse, c'est donc bon signe.tu as gardé (defun addition)? qu'as tu rajouter pour que ça fonctionne?
bryce Posté(e) le 1 juin 2011 Posté(e) le 1 juin 2011 Bonjour, (defun c:a1 (/ p1 p2 orient dist longueur largeur p3 userecho ent_select ent_pickpt ent_orig off_pt off_angle last_entity last_pt expr off_dist newoff_pt ) (setq p1 (getpoint "\nPoint de Base\n")) (setq orient (getorient p1 "\nIndiquer la direction\n")) (setq dist (addition (getstring "\nIndiquer la distance :"))) (setq p2 (polar p1 orient dist) longueur (getdist p2 "\nLargeur tableau: ") largeur (getdist p2 "\nLongeur tableau: ") p3 (mapcar '+ p2 (list longueur largeur)) ) (command "_rectangle" "_non" p2 "_non" p3) (command "_rotate" "d" "" p2 180) ;;;décalage du cadre (or (member "geomcal.arx" (arx)) (arxload "geomcal")) (setq userecho (getvar "cmdecho")) (setvar "cmdecho" 0) (setq ent_select (entsel "\nSélectionner l'objet à décaler: ") ent_pickpt (cadr ent_select) ent_orig (car ent_select) ) ;_ setq (redraw ent_orig 3) (setq off_pt (getpoint "\nIndiquer la direction : ") off_angle (angle ent_pickpt off_pt) ) ;_ setq (setq last_entity ent_orig last_pt ent_pickpt ) (while (/= (setq expr (getstring "\nIndiquer la distance à décaler: ")) "") (if (setq off_dist (addition expr)) (progn (setq newoff_pt (polar last_pt off_angle 10)) (command "._offset" off_dist last_entity newoff_pt "") ) ;_ progn (alert "Expression non valide") ) ;_ if ) ;_ while (setvar "cmdecho" userecho) (princ) ) ;_ defun ;; addition ;; retourne le résultat d'une addition (ou nil) ;; ;; Argument ;; expr : une chaîne de caractère exprimant une addition (defun addition (expr) ((lambda (l) (if (vl-every 'numberp l) (apply '+ l) ) ) (mapcar 'distof (str2lst expr "+")) ) ) ;; str2lst ;; Transforme un chaine avec séparateur en liste de chaines ;; ;; Arguments ;; str : la chaine à transformer en liste ;; sep : le séparateur (defun str2lst (str sep / pos) (if (setq pos (vl-string-search sep str)) (cons (substr str 1 pos) (str2lst (substr str (+ (strlen sep) pos 1)) sep) ) (list str) ) ) Si quelque chose ne fonctionne pas chez toi, il faudrait préciser quoi exactement. ;) Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
Invité samuelM Posté(e) le 1 juin 2011 Posté(e) le 1 juin 2011 Merci beaucoup Bryce. Je suis désolé de ne pas avoir précisé. quand j'exécuté le programme, arrivé à la ligne "indiquer la distance" il me disait "erreur fonction non défini : addition" J'ai apporté un modification au programme et ça fonctionne toujours bien. la modification du décalage. grace à Gile on peut décaler de valeur différente les côtés d'une polyligne. Merci encore
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant