Bortch59
Membres-
Compteur de contenus
105 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par Bortch59
-
Effectivement grossière erreur... Cela fonctionne. Par contre l'utilisation de fill_image permet de choisir la couleur de fond du cliché (blanc par défaut). Merci
-
Salut, après de multiples essais je n'ai toujours pas réussi à afficher d'image. Je poste mon code test ainsi que ma boite, si quelqu'un voit mon erreur. (defun c:test (/) (setq id (load_dialog "BDD_image.dcl")) (new_dialog "b_image" id) (mettre_image "BIBCLICH(CVC_C45)") (action_tile "accept" "(done_dialog)") (start_dialog) (unload_dialog id) (princ) ) (defun mettre_image( sld / MonImage width height) (setq MonImage "image") ; on récupère les dimensions (setq width (dimx_tile MonImage)) ; Largeur de la case (setq height (dimy_tile MonImage)) ; Hauteur de la case ; on lance le chargement de l'image (start_image MonImage) (fill_image 0 0 width height 0) ; Couleur de fond (slide_image 0 0 width height sld) ; Image (end_image) ) ; mettre_image b_image : dialog { label = "image"; : row { : image { key = "cliché"; height = 10; width = 10; color = 1; aspect_ratio = 1; is_enabled = false; } } ok_cancel; } L'ensemble fonctionne mais l'image ne s'affiche pas. Merci.
-
Salut, merci pour cette réponse rapide. C'est ce que j'avais compris, le cliché est déjà fait. Je pense donc que c'est la fonction que je n'appelle pas au bon moment. extrait du sujet précédemment cité:
-
Bonjour, je n'arrive pas à afficher une image dans une boite de dialogue. j'ai trouvé ce sujet mais je n'arrive pas à l'exploiter. Ce que je ne comprends pas, c'est que doit on mettre dans la variable sld. J'imagine que c'est l'image que l'on souhaite afficher mais comment la définir (avec ou sans extension, chemin complet...) ; on lance le chargement de l'image (start_image MonImage) (fill_image 0 0 width height 0) ; Couleur de fond (slide_image 0 0 width height sld) ; Image (end_image) ) ; mettre_image Merci.
-
Salut, merci pour cette petite leçon. Effectivement j'avais oublié que tout doit être évalué... [Edité le 8/6/2011 par Bortch59]
-
Salut, Merci pour ces explications. Mais comment se servir de cette fonction concrètement? Pour moi, une fonction OU ce serait par exemple (defun c:jeu (/) (setq toto (getreal "entrez un nb: ")) (if (= TOTO (or 2 5)) (prompt "gagné") (prompt "perdu") ) (princ) ) Sauf que dans cet exemple c'est toujours perdu qui m'est renvoyé...
-
Bonjour, quelqu'un saurait il m'expliquer la logique de la fonction OR SVP, je n'arrive pas à l'exploiter. Exemple de l'aide: Command: (or nil 45 '()) T Command: (or nil '()) nil Je n'ai pas trouvé ces exemples très parlant. A quoi servent les parenthèses de la fin, pourquoi (or nil..)
-
[Résolu] (rtos) : pb avec la précision
Bortch59 a répondu à un(e) sujet de Bortch59 dans Débuter en LISP
Bien vu! Et une variable de plus portée à ma connaissance! Merci -
Finalement après pas mal de recherches et d'essais, et notamment grace à ce post - http:// http://www.cadxp.com/modules.php?op=modload&name=XForum&file=viewthread&tid=3986#pid - qui m'a fait découvrir la commande "ddatte", je suis arrivé à ce que je voulais. Je vous poste uniquement la dernière partie modifiée (fonctionne avec attdia à 0) ;Insertion étiquette (command "_-insert" "ETQ_PAS" pause "" "" "" ;REPERE (print (rtos (* N (+ Ep Ec)) 2 0)) ;Largeur PAS (print (rtos H 2 0)) ;Ht baffles "" ;Ai (print (itoa N)) ;Nb baffles (print (rtos Ep 2 0)) ;Ep baffles (print (rtos L 2 0)) ;Lg baffles (print (rtos Ec 2 0)) ;Ecartement "" ;Localisation "" ;Niveau ) (command "_ddatte" (entlast))
-
Bonjour, lorsque j'évalue l'expression suivante (rtos 2.7 2 2) ou (rtos 2.70 2 2) j'obtiens ceci: "2.7" ne devrais je pas plutot obtenir cela? "2.7[surligneur] 0[/surligneur]" Comment obtenir le "zéro de fin"? Merci. <font class=edite>[Edité le 28/5/2011 par Bortch59]</font>
-
Bonjour, petite relance: je pense que personne n'a fait attention à cette dernière demande... Merci.
-
Bonjour, suite à vos remarques et quelques posts plus tard j'en suis arrivé là (encore merci à (gile)). ;-- PAS 1.1 (BCH) -- ;Créé un piège à son, insère une étiquette et la renseigne. (defun c:PAS (/ OS L Ep H N Ec P0 P10 P11 B Ba etq1 etq2 etq3 etq4 etq5 etq6 etq7 etq8 etq9 etq10 ) (setvar "cmdecho" 0) (initget (+ 1 2 4)) (setq OS (getvar "osmode") L (getreal "\nLongueur baffle: ") Ep (getreal "\nEpaisseur baffle: ") H (getreal "\nHauteur baffle: ") N (getint "\nNombre de baffles: ") Ec (getreal "\nEcartement des baffles: ") P0 (getpoint "\nPt d'insertion PAS: ") ) (setvar "osmode" 0) ;Dessin Baffle (setq P10 (list (+ (car P0) (/ Ec 2)) (+ (cadr P0) (/ Ec 2)))) (setq P11 (list (+ (car P10) L) (+ (cadr P10) Ep))) (command "_rectangle" P10 P11) ;Changement propriétés bafles (setq B (entget (entlast))) (if (assoc 62 B) (entmod (subst '(62 . 8) (assoc 62 B) B)) ;couleur (entmod (append B '((62 . 8)))) ) (if (assoc 6 B) (entmod (subst '(6 . "cache") (assoc 6 B) B)) ;type de ligne (entmod (append B '((6 . "cache")))) ) (if (assoc 370 B) (entmod (subst '(370 . 9) (assoc 370 B) B)) ;Epaisseur (entmod (append B '((370 . 9)))) ) (setq Ba (entlast)) (command "_array" Ba "" "r" N "1" (+ Ep Ec)) ;[reseau] ;Dessin PAS (command "rectangle" P0 (list (+ (car P0) L Ec) (+ (cadr P0) (* N (+ Ep Ec)))) ) ;Insertion étiquette (command "_-insert" "ETQ_PAS" pause "" "" "") ;Renseignement attributs (setq etq1 (cdr (assoc -1 (entget (entnext (entlast))))) ;REPERE etq2 (entnext etq1) ;Largeur etq3 (entnext etq2) ;Hauteur etq4 (entnext etq3) ;Ai etq5 (entnext etq4) ;Nb baffles etq6 (entnext etq5) ;Ep baffles etq7 (entnext etq6) ;Lg baffles etq8 (entnext etq7) ;Ecartement etq9 (entnext etq8) ;Localisation etq10 (entnext etq9) ;Niveau ) (entmod (subst (cons 1 (rtos (* N (+ Ep Ec)) 2 0)) (assoc 1 (entget etq2)) (entget etq2) ) ) (entmod (subst (cons 1 (rtos H 2 0)) (assoc 1 (entget etq3)) (entget etq3) ) ) (entmod (subst (cons 1 (itoa N)) (assoc 1 (entget etq5)) (entget etq5) ) ) (entmod (subst (cons 1 (rtos Ep 2 0)) (assoc 1 (entget etq6)) (entget etq6) ) ) (entmod (subst (cons 1 (rtos L 2 0)) (assoc 1 (entget etq7)) (entget etq7) ) ) (entmod (subst (cons 1 (rtos Ec 2 0)) (assoc 1 (entget etq8)) (entget etq8) ) ) (setvar "osmode" OS) (setvar "cmdecho" 1) (princ) ) Ce qui me satisfait presque complètement, mais... mon étiquette (bloc "ETQ_PAS") ne se renseigne qu'après validation de la boite de dialogue "éditer les attributs" (avec variable attdia à 1). Comment faire pour qu'au moment où la boite de dialogue s'ouvre, elle soit déjà renseignée?
-
Salut, effectivement dans (action_tile) ça fonctionne quand j'écris ça: (defun c:test () (setq id (load_dialog "test_bdd.dcl")) (new_dialog "somme" id) (action_tile "accept" "(print (+ (atof (get_tile \"a\")) (atof (get_tile \"b\")))) (done_dialog)" ) (start_dialog) (unload_dialog id) (princ) ) mais pas ça (defun c:test () (setq id (load_dialog "test_bdd.dcl")) (new_dialog "somme" id) (action_tile "accept" " (setq a (atof (get_tile \"a\")) b (atof (get_tile \"b\"))) (print (+ a b)) (done_dialog)" ) (start_dialog) (unload_dialog id) (princ) ) Le premier me renvoie bien la somme des deux nombres mais le deuxième ne me renvoie rien du tout.
-
Salut, je me rend compte que je n'ai rien compris (du moins pas tout). j'ai écrit ce petit code qui fait une simple addition et je n'obtiens que 0.0 comme résultat car mes variables sont vides... Je n'ai pas compris comment on transmet les valeurs de la boite aux variables. la boite: somme : dialog { label = "somme"; initial_focus = "Edit"; : edit_box { key = "a"; label = "nb1 : "; edit_width = 20; allow_accept = true; } : edit_box { key = "b"; label = "nb2 : "; edit_width = 20; allow_accept = true; } ok_cancel; } le code: (defun c:test () (setq id (load_dialog "test_bdd.dcl")) (new_dialog "somme" id) (setq a (atof (get_tile "a")) b (atof (get_tile "b")) ) (action_tile "accept" "(print (+ a b)) (done_dialog)") (start_dialog) (unload_dialog id) (princ) )
-
C'est exactement ce que je désirais... Désolé de ne pas avoir été plus clair dès le départ (c'est un défaut que j'essaie de corriger). J'insére un bloc puis j'accède au premier attribut (setq a (entget (entnext (entlast)))) Résultat: ((-1 . ) (0 . "ATTRIB") (330 . 7ee55bb0>) (5 . "457") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbText") (10 43.4904 64.842 0.0) (40 . 2.5) [surligneur] (1 . "") [/surligneur](50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "BCH_ARIAL") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (210 0.0 0.0 1.0) (100 . "AcDbAttribute") (280 . 0) (2 . "OBS1") (70 . 1) (73 . 0) (74 . 0) (280 . 1)) j'affecte une valeur à une variable (au hasard 'v') (setq v 400) puis je remplace la valeur actuelle de l'attribut par la valeur stockée dans ma variable (entmod (subst (cons 1 (rtos v 2 0)) (assoc 1 a) a)) Résultat: ((-1 . ) (0 . "ATTRIB") (330 . 7ee55bb0>) (5 . "457") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbText") (10 43.4904 64.842 0.0) (40 . 2.5) [surligneur] (1 . "400") [/surligneur](50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "BCH_ARIAL") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (210 0.0 0.0 1.0) (100 . "AcDbAttribute") (280 . 0) (2 . "OBS1") (70 . 1) (73 . 0) (74 . 0) (280 . 1)) Merci.
-
soit par (getreal) soit par (getint) Dans mon code il n'y a effectivement pas de 'v' (c'est pour ça que je précisais qu'il ne s'agissait que d'un exemple).
-
'v' est une variable que je renseigne mais ce n'est là qu'un exemple. Je suis toujours sur ce code: http:// http://www.cadxp.com/sujetXForum-31360.htm J'y ai rajouté l'insertion d'une étiquette (bloc avec attributs) que je voudrais voir se remplir automatiquement. -- PAS 1.1 (BCH) -- ;Créé un piège à son (defun c:PAS (/ L Ep N Ec P0 P10 P11 B Ba) (setvar "cmdecho" 0) (initget (+ 1 2 4)) (setq OS (getvar "osmode") L (getreal "\nLongueur baffle: ") Ep (getreal "\nEpaisseur baffle: ") N (getint "\nNombre de baffles: ") Ec (getreal "\nEcartement des baffles: ") P0 (getpoint "\nPt d'insertion PAS: ") ) (setvar "osmode" 0) ;Dessin Baffle (setq P10 (list (+ (car P0) (/ Ec 2)) (+ (cadr P0) (/ Ec 2)))) (setq P11 (list (+ (car P10) L) (+ (cadr P10) Ep))) (command "_rectangle" P10 P11) ;Changement propriétés bafles (setq B (entget (entlast))) (if (assoc 62 B) (entmod (subst '(62 . 8) (assoc 62 B) B)) ;couleur (entmod (append B '((62 . 8)))) ) (if (assoc 6 B) (entmod (subst '(6 . "cache") (assoc 6 B) B)) ;type de ligne (entmod (append B '((6 . "cache")))) ) (if (assoc 370 B) (entmod (subst '(370 . 9) (assoc 370 B) B)) ;Epaisseur (entmod (append B '((370 . 9)))) ) (setq Ba (entlast)) (command "_array" Ba "" "r" N "1" (+ Ep Ec)) ;[reseau] ;Dessin PAS (command "rectangle" P0 (list (+ (car P0) L Ec) (+ (cadr P0) (* N (+ Ep Ec)))) ) ;Insertion étiquette (command "_-insert" "ETQ_PAS" pause "" "" "") (setvar "osmode" OS) (setvar "cmdecho" 1) (princ) ) PS: j'ai aussi essayé (itoa) mais je n'arrive à obtenir que (1 . 400) qui génére une erreur puisque la valeur 400 n'est pas entre guillemet.[Edité le 22/4/2011 par Bortch59]
-
c'est ce que j'ai essayé (entmod (subst (cons 1 v) (assoc 1 a) a)) l'erreur suivante m'est renvoyée: ; erreur: groupe DXF incorrect: (1 . 400) Je n'arrive pas à ce que la variable stockée dans (setq) se retrouve entre guillemets.
-
Salut, après plusieurs essais je pense avoir bien compris la fonction (entnext). Et effectivement le fait de voir toutes les entités ne m'a pas beaucoup aidé. Maintenant j'essaie de remplir mes attributs automatiquement. J'y arrive en indiquant une valeur prédéfinie (ex: 200, toto...) dans mon code (setq a (enget (entnext (entlast)))) (entmod (subst '(1 . "valeur")) (assoc 1 a) a )) mais dès que j'essaie avec une valeur stockée dans (setq valeur) j'ai droit à un message d'erreur.
-
Salut (gile), y a t'il un moyen de "voir la base de données" du dessin afin de mieux comprendre l'ordre des entités?
-
Salut, effectivement avec (entnext) je vois le début du tunnel... ((-1 . ) (0 . "ATTRIB") (330 . 7ee53bb0>) (5 . "457") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbText") (10 61.0626 44.9198 0.0) (40 . 2.5) (1 . "") (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "BCH_ARIAL") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (210 0.0 0.0 1.0) (100 . "AcDbAttribute") (280 . 0) (2 . "OBS1") (70 . 1) (73 . 0) (74 . 0) (280 . 1)) Seulement je ne vois pas comment accéder aux autres attributs (4 au total dans mon bloc). Les seuls résultats positifs étant obtenu avec (entget(entnext(entlast)))
-
Bonjour, comment accède t'on aux valeurs d'attributs dans un bloc? Le but étant de remplir automatiquement celles-ci à l'insertion du bloc. J'ai essayé avec (entget) : ((-1 . ) (0 . "INSERT") (330 . 7ee51cf8>) (5 . "522") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbBlockReference") (66 . 1) (2 . "ETQ_PAS") (10 3334.2 514.793 0.0) (41 . 1.0) (42 . 1.0) (43 . 1.0) (50 . 0.0) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0)) puis avec (tblsearch) : ((0 . "BLOCK") (2 . "ETQ_PAS") (70 . 2) (10 0.0 0.0 0.0) (-2 . 7c6cf210>)) aucune traces de mes attributs... Merci.
-
Salut, Wahou! Là j'ai de quoi potasser... Pour être honnête, je n'ai pas tout saisi mais je ne désespère pas. Il faut que je décortique tout ça.
-
Salut, encore une fois une explication très claire, merci. J'ai encore la dernière partie à plancher car je n'ai pas tout saisi. Je vais essayer de mettre tout ça en pratique sur mon code PAS. Un autre point: si l'on doit saisir un point par pointage à l'écran, quelle est la bonne méthode? Une fonction permet de rervenir à la boite de dialogue ou faut-il demander à saisir le point après (start_dialog)?
-
Bonjour à tous, une fois de plus je viens solliciter votre connaissance du LISP. Je me suis attaqué aux boites de dialogue et j'ai du mal à m'en sortir. Ci dessous la défintion de la boite de dialogue que j'ai créé et le LISP qui la pilote. Le but est d'obtenir l'équivalent de la commande française. Seulement j'obtiens (0 0) au lieu de la traduction de la commande. Pourquoi et qu'est ce que (0 0)? Merci. TEST : dialog { label = "Traduction commande"; : edit_box { key = "Edit"; label = "Français : "; edit_width = 20; value = ""; } : row { : button { key = "accept"; label = "OK"; is_default = true; } : button { key = "cancel"; label = "annuler"; is_default = false; is_cancel = true; } } } (defun c:NOM () (setq Id (load_dialog "NOM.dcl")) (new_dialog "TEST" Id) (getcname (get_tile "Edit")) (start_dialog) (done_dialog) ) [Edité le 26/3/2011 par Bortch59]
