Topheur Posté(e) le 14 juillet 2017 Posté(e) le 14 juillet 2017 Bonjour à tous les forumeurs et les forumeuses et joyeux 14 Juillet à tous :) Comme d'habitude, j'ai un problème de code lisp. J'aimerais récupérer le dernier clique utilisateur pour insérer un bloc. Mon code permet de créer une cotation alignée avec toujours le même point de départ ;trace la cote alignée en demandant le dernier point(setq pfin_cot (getpoint pdep "\nSpécifiez le point de cotation: "))(command "_dimaligned" pdep pfin_cot pause) ;; dessine la côte et insert un bloc en demandant le point d'insertion du bloc;(setq pins (getpoint "\nInsertion ?\n")) J'aimerais insérer mon bloc au bout de ma cote (le point pfin_cot).J'ai essayé ça(setq pins (getpoint (pfin_cot)) Mais ça ne fonctionne pas :( Merci de votre aide :P Citer
lecrabe Posté(e) le 14 juillet 2017 Posté(e) le 14 juillet 2017 Hello Sans reflechir, il n'y aurait pas une variable System du genre LASTPOINT !? Bon WE, Bye, lecrabe Citer Autodesk Expert Elite Team
(gile) Posté(e) le 14 juillet 2017 Posté(e) le 14 juillet 2017 Salut, Le point que tu veux est enregistré dans la variable pfin_cot, il te suffit de l'utiliser directement pour insérer le bloc : (command "_.insert" "le_nom_du_bloc" pfin_cot 1.0 1.0 0.0) Citer Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Topheur Posté(e) le 15 juillet 2017 Auteur Posté(e) le 15 juillet 2017 Salut, Le point que tu veux est enregistré dans la variable pfin_cot, il te suffit de l'utiliser directement pour insérer le bloc : (command "_.insert" "le_nom_du_bloc" pfin_cot 1.0 1.0 0.0) Bonjour les lispeurs, Je vous ai dérangé pour rien, je voulais absolument modifier la ligne getpoint et je n'ai pas pensé à regarder la ligne d'insertion du bloc ! J'aurais pu trouvé tous seul si j'avais réfléchis ! Grrr ! Du coup cela amène une nouvelle question (qui n'a rien à voir), dans mon lisp, je demande à l'utilisateur de rentré un premier numéro, je fais une boucle et le lisp effectue une cotation, l'insertion d'un bloc puis incrémente le numéro puis effectue une cotation, insert le bloc incrémente, etc... Le soucis c'est qu'à de rare cas, le numéros suivant ne fait pas partie d'une suite logique. Par exemple, je peux avoir 1 2 3, puis avoir 1 2 31 4 5 par exemple (car le numéro 3 est déjà utilisé par le client du coup il deviens x1).Un autre exemple : 1 2 3 4 5 61 7 8 9 (là 6 est déjà utilisé, il deviens 61) Comment je peux donner le choix de modifier le numéro à incrémenter à la demande du client ? Dans l'idée, lorsque le lisp incrémente, il faudrait un getstring avec noté Incrément ? x (valeur du nombre)puis à la fin le code ré-incrémente avec la dernière valeur de la suite logique. Exemple : 1 2 3 51 6 7donnera lorsque 3 est inséré Incrément ? 4 => l'utilisateur appuie sur entrée pour validerpuis donnera lorsque 4 est inséré Incrément ? 5 => l'utilisateur note 51l'utilisateur insère 51 et avoir Incrément ? 6 Voici la partie avec ma boucle ;boucle tant que numero_piece inférieur à 14 (while (<= numero_piece 14) ;afficher un message en bas de l'écran (grtext -1 "Tracer de la Cote...") ;point de départ de la cote (setq pdep (getpoint "\nCliquer sur le centre de la PIECE: ")) ;t=true la boucle se répétera tant que l'on n'en sortira pas avec un echap (while T ;; t=true la boucle se répétera tant que l'on n'en sortira pas avec un echap ;defini le calque cotation comme courant (command "calque" "CH" "_COT. PIECE" "") ;trace la cote alignée en demandant le dernier point (setq pfin_cot (getpoint pdep "\nSpécifiez le point de cotation: ")) (command "_dimaligned" pdep pfin_cot pause) ;; dessine la côte ;défini la longueur de la cotation (setq LC (rtos (distance pdep pfin_cot))) ;création (si le calque existe pas) et defini le calque A SUPP comme courant (command "-calque" "e" "_A SUPP" "") ;afficher un message en bas de l'écran (grtext -1 "Infos Cotation...") ;gère l'insertion du bloc et du remplissage des attributs '---------------------------------------------------- ;; enregistrement des valeurs initiales de la variable système (setq attreq (getvar "ATTREQ")) ;; modification des valeurs courantes de la variable système (setvar "ATTREQ" 0) ;; insère le bloc (command "_insert" "00_N_PICE" pfin_cot 1 1 0) ;; restauration des valeurs initiales de la variable système (setvar "ATTREQ" attreq) ;; nom d'entité du bloc inséré (setq bloc (entlast)) ;; assignation des valeurs d'attribut (setpropertyvalue bloc "NUM_PIECE" numero_piece) (setpropertyvalue bloc "NOM_PIECE" nom_piece) (setpropertyvalue bloc "NUM_PIECE_INT" (itoa numero_piece)) (setpropertyvalue bloc "COTE_PIECE" LC) '---------------------------------------------------- ;incrémente le numéro de piece (setq numero_tube (1+ numero_piece)) ) ) ;while (princ) ) Citer
Messages recommandés