Balou Posté(e) le 23 avril 2012 Posté(e) le 23 avril 2012 Bonjour, Je cherche quelqu'un qui pourrait me dire comment écrire des coordonnées relatives en LISP ? Du style : (setq P1 (command "line" P0 "@chauss,deltay" "")) Sachant que le point 0, la largeur de chaussée et le décalage en Y sont des valeurs connues. Lorsque je tape ceci, autocad me renvoi " Commande inconnue "@CHAUSS,DELTAY". " Merci de votre réponse
Tramber Posté(e) le 23 avril 2012 Posté(e) le 23 avril 2012 Il faut passer par un petit calcul ! remplacer donc "...." par (list (+(car P0)CHAUSS) (+(cadr P0)DELTAY)) Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
vincentp010 Posté(e) le 23 avril 2012 Posté(e) le 23 avril 2012 Ou autrement, transformer les nombres en textes et concaténer le tout:(command "_line" P0 (strcat "@" (rtos chauss) "," (rtos deltay)) "")Par contre ça ne te donnera pas P1 mais nil.Si tu veux P1:(setq P1 (cdr (assoc 11 (entget (entlast))))) Aide au téléchargement du cadastre dgfip-download-helper Insertion de photos géolocalisées exif https://www.dropbox.com/s/gkf6o9ac2hxen97/exifscr.zip?dl=0 Script correction BUG SPDC V2, propriétaire département 21 et 22 : https://greasyfork.org/scripts/442400-spdcv2/code/SPDCV2.user.js
Balou Posté(e) le 23 avril 2012 Auteur Posté(e) le 23 avril 2012 Merci Mais en fait je recupere la largeur de chaussée ( chauss ) dans une boite de dialogue DCL.J'ai donc récuperé la valeur de ma cellule que j'ai transformé ensuite a l'aide de ( atof ). Le fait d'écrire (rtos chauss) ne risque pas de creer une erreur ?
Tramber Posté(e) le 23 avril 2012 Posté(e) le 23 avril 2012 Utilise donc mon conseil si tu as peur, mais, en effet, il y a cette solution du RTOS. Méfiance avec RTOS tout de même... c'est une fonction qui tronçonne les valeurs avec la variable LUPREC. Tout dépend des cas... Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Balou Posté(e) le 23 avril 2012 Auteur Posté(e) le 23 avril 2012 Mais avec la fonction que tu m'a donné, tu utilises le car et le cdr pour le Point0 et je sais pas si sa peut marcher avec mon programme car je le pointe sur l'écran à l'aide de "getpoint".
bryce Posté(e) le 23 avril 2012 Posté(e) le 23 avril 2012 Bonjour, (getpoint) retourne une liste de coordonnées (X Y Z).(car) permet de récupérer le 1er élément d'une liste, et (cadr) le 2nd. Donc si tu fais (setq P0 (getpoint "Choix du point : "))alors (car P0) te donne la coordonnée X du point saisi, et (cadr P0) sa coordonnée Y. ;) Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
Tramber Posté(e) le 23 avril 2012 Posté(e) le 23 avril 2012 Mais avec la fonction que tu m'a donné, tu utilises le car et le cdr pour le Point0 et je sais pas si sa peut marcher avec mon programme car je le pointe sur l'écran à l'aide de "getpoint". Ca, ça veut dire que t'as même pas essayé ! :P Heureusement que les copains sont là pour proposer d'autres solutions ou compléter les explications B) Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Balou Posté(e) le 24 avril 2012 Auteur Posté(e) le 24 avril 2012 Desolé de pas vous avoir répondu. Oui je n'ai toujours pas essayé, mais j'essaie sa dans la semaine et je vous tiens au courant. MErci
Balou Posté(e) le 4 mai 2012 Auteur Posté(e) le 4 mai 2012 Je viens de faire ce que vous m'avez dit et sa marche. Merci !
Balou Posté(e) le 9 mai 2012 Auteur Posté(e) le 9 mai 2012 Bonjour, J'ai une nouvelle question concernant les conditions.Apres avoir regardé dans les autres sujets, j'ai vu que l'écriture d'une condition se faisait comme ceci = (cond ((= X 0 ) ( action )) ((= X 1) ( action ))) Mais lorsque j'écrit ma condition en gardant la même syntaxe cela ne marche pas: Quand j'execute le programme pas à pas le programme passe sur la bordure sans la reconnaitre et n'éxecute donc pas les actions liées. Pourtant lorsque je met un espion sur "bordure" celui-ci me renvoit "0" ou "1" selon le choix de la bordure. (cond ((= bordure 0) (command "inserer" "T1_droite" p1 0.001 0.001 0 "") ; insere le bloc au millimètre (setq larg_bord (car T1)) ; récupere la largeur de bordure (setq h_bord (- (caddr T1) (cadr t1))) ; recupere delta hauteur - fil d'eau (command "_line" P1 (list (+(car P1) larg_bord) (+(cadr P1) h_bord)) "" ) ; trace jusqu'a l'angle superieur droit de la bordure (setq P3 (cdr (assoc 11 (entget (entlast)))))) ; recupere l'extrémité de la ligne ((= bordure 1) (command "inserer" "T2_droite" p1 0.001 0.001 0 "") ( setq larg_bord ( car T2 )) ( setq h_bord ( - ( caddr T2 ) ( cadr T2 ))) (command "_line" P1 (list (+(car P1) larg_bord) (+(cadr P1) h_bord)) "" ) ; trace jusqu'a l'angle de la bordure (setq P3 (cdr (assoc 11 (entget (entlast)))))) ) Quelqu'un pourrait-il m'aider svp ? Merci.
Tramber Posté(e) le 9 mai 2012 Posté(e) le 9 mai 2012 Ben, vu comme ça, cela parait tout à fait correct. Tu m'as l'air d'avoir compris le COND. Mais bordure vaut "0" ou 0 ?C'est pas pareil... (atoi "0") renvoie 0(itoa 0) renvoie "0" Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Balou Posté(e) le 9 mai 2012 Auteur Posté(e) le 9 mai 2012 Ah l'erreur doit-être ici alors puisque l'espion sur bordure me donne BORDURE = "0"
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