DenisHen Posté(e) le 5 mars 2021 Posté(e) le 5 mars 2021 Bonjour à la communauté. Voilà, j'ai trié les Lisps que j'ai créés et je suis tombé sur celui-là. Il pourrait être très utile à certains. Je m'explique : Lors d'un import ou d'une lecture d'un DWG issus de MicroStation Atlas V3, souvent, les mêmes blocs sont incrémentés, par exemple, le bloc "égout", s'il est utilisé 3 fois dans MicroStation Atlas V3, le DWG qu'il créera aura 3 noms de bloc différents pour le même bloc utilisé, "égout", "égout_01" et "égout_02", cette routine sert à supprimer ces extension incrémentés ("*_xx") pour ne retrouver que 3 blocs nommés "égout". ;;; *********************************************************** ;;; Routine de traitement des blocs incrémentés issus d'une V3 ;;; Version sans liste de blocs ;;; *********************************************************** (defun c:RemplBlkV3 (/ ss i ent elst BlkNom Resultat index NouvBlkNom) (princ "\n\tDéveloppé par Denis H. (1.0)") (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (princ "\nRemplacement des blocs incrémentés...") (setq ss nil i 0 ) ;_ Fin de setq (if (setq ss (ssget "_X" '((0 . "INSERT")))) (progn (while (setq ent (ssname ss i)) (setq i (1+ i) elst (entget ent) BlkNom (cdr (assoc 2 elst)) ) ;_ Fin de setq (setq Resultat (vl-string->list BlkNom)) (if (/= (vl-string-search "_" (vl-list->string (reverse Resultat))) nil) (progn (setq index (- (length Resultat) (vl-string-search "_" (vl-list->string (reverse Resultat))))) (setq NouvBlkNom (if (eq (type (read (substr BlkNom (1+ index)))) 'INT) (substr BlkNom 1 (1- index)) BlkNom ) ;_ Fin de if ) ;_ Fin de setq (princ (strcat "\nAncien bloc: " BlkNom " -> Nouveau bloc: " NouvBlkNom)) (if (/= NouvBlkNom BlkNom) (progn (setq elst (subst (cons 2 NouvBlkNom) (assoc 2 elst) elst)) ; (entmod elst) ) ;_ Fin de progn ) ;_ Fin de if ) ;_ Fin de progn ) ;_ Fin de if ) ;_ Fin de while ) ;_ Fin de progn ) ;_ Fin de if (if (eval 'c:CtrlSvGrd) (c:CtrlSvGrd) (princ "La commande c:CtrlSvGrd n'est pas disponible") ) ;_ Fin de if (vla-endundomark doc) (princ) ) ;_ Fin de defun J'ai écris ce code avec l'aide de plusieurs membres de CadXP... Un grand merci à eux... Denis... Citer Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
GEGEMATIC Posté(e) le 8 mars 2021 Posté(e) le 8 mars 2021 salut Denis,c'est une routine très utile,ça ne devrait plus l'être, car ustation permet les "cellules partagées"qui suppriment ce problème.mais tout le monde n'a pas encore pris en compte cette possibilité ... Il m'arrive d'avoir ce problème également avec les plans archi (all_plan, archicad ? je ne sais pas) a+gégé Citer ----------------------------------------------------------------------Site: https://www.g-eaux.frBlog: http://g-eaux.over-blog.com
DenisHen Posté(e) le 8 mars 2021 Auteur Posté(e) le 8 mars 2021 Salut Gégé. Effectivement, j'ai eu trop souvent ce problème, et vu que je l'ai, en partie "résolue", j'ai préféré partager cette petite routine. A+ Denis... Citer Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Fraid Posté(e) le 8 mars 2021 Posté(e) le 8 mars 2021 Bonjour, Juste par curiosité,C'est quoi CtrlSvGrd ? Citer https://github.com/Fraiddd
DenisHen Posté(e) le 8 mars 2021 Auteur Posté(e) le 8 mars 2021 Salut Fraid, et merci pour ta remarque, qui souligne un oubli de ma part pour ne pas l'avoir supprimé de mon code. Cette commande (CtrlSvGrd) effectue une sauvegarde (ou enregistrement) toutes les X commandes de mes différents LISP qui y font appel. Si cela intéresse quelqu'un, voici la description des deux commandes et leur code : CtrlSvGrd : fait appel au control (Ctrl) des sauvegardes (SvGrd ou enregistrement) du fichier dessin. Il sauvegarde ou pas le fichier toutes les X commandes LISP qui y font appel (définies par CtrlSvGrdParam).CtrlSvGrdParam : défini le nombre d'appel à CtrlSvGrd qui lance la commande sauvegarde (ou enregistrement) du fichier dessin. ;;;***************************************** ;;; Sauvegarde toutes les n opérations LiSP ;;;***************************************** (defun c:CtrlSvGrd (/ SvGrd) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (setq SvGrdParam (vlax-ldata-get "DenisH" "SauveGardeParam" 0)) (if (= SvGrdParam 0) (progn (setq SvGrdParam 20) (vlax-ldata-put "DenisH" "SauveGardeParam" SvGrdParam)) ;_ Fin de progn ) ;_ Fin de if (setq SvGrd (vlax-ldata-get "DenisH" "SauveGarde" 0)) (if (>= SvGrd SvGrdParam) (progn (princ "\nSauvegarde incrémentielle...\tCompteur à zéro.") (command "_qsave") (vlax-ldata-put "DenisH" "SauveGarde" 0) ) ;_ Fin de progn (progn (setq SvGrd (+ SvGrd 1)) (vlax-ldata-put "DenisH" "SauveGarde" SvGrd) (princ (strcat "\nIncrémentation sauvegarde = " (itoa SvGrd) "/" (itoa SvGrdParam))) ) ;_ Fin de progn ) ;_ Fin de if (vla-endundomark doc) (princ) ) ;_ Fin de defun ;;;*************************** ;;; Paramètre des sauvegardes ;;;*************************** (defun c:CtrlSvGrdParam (/) (princ "\n\tDéveloppé par Denis H. (1.0)") (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (setq SvGrd (getstring "\nTapez le nombre d'opérations entre les sauvegardes :" "")) (vlax-ldata-put "DenisH" "SauveGardeParam" (atoi SvGrd)) (vla-endundomark doc) (princ) ) ;_ Fin de defun Bonne journée à tous. Denis... Citer Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Messages recommandés