Infinicad Posté(e) le 24 mai 2015 Posté(e) le 24 mai 2015 Bonjour à tous, J'utilise le lisp ,tellement pratique, INCR, plus exactement INCSUF.Et je souhaiterai pouvoir supprimer la boite de dialogue et ne l'utiliser qu'avec les paramètres par défaut, sans qu'il n'affiche la boite.je gagnerai beaucoup de temps pour ce que je suis en train de faire. Merci beaucoup pour vos LISP et pour votre aide.
(gile) Posté(e) le 24 mai 2015 Posté(e) le 24 mai 2015 Salut, Vite fait (je n'aime pas trop réduire les fonctionnalités d'une routine "générique" pour répondre à un besoin spécifique). ;;=================== COMMANDES ===================;; ;; INCSUF (gile) 14/02/08 -version 2.2- ;; Incrémente le suffixe des textes, mtextes ou attributs successivement sélectionnés. ;; Le suffixe est déterminé automatiquement en fonction de la nature des caractères qui ;; le compose et du paramètre "Type(s) de caractère du suffixe" courant. ;; L'utilisateur peut modifier les paramètres courants dans une boite dialogue. ;; ;; Modif 24/05/2015 ligne de commande avec paramètres par défaut (defun c:incsuf (/ ValidSel temp typ inc cp file dcl_id what_next ent elst val prop save ) (defun ValidSel (elst / val) (setq val (cdr (assoc 1 elst)) val (ascii (substr val (strlen val))) ) (< 47 val 58) ) (or *suffixbin* (setq *suffixbin* 1)) (or *incrvalue* (setq *incrvalue* 1)) (setq typ *suffixbin* inc *incrvalue* cp 0 ) (if typ (progn (setq *suffixbin* typ *incrvalue* inc ) (while (not (and (setq ent (nentsel "\nSélectionnez le texte de départ: " ) ) (setq elst (entget (car ent))) (setq typ (cdr (assoc 0 elst))) (member typ '("ATTRIB" "TEXT" "MTEXT")) (setq val (cdr (assoc 1 elst))) (or (zerop cp) (setq prop (vl-remove nil (mapcar (function (lambda (n) (assoc n elst) ) ) '(8 62 40 7) ) ) ) ) ) ) ) (if (ValidSel elst) (IncValue "" val "" *incrvalue* *suffixbin* typ save prop) (princ "\nParamètre de suffixe incorrect.") ) ) ) (princ) ) ;;=================== SOUS-ROUTINES ===================;; ;; INCSUFF (version 1.2) -Gilles Chanteau- 15/01/08 ;; Incrémente le suffixe d'une chaîne de caractères de la valeur spécifiée. ;; Est pris en compte comme suffixe, l'ensemble des caractères [0-9] et/ou [A-Z] ;; et/ou [a-z] depuis la fin du texte, en fonction de la valeur de alpha ;; ;; Arguments ;; str : une chaîne avec un suffixe valide ;; inc : un entier positif ;; alpha : un entier, somme des codes binaires suivant ;; 1 pour les caractères [0-9] ;; 2 pour les caractères [A-Z] ;; 4 pour les caractères [a-z] ;; ;; Retour ;; la chaîne avec son suffixe incrémenté (ou nil si aucun suffixe valide) ;; ;; Exemples : ;; (incsuff "N°002" 12 1) = "N°014" ;; (incsuff "Dessin9" 1 1) = "Dessin10" ;; (incsuff "test_ZZ9" 1 3) = "test_AAA0" ;; (incsuff "test_ZZ9" 1 1) = "test_ZZ10" ;; (incsuff "12-" 1 1) = nil ;; ;; Modification (13/02/08) : codes binaires pour l'argument alpha (defun incsuff (str inc alpha / lst crt pas ind val quo ret) (setq lst (reverse (vl-string->list str))) (while (and (setq crt (car lst)) (cond ((and (< 47 crt 58) (= 1 (logand 1 alpha))) (setq pas 10 ind 48 ) ) ((and (< 64 crt 91) (= 2 (logand 2 alpha))) (setq pas 26 ind 65 ) ) ((and (< 96 crt 123) (= 4 (logand 4 alpha))) (setq pas 26 ind 97 ) ) ((< 0 quo) (setq crt (if (= 10 pas) ind (1- ind) ) lst (cons (car lst) lst) ) ) ) ) (setq val (- crt ind) quo (/ (+ val inc) pas) ret (cons (+ ind (rem (+ val inc) pas)) ret) ) (if (zerop quo) (setq ret (append (reverse (cdr lst)) ret) lst nil ) (if (cdr lst) (setq lst (cdr lst) inc quo ) (setq lst (list ind) inc (if (= 10 pas) quo (1- quo) ) ) ) ) ) (if ret (vl-list->string ret) ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Infinicad Posté(e) le 25 mai 2015 Auteur Posté(e) le 25 mai 2015 bonjour, Merci, merci mercitu peux pas imaginer comment ça vas m'aider.... :D Bonne journée
ahbv Posté(e) le 26 mai 2015 Posté(e) le 26 mai 2015 salut,et bravo pour ce lisp que j'utilise aussi a foison mais que je préfère aussi sous cette forme modifiée par contre j'ai fais un essai sur du texte et j'ai ceci:"Sélectionnez le texte de départ: *Annuler*no function definition: INCVALUE" je souhaiterais qu'il incrémente du texte/attribut d'une valeur +1 (at001 devient at002 ou ch-ab2 devient ch-ab3)quelle est la ligne a modifer/ajouter stp ?? Merci d'avance.AHG Salut, Vite fait (je n'aime pas trop réduire les fonctionnalités d'une routine "générique" pour répondre à un besoin spécifique). ;;=================== COMMANDES ===================;; ;; INCSUF (gile) 14/02/08 -version 2.2- ;; Incrémente le suffixe des textes, mtextes ou attributs successivement sélectionnés. ;; Le suffixe est déterminé automatiquement en fonction de la nature des caractères qui ;; le compose et du paramètre "Type(s) de caractère du suffixe" courant. ;; L'utilisateur peut modifier les paramètres courants dans une boite dialogue. ;; ;; Modif 24/05/2015 ligne de commande avec paramètres par défaut (defun c:incsuf (/ ValidSel temp typ inc cp file dcl_id what_next ent elst val prop save ) (defun ValidSel (elst / val) (setq val (cdr (assoc 1 elst)) val (ascii (substr val (strlen val))) ) (< 47 val 58) ) (or *suffixbin* (setq *suffixbin* 1)) (or *incrvalue* (setq *incrvalue* 1)) (setq typ *suffixbin* inc *incrvalue* cp 0 ) (if typ (progn (setq *suffixbin* typ *incrvalue* inc ) (while (not (and (setq ent (nentsel "\nSélectionnez le texte de départ: " ) ) (setq elst (entget (car ent))) (setq typ (cdr (assoc 0 elst))) (member typ '("ATTRIB" "TEXT" "MTEXT")) (setq val (cdr (assoc 1 elst))) (or (zerop cp) (setq prop (vl-remove nil (mapcar (function (lambda (n) (assoc n elst) ) ) '(8 62 40 7) ) ) ) ) ) ) ) (if (ValidSel elst) (IncValue "" val "" *incrvalue* *suffixbin* typ save prop) (princ "\nParamètre de suffixe incorrect.") ) ) ) (princ) ) ;;=================== SOUS-ROUTINES ===================;; ;; INCSUFF (version 1.2) -Gilles Chanteau- 15/01/08 ;; Incrémente le suffixe d'une chaîne de caractères de la valeur spécifiée. ;; Est pris en compte comme suffixe, l'ensemble des caractères [0-9] et/ou [A-Z] ;; et/ou [a-z] depuis la fin du texte, en fonction de la valeur de alpha ;; ;; Arguments ;; str : une chaîne avec un suffixe valide ;; inc : un entier positif ;; alpha : un entier, somme des codes binaires suivant ;; 1 pour les caractères [0-9] ;; 2 pour les caractères [A-Z] ;; 4 pour les caractères [a-z] ;; ;; Retour ;; la chaîne avec son suffixe incrémenté (ou nil si aucun suffixe valide) ;; ;; Exemples : ;; (incsuff "N°002" 12 1) = "N°014" ;; (incsuff "Dessin9" 1 1) = "Dessin10" ;; (incsuff "test_ZZ9" 1 3) = "test_AAA0" ;; (incsuff "test_ZZ9" 1 1) = "test_ZZ10" ;; (incsuff "12-" 1 1) = nil ;; ;; Modification (13/02/08) : codes binaires pour l'argument alpha (defun incsuff (str inc alpha / lst crt pas ind val quo ret) (setq lst (reverse (vl-string->list str))) (while (and (setq crt (car lst)) (cond ((and (< 47 crt 58) (= 1 (logand 1 alpha))) (setq pas 10 ind 48 ) ) ((and (< 64 crt 91) (= 2 (logand 2 alpha))) (setq pas 26 ind 65 ) ) ((and (< 96 crt 123) (= 4 (logand 4 alpha))) (setq pas 26 ind 97 ) ) ((< 0 quo) (setq crt (if (= 10 pas) ind (1- ind) ) lst (cons (car lst) lst) ) ) ) ) (setq val (- crt ind) quo (/ (+ val inc) pas) ret (cons (+ ind (rem (+ val inc) pas)) ret) ) (if (zerop quo) (setq ret (append (reverse (cdr lst)) ret) lst nil ) (if (cdr lst) (setq lst (cdr lst) inc quo ) (setq lst (list ind) inc (if (= 10 pas) quo (1- quo) ) ) ) ) ) (if ret (vl-list->string ret) ) )
bonuscad Posté(e) le 26 mai 2015 Posté(e) le 26 mai 2015 Bonjour, no function definition: INCVALUE" Certainement un oubli de (gile)Vite fait, tu peux récupérer la fonction qui est une sous-routine dans l'application originale que tu trouveras dans Increment.lsp sur sa page. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
ahbv Posté(e) le 27 mai 2015 Posté(e) le 27 mai 2015 Bonjour, Certainement un oubli de (gile), tu peux récupérer la fonction qui est une sous-routine dans l'application originale que tu trouveras dans Increment.lsp sur sa page. merci bonuscad, je regarde et test de nouveaua+
ahbv Posté(e) le 2 juin 2015 Posté(e) le 2 juin 2015 Salut Bonuscad,j'ai copié la sous-routine comme cité précédemment que j'ai mis à la fin du lisp mais cela fonctionne toujours pasde plus je ne suis pas une lumière en lisp donc il y a t-il un endroit bien précis (à la fin au milieu au début ???) ou la placer ou faut-il copier autre chose ??Merci d'avance pour ton aide.meilleures salutationsAHG Bonjour, Certainement un oubli de (gile), tu peux récupérer la fonction qui est une sous-routine dans l'application originale que tu trouveras dans Increment.lsp sur sa page.
bonuscad Posté(e) le 2 juin 2015 Posté(e) le 2 juin 2015 il y a t-il un endroit bien précis (à la fin au milieu au début ???) ou la placer ou faut-il copier autre chose ?? Bonjour, Il n'y a pas d'endroit précis en lisp, tant que tu respecte l'imbrication des parenthèses dans les fonctions.Après l'ajout de la fonction ne sert qu'a se débarrasser de l'erreur que tu avais:no function definition: INCVALUESi cela ne fonctionne pas comme tu le désire, c'est que la routine n'est pas adaptée à ton besoin...Il faudra te tourner vers autre chose, ou faire une adaptation encore plus spécifique de la routine.J'ai quand même tester le code suivant avec du texte simple (ayant un suffixe numérique), et cela fonctionne sans erreur. ;;=================== COMMANDES ===================;; ;; INCSUF (gile) 14/02/08 -version 2.2- ;; Incrémente le suffixe des textes, mtextes ou attributs successivement sélectionnés. ;; Le suffixe est déterminé automatiquement en fonction de la nature des caractères qui ;; le compose et du paramètre "Type(s) de caractère du suffixe" courant. ;; L'utilisateur peut modifier les paramètres courants dans une boite dialogue. ;; ;; Modif 24/05/2015 ligne de commande avec paramètres par défaut (defun c:incsuf (/ ValidSel temp typ inc cp file dcl_id what_next ent elst val prop save ) (defun ValidSel (elst / val) (setq val (cdr (assoc 1 elst)) val (ascii (substr val (strlen val))) ) (< 47 val 58) ) (or *suffixbin* (setq *suffixbin* 1)) (or *incrvalue* (setq *incrvalue* 1)) (setq typ *suffixbin* inc *incrvalue* cp 0 ) (if typ (progn (setq *suffixbin* typ *incrvalue* inc ) (while (not (and (setq ent (nentsel "\nSélectionnez le texte de départ: " ) ) (setq elst (entget (car ent))) (setq typ (cdr (assoc 0 elst))) (member typ '("ATTRIB" "TEXT" "MTEXT")) (setq val (cdr (assoc 1 elst))) (or (zerop cp) (setq prop (vl-remove nil (mapcar (function (lambda (n) (assoc n elst) ) ) '(8 62 40 7) ) ) ) ) ) ) ) (if (ValidSel elst) (IncValue "" val "" *incrvalue* *suffixbin* typ save prop) (princ "\nParamètre de suffixe incorrect.") ) ) ) (princ) ) ;;=================== SOUS-ROUTINES ===================;; ;; INCSUFF (version 1.2) -Gilles Chanteau- 15/01/08 ;; Incrémente le suffixe d'une chaîne de caractères de la valeur spécifiée. ;; Est pris en compte comme suffixe, l'ensemble des caractères [0-9] et/ou [A-Z] ;; et/ou [a-z] depuis la fin du texte, en fonction de la valeur de alpha ;; ;; Arguments ;; str : une chaîne avec un suffixe valide ;; inc : un entier positif ;; alpha : un entier, somme des codes binaires suivant ;; 1 pour les caractères [0-9] ;; 2 pour les caractères [A-Z] ;; 4 pour les caractères [a-z] ;; ;; Retour ;; la chaîne avec son suffixe incrémenté (ou nil si aucun suffixe valide) ;; ;; Exemples : ;; (incsuff "N°002" 12 1) = "N°014" ;; (incsuff "Dessin9" 1 1) = "Dessin10" ;; (incsuff "test_ZZ9" 1 3) = "test_AAA0" ;; (incsuff "test_ZZ9" 1 1) = "test_ZZ10" ;; (incsuff "12-" 1 1) = nil ;; ;; Modification (13/02/08) : codes binaires pour l'argument alpha (defun incsuff (str inc alpha / lst crt pas ind val quo ret) (setq lst (reverse (vl-string->list str))) (while (and (setq crt (car lst)) (cond ((and (< 47 crt 58) (= 1 (logand 1 alpha))) (setq pas 10 ind 48 ) ) ((and (< 64 crt 91) (= 2 (logand 2 alpha))) (setq pas 26 ind 65 ) ) ((and (< 96 crt 123) (= 4 (logand 4 alpha))) (setq pas 26 ind 97 ) ) ((< 0 quo) (setq crt (if (= 10 pas) ind (1- ind) ) lst (cons (car lst) lst) ) ) ) ) (setq val (- crt ind) quo (/ (+ val inc) pas) ret (cons (+ ind (rem (+ val inc) pas)) ret) ) (if (zerop quo) (setq ret (append (reverse (cdr lst)) ret) lst nil ) (if (cdr lst) (setq lst (cdr lst) inc quo ) (setq lst (list ind) inc (if (= 10 pas) quo (1- quo) ) ) ) ) ) (if ret (vl-list->string ret) ) ) ;;==================================================;; ;; IncValue ;; Incr?mente un valeur dans les textes ou attributs s?lectionn?s ;; ;; Arguments ;; pref : pr?fixe (string) ;; val : valeur ? incr?menter (string) ;; suff : suffixe (string) ;; inc : valeur d'incr?ment (entier, positif) ;; bin : type de caract?res ? incr?menter (entier, code binaire) ;; typ : type d'entit? (string, valeur du code de groupe DXF 0) ;; tag : Etiquette d'attribut (string) ;; save : liste de sauvegarde des anciennes valeurs de texte (liste d'association) (defun incvalue (pref val suff inc bin typ save prop / ent elst) (while (or (initget 1 "annUler") (setq ent (nentsel (strcat "\nS?lectionnez le texte suivant" (if save " ou [annUler]: " ":" ) ) ) ) ) (if (= ent "annUler") (if save (progn (setq elst (car save)) (entmod elst) (and (= typ "ATTRIB") (entupd (cdr (assoc 330 elst)))) (setq val (incsuff val (- inc) bin) save (cdr save) ) ) (princ "\nPlus rien ? annuler.") ) (and (setq elst (entget (car ent))) (= (cdr (assoc 0 elst)) typ) (setq save (cons elst save)) (setq val (incsuff val inc bin)) (if prop (entmod (append (vl-remove-if (function (lambda (x) (member (car x) '(1 8 62 40 7)) ) ) elst ) (if (null (assoc 62 prop)) '((62 . 256)) ) (cons (cons 1 (strcat pref val suff)) prop) ) ) (entmod (subst (cons 1 (strcat pref val suff)) (assoc 1 elst) elst) ) ) (and (= typ "ATTRIB") (entupd (cdr (assoc 330 elst)))) ) ) ) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
ahbv Posté(e) le 3 juin 2015 Posté(e) le 3 juin 2015 Salut Bonuscadun très grand merci pour ta réactivité !!je teste ce soir !! (je souhaite pouvoir inserer le lisp dans un plan cliquer sur le texte/attribut d'origine et ensuite incrémenter le suffixe des textes/attributs suivant de +1 rapidement)mille merci aux autres intervenant qui font gagner du temps par leurs lisp !!AHG Bonjour, Il n'y a pas d'endroit précis en lisp, tant que tu respecte l'imbrication des parenthèses dans les fonctions.Après l'ajout de la fonction ne sert qu'a se débarrasser de l'erreur que tu avais:no function definition: INCVALUESi cela ne fonctionne pas comme tu le désire, c'est que la routine n'est pas adaptée à ton besoin...Il faudra te tourner vers autre chose, ou faire une adaptation encore plus spécifique de la routine.J'ai quand même tester le code suivant avec du texte simple (ayant un suffixe numérique), et cela fonctionne sans erreur. ;;=================== COMMANDES ===================;; ;; INCSUF (gile) 14/02/08 -version 2.2- ;; Incrémente le suffixe des textes, mtextes ou attributs successivement sélectionnés. ;; Le suffixe est déterminé automatiquement en fonction de la nature des caractères qui ;; le compose et du paramètre "Type(s) de caractère du suffixe" courant. ;; L'utilisateur peut modifier les paramètres courants dans une boite dialogue. ;; ;; Modif 24/05/2015 ligne de commande avec paramètres par défaut (defun c:incsuf (/ ValidSel temp typ inc cp file dcl_id what_next ent elst val prop save ) (defun ValidSel (elst / val) (setq val (cdr (assoc 1 elst)) val (ascii (substr val (strlen val))) ) (< 47 val 58) ) (or *suffixbin* (setq *suffixbin* 1)) (or *incrvalue* (setq *incrvalue* 1)) (setq typ *suffixbin* inc *incrvalue* cp 0 ) (if typ (progn (setq *suffixbin* typ *incrvalue* inc ) (while (not (and (setq ent (nentsel "\nSélectionnez le texte de départ: " ) ) (setq elst (entget (car ent))) (setq typ (cdr (assoc 0 elst))) (member typ '("ATTRIB" "TEXT" "MTEXT")) (setq val (cdr (assoc 1 elst))) (or (zerop cp) (setq prop (vl-remove nil (mapcar (function (lambda (n) (assoc n elst) ) ) '(8 62 40 7) ) ) ) ) ) ) ) (if (ValidSel elst) (IncValue "" val "" *incrvalue* *suffixbin* typ save prop) (princ "\nParamètre de suffixe incorrect.") ) ) ) (princ) ) ;;=================== SOUS-ROUTINES ===================;; ;; INCSUFF (version 1.2) -Gilles Chanteau- 15/01/08 ;; Incrémente le suffixe d'une chaîne de caractères de la valeur spécifiée. ;; Est pris en compte comme suffixe, l'ensemble des caractères [0-9] et/ou [A-Z] ;; et/ou [a-z] depuis la fin du texte, en fonction de la valeur de alpha ;; ;; Arguments ;; str : une chaîne avec un suffixe valide ;; inc : un entier positif ;; alpha : un entier, somme des codes binaires suivant ;; 1 pour les caractères [0-9] ;; 2 pour les caractères [A-Z] ;; 4 pour les caractères [a-z] ;; ;; Retour ;; la chaîne avec son suffixe incrémenté (ou nil si aucun suffixe valide) ;; ;; Exemples : ;; (incsuff "N°002" 12 1) = "N°014" ;; (incsuff "Dessin9" 1 1) = "Dessin10" ;; (incsuff "test_ZZ9" 1 3) = "test_AAA0" ;; (incsuff "test_ZZ9" 1 1) = "test_ZZ10" ;; (incsuff "12-" 1 1) = nil ;; ;; Modification (13/02/08) : codes binaires pour l'argument alpha (defun incsuff (str inc alpha / lst crt pas ind val quo ret) (setq lst (reverse (vl-string->list str))) (while (and (setq crt (car lst)) (cond ((and (< 47 crt 58) (= 1 (logand 1 alpha))) (setq pas 10 ind 48 ) ) ((and (< 64 crt 91) (= 2 (logand 2 alpha))) (setq pas 26 ind 65 ) ) ((and (< 96 crt 123) (= 4 (logand 4 alpha))) (setq pas 26 ind 97 ) ) ((< 0 quo) (setq crt (if (= 10 pas) ind (1- ind) ) lst (cons (car lst) lst) ) ) ) ) (setq val (- crt ind) quo (/ (+ val inc) pas) ret (cons (+ ind (rem (+ val inc) pas)) ret) ) (if (zerop quo) (setq ret (append (reverse (cdr lst)) ret) lst nil ) (if (cdr lst) (setq lst (cdr lst) inc quo ) (setq lst (list ind) inc (if (= 10 pas) quo (1- quo) ) ) ) ) ) (if ret (vl-list->string ret) ) ) ;;==================================================;; ;; IncValue ;; Incr?mente un valeur dans les textes ou attributs s?lectionn?s ;; ;; Arguments ;; pref : pr?fixe (string) ;; val : valeur ? incr?menter (string) ;; suff : suffixe (string) ;; inc : valeur d'incr?ment (entier, positif) ;; bin : type de caract?res ? incr?menter (entier, code binaire) ;; typ : type d'entit? (string, valeur du code de groupe DXF 0) ;; tag : Etiquette d'attribut (string) ;; save : liste de sauvegarde des anciennes valeurs de texte (liste d'association) (defun incvalue (pref val suff inc bin typ save prop / ent elst) (while (or (initget 1 "annUler") (setq ent (nentsel (strcat "\nS?lectionnez le texte suivant" (if save " ou [annUler]: " ":" ) ) ) ) ) (if (= ent "annUler") (if save (progn (setq elst (car save)) (entmod elst) (and (= typ "ATTRIB") (entupd (cdr (assoc 330 elst)))) (setq val (incsuff val (- inc) bin) save (cdr save) ) ) (princ "\nPlus rien ? annuler.") ) (and (setq elst (entget (car ent))) (= (cdr (assoc 0 elst)) typ) (setq save (cons elst save)) (setq val (incsuff val inc bin)) (if prop (entmod (append (vl-remove-if (function (lambda (x) (member (car x) '(1 8 62 40 7)) ) ) elst ) (if (null (assoc 62 prop)) '((62 . 256)) ) (cons (cons 1 (strcat pref val suff)) prop) ) ) (entmod (subst (cons 1 (strcat pref val suff)) (assoc 1 elst) elst) ) ) (and (= typ "ATTRIB") (entupd (cdr (assoc 330 elst)))) ) ) ) )
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