lecrabe Posté(e) le 22 septembre 2015 Posté(e) le 22 septembre 2015 Hello 1) Il semblerait que un truc du genre : *xxx_yyy soit OK (sans Alt GR + 7) ! 2) Par contre : *xxx_yyy*ne fonctionne pas ! Donc il faudrait faire : *xxx_yyy`*sans doute !? Merci d'avance de tes lumieres, Bye, lecrabe Autodesk Expert Elite Team
Patrick_35 Posté(e) le 23 septembre 2015 Auteur Posté(e) le 23 septembre 2015 Hello 1) Il semblerait que un truc du genre : *xxx_yyy soit OK (sans Alt GR + 7) ! 2) Par contre : *xxx_yyy*ne fonctionne pas ! Donc il faudrait faire : *xxx_yyy`*sans doute !? Merci d'avance de tes lumieres, Bye, lecrabeSalut Si tu souhaites traiter tous les noms commencant "*" --> `**Si tu souhaites traiter tous les noms commencant par "*abc_123" --> `*abc_123*Si tu souhaites traiter tous les noms contenant "abc_123" --> *abc_123*Si tu souhaites traiter tous les noms terminant par "abc_123*" --> *abc_123`* @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Patrick_35 Posté(e) le 25 janvier 2016 Auteur Posté(e) le 25 janvier 2016 Bonjour Mise à jour du 1er message et des liens @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
lecrabe Posté(e) le 25 janvier 2016 Posté(e) le 25 janvier 2016 Hello Le Rennais Encore MERCI & BRAVO ! Bye, lecrabe PS: LA SANTE & Meilleurs Voeux ! Autodesk Expert Elite Team
DenisHen Posté(e) le 19 février 2016 Posté(e) le 19 février 2016 Bonjour à tous, Je tente d'adapter ce code à mes besoins, bien bien entendu, ça ne fonctionne pas... Voici le code :(defun nombl (blo) (if (vlax-property-available-p blo 'effectivename) (vla-get-effectivename blo) (vla-get-name blo) ) ;_ Fin de if ) ;_ Fin de defun ;;; (setq LstBlk '(("EDF12*" . "Poteau_Bt") ("EAU12*" . "BoucheIncendie") ("EDF112*" . "Poteau_Cand") ("PTT12*" . "Poteau_Tel") ("EAU42*" . "Bouche") ("PLOT*" . "Poteau_Plot") ("GAZ22*" . "BoucheGaz") ) ) ;_ Fin de setq ;;;Début de la boucle (vla-startundomark doc) (foreach PosLstBlk LstBlk (setq doc (vla-get-activedocument (vlax-get-acad-object))) (and (tblsearch "block" (car PosLstBlk)) (ssget "x" (list (cons 0 "insert"))) (progn (vlax-for ent (setq sel (vla-get-activeselectionset doc)) (and (wcmatch (nombl ent) (cdr PosLstBlk)) (vla-put-name ent (car PosLstBlk))) ) ;_ Fin de vlax-for (vla-delete sel) ) ;_ Fin de progn ) ;_ Fin de and ) ;_ Fin de foreach (vla-endundomark doc) Si quelqu'un a un conseil ou une astuce, je suis preneur... 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)
Patrick_35 Posté(e) le 19 février 2016 Auteur Posté(e) le 19 février 2016 Salut Et ce cette manière ? (defun nombl (blo) (if (vlax-property-available-p blo 'effectivename) (vla-get-effectivename blo) (vla-get-name blo) ) ;_ Fin de if ) ;_ Fin de defun ;;; (setq LstBlk '(("EDF12*" . "Poteau_Bt") ("EAU12*" . "BoucheIncendie") ("EDF112*" . "Poteau_Cand") ("PTT12*" . "Poteau_Tel") ("EAU42*" . "Bouche") ("PLOT*" . "Poteau_Plot") ("GAZ22*" . "BoucheGaz") ) ) ;_ Fin de setq ;;;Début de la boucle (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (foreach PosLstBlk LstBlk (and (tblsearch "block" (car PosLstBlk)) (ssget "x" (list (cons 0 "insert"))) (progn (vlax-for ent (setq sel (vla-get-activeselectionset doc)) (and (wcmatch (nombl ent) (car PosLstBlk)) (vla-put-name ent (cdr PosLstBlk))) ) ;_ Fin de vlax-for (vla-delete sel) ) ;_ Fin de progn ) ;_ Fin de and ) ;_ Fin de foreach (vla-endundomark doc) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
DenisHen Posté(e) le 19 février 2016 Posté(e) le 19 février 2016 Rebonjour Patrick_35, Et merci de m'aider. A ta question si ce nouveau code fonctionne, la réponse est "Non", et AutoCAD ne me dit rien... Par contre, est-ce que les blocs remplaçants doivent être définis dans le dessin courant ? Si oui, dois-je les insérer puis les effacer ensuite ? EDIT : En fait, même si le bloc est déjà défini dans le dessin, ça ne fonctionne pas. Mais je cherche... 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)
Patrick_35 Posté(e) le 19 février 2016 Auteur Posté(e) le 19 février 2016 Ah oui, je viens de trouver l'erreurIl faut virer (tblsearch "block" (car PosLstBlk)) car une recherche dans la table des blocs avec un nom de bloc ayant un caractère générique dans son nom, ben ça ne fonctionne pas (logique) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
DenisHen Posté(e) le 19 février 2016 Posté(e) le 19 février 2016 Merci de ton aide Patrick_35, mais ça plante toujours, et je ne vois pas où : ;;Remplacement de blocs---------------------------------------------------------- (defun nombl (blo) (if (vlax-property-available-p blo 'effectivename) (vla-get-effectivename blo) (vla-get-name blo) ) ;_ Fin de if ) ;_ Fin de defun ;;; (princ "\nDébut du remplacement des blocs") (setq LstBlk '(("EDF12*" . "Poteau_Bt") ("EAU12*" . "BoucheIncendie") ("EDF112*" . "Poteau_Cand") ("PTT12*" . "Poteau_Tel") ("EAU42*" . "Bouche") ("PLOT*" . "Poteau_Plot") ("GAZ22*" . "BoucheGaz") ) ) ;_ Fin de setq ;;;Début de la boucle (princ "\nDrapeau 01") (setq doc (vla-get-activedocument (vlax-get-acad-object))) (princ "\nDrapeau 02") (vla-startundomark doc) (princ "\nDrapeau 03") (foreach PosLstBlk LstBlk (princ "\nDrapeau 04") (and (ssget "x" (list (cons 0 "insert"))) (progn (princ "\nDrapeau 05") (vlax-for ent (setq sel (vla-get-activeselectionset doc)) (and (wcmatch (nombl ent) (car PosLstBlk)) (vla-put-name ent (cdr PosLstBlk))) ) ;_ Fin de vlax-for (vla-delete sel) ) ;_ Fin de progn (princ "\nDrapeau 06") ) ;_ Fin de and (princ "\nDrapeau 07") ) ;_ Fin de foreach (princ "\nDrapeau 08") (vla-endundomark doc) ;;; Et AutoCAD me répond :Début du remplacement des blocsDrapeau 01Drapeau 02Drapeau 03Drapeau 04Drapeau 05; erreur: Erreur Automation Clé introuvable; redéfinir après erreur J'ai positionné des drapeau, à l'ancienne, pour m'aider à trouver où ça coince... Mais je ne trouve pas :( 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)
(gile) Posté(e) le 19 février 2016 Posté(e) le 19 février 2016 Salut, Il me semble que tu essayes de renommer des références de blocs. Je crains que ça ne soit pas possible. tu peux renommer des définitions de blocs à condition que ça ne soit pas de des blocs anonymes créés par AutoCAD pour les blocs dynamiques.Ce n'est pas un problème de LISP (ou de programmation) ce sont les blocs AutoCAD qui sont définis de cette manière, il est important de bien comprendre la différence et les relations entre définition de bloc et références de bloc (de même pour les définitions et références d'attributs). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
DenisHen Posté(e) le 19 février 2016 Posté(e) le 19 février 2016 Merci (gile) pour cette réponse, Donc, si j'ai bien compris, il serait préférable que j'insert un "nouveau" bloc à la place de l'ancien et que je supprime l'ancien ? Reste juste à récupérer l'échelle et la rotation du bloc, car ils n'ont pas d'attributs... Je ne pense pas que ce soit à ma porté mais ça vaut le coup d'essayer... En tous cas, merci à vous pour tous ces conseils... Bon week-end à tous. Denis... 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)
Patrick_35 Posté(e) le 19 février 2016 Auteur Posté(e) le 19 février 2016 Bonsoir à vous deux Le lisp a l'air bon. Je ne comprends pas où est le problème ?J'avais testé avec de donner ma correction. @gileL'idée est de changer le nom d'un bloc pour le remplacer graphiquement, comme ça, on gade toutes ses caractéristiques mais dans le dessin, pas dans les définitions.Par contre, je te rejoins pour les blocs dynamiques. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
rebcao Posté(e) le 5 septembre 2016 Posté(e) le 5 septembre 2016 Bonjour PAtrick, En utilisant le programme RON.LSP pour renuméroter les présentations, sur une version 2015, il y ce message d'erreur ! no function definition: VLAX-GET-ACAD-OBJECT As-tu une idée ? Faut-il que les EXPRESS soient installés ? Je te remercie. Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
Patrick_35 Posté(e) le 5 septembre 2016 Auteur Posté(e) le 5 septembre 2016 Bonjour PAtrick, En utilisant le programme RON.LSP pour renuméroter les présentations, sur une version 2015, il y ce message d'erreur ! no function definition: VLAX-GET-ACAD-OBJECT As-tu une idée ? Faut-il que les EXPRESS soient installés ? Je te remercie. ChristianSalut Il faut ajouter au lisp (ou taper directement au clavier)(vl-load-com) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
FRAXA Posté(e) le 28 septembre 2016 Posté(e) le 28 septembre 2016 Bonjour Patrick_35. Je suis confronté à un problème avec le lisp LXL5.11.Sur un fichier, la liaison entre les blocs et le fichier excel disparaît à chaque redémarrage de l'ordinateur. Une idée?Merci d'avance. HPZ400 Workstation Intel Xeon W3550 3.07 GHz 6 Go ram QUADRO FX 1800
GuillaumeG Posté(e) le 14 octobre 2016 Posté(e) le 14 octobre 2016 Bonjour Patrick_35, J'utilise un tas de tes LISP, et en premier lieu, je voudrai te remercié.Mon probleme se pose dans l'utilisation de MAT.J'ai une fichier avec beaucoup d'onglet avec un bloc avec attribut (cartouche) inserer sur chaque presentation.les attributs sont des champs contenant une expression diesel du type "$(substr,$(getvar,ctab),7,50)". comment pourrai je utilisé ton LISP MAT (ou un autre d'ailleurs) dans le but de propager ce type de valeur d'attribut? Merci d'avance
Patrick_35 Posté(e) le 17 octobre 2016 Auteur Posté(e) le 17 octobre 2016 Salut C'est possible.Pour cela, tu ajoutes %< en début de formule et >% à la fin, ce qui donne%<$(substr,$(getvar,ctab),7,50)>%Valeur à propager dans MAT @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
dilack Posté(e) le 23 janvier 2017 Posté(e) le 23 janvier 2017 Bonjour à tous,Sur une version de Map 3D 2016 j'ai un message d'erreur qui m'affiche "fichier Mim.dcl introuvable" au lancement de la routine MIM alors que dans mes options le dossier support est bien pris en compte.J'ai d'autre routines lips qui se charge sans problème au démarrage de Map et qui sont dans le m^me dossier.Etant novice en lips je suis incapable de trouver la ligne pour adapter le code au format 2016.Merci d'avance de votre retour.
Patrick_35 Posté(e) le 23 janvier 2017 Auteur Posté(e) le 23 janvier 2017 Bonjour à tous,Sur une version de Map 3D 2016 j'ai un message d'erreur qui m'affiche "fichier Mim.dcl introuvable" au lancement de la routine MIM alors que dans mes options le dossier support est bien pris en compte.J'ai d'autre routines lips qui se charge sans problème au démarrage de Map et qui sont dans le m^me dossier.Etant novice en lips je suis incapable de trouver la ligne pour adapter le code au format 2016.Merci d'avance de votre retour.Salut C'est que le fichier dcl ne se trouve pas dans les chemins de recherches d'Autocad. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
BET03460 Posté(e) le 9 février 2017 Posté(e) le 9 février 2017 Merci pour les lisp je vais gagner de nombreuses minutes :D
Ossonomo Posté(e) le 15 février 2017 Posté(e) le 15 février 2017 Bonjour, tout d'abord un grand merci pour tout ces lisps qui deviennent rapidement indispensable pour pouvoir travailler efficacement au quotidien. J'aimerais pouvoir traiter plusieurs dwg à l'aide du lisp LXL (peut-être pas obligatoirement, je peuxcopier les données dans un fichier texte) ; je suis à l'écoute de vos suggestion.
Fhay78 Posté(e) le 5 octobre 2017 Posté(e) le 5 octobre 2017 Bonjour,Je suis nouveau en tant que membre mais je profitai avec plaisir de toute vos techniques et conseils.A ce jour j'utilisai l'ancienne version de Grf sans soucis mais depuis hier tous mes dwg regroupés se retrouvent en superposition dans l'espace objet (je pense à une origine différente)et avec deux fenêtres dans l'espace papier dont l'un correct. Même avec la dernière version.Quel solution peut être possible?Merci d'avance
Patrick_35 Posté(e) le 10 octobre 2017 Auteur Posté(e) le 10 octobre 2017 Salut Peut-tu nous donner un exemple qui ne fonctionne pas avec Grf ? @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Fhay78 Posté(e) le 11 octobre 2017 Posté(e) le 11 octobre 2017 Salut, J'ai donc recaler l'origine de chaque fichier au même point 0,0,0.Maintenant tout fonctionne. Mais j'aurai aimer trouver une routine pour le faire automatiquement.Mes fichiers sont des fiches électriques donc toutes avec le même format.Ensuite lors de l'utilisation de GRF dans l'espace présentation je me retrouve avec la bonne fenêtre d'extraction mais aussi avec une autre au hasard. Veux tu une série de fichiers ou cela est'ce du aux réglage autocad? Merci
Patrick_35 Posté(e) le 12 octobre 2017 Auteur Posté(e) le 12 octobre 2017 Salut Je veux bien un exemple.A tout hasars, je met la dernière version(defun c:grf(/ att bg col dirbox dix diy doc eh fen hd KillBigFont lay lcr lst obj old px py rep rgn sel sui tab tot x y) (defun dirbox(txt / cdl rep) (if (setq cdl (vlax-create-object "Shell.Application")) (progn (and (setq rep (vlax-invoke cdl 'browseforfolder 0 txt 512 "")) (setq rep (vlax-get-property (vlax-get-property rep 'self) 'path)) ) (vlax-release-object cdl) ) ) rep ) (defun KillBigFont (stname / ) (setq styl (tblobjname "style" stname)) (setq stlist (entget styl)) (entmod (subst (cons 4 "")(assoc 4 stlist) stlist)) (entupd styl) (princ) ) (vl-load-com) (setq doc (vla-get-activedocument (vlax-get-acad-object)) col 1 tot 1 x 0.0 y 0.0 eh 1.0 ; Scale rgn (getvar "LAYOUTREGENCTL") lcr (getvar "LAYOUTCREATEVIEWPORT") ) (vla-startundomark doc) (and (setq rep (dirbox "Sélectionnez le répertoire pour grouper les folios")) (setq lst (vl-directory-files rep "*.dwg" 1)) (progn (setq rep (vl-string-translate "\\" "/" rep) old (layoutlist) ) (or (eq (substr rep (strlen rep) 1) "/") (setq rep (strcat rep "/"))) (setvar "LAYOUTREGENCTL" 0) (setvar "LAYOUTCREATEVIEWPORT" 0) (foreach ele (acad_strlsort lst) (setq obj (vla-insertblock (vla-get-modelspace doc) (vlax-3d-point (list x y 0.0)) (findfile (strcat rep ele)) 1 1 1 0 ) ) (and (vl-catch-all-error-p (vl-catch-all-apply 'vla-getboundingbox (list obj 'bg 'hd))) (vlax-for sui (vla-get-textstyles doc) (or (eq (vla-get-bigfontfile sui) "") (findfile (vla-get-bigfontfile sui)) (KillBigFont (vla-get-name sui)) ) ) ) (vla-getboundingbox obj 'bg 'hd) (setq bg (vlax-safearray->list bg) hd (vlax-safearray->list hd) dix (- (car hd) (car bg)) diy (- (cadr hd) (cadr bg)) px (* dix 1.05) py (* diy 1.05) lay (itoa tot) ) (while (< (strlen lay) 2) (setq lay (strcat "0" lay)) ) (or (vl-catch-all-error-p (setq sel (vl-catch-all-apply 'vlax-invoke (list obj 'explode)))) (vla-delete obj) ) (and (vl-catch-all-error-p (vl-catch-all-apply 'vla-add (list (vla-get-layouts doc) lay))) (ssget "x" (list (cons 410 lay))) (progn (vlax-map-collection (setq sel (vla-get-activeselectionset doc)) 'vla-delete) (vla-delete sel) (setq old (vl-remove lay old)) ) ) (vla-put-activelayout doc (setq tab (vla-item (vla-get-layouts doc) lay))) (setq fen (vla-addpviewport (vla-get-block tab) (vlax-3d-point (mapcar '(lambda(a B) (/ (+ a B) 2.0)) '(0.0 0.0 0.0) (list dix diy 0.0))) dix diy)) (vla-put-layer fen "0") (vla-put-color fen "256") (vla-put-viewporton fen :vlax-true) (vla-zoomextents (vlax-get-acad-object)) (vla-display fen :vlax-false) (vla-display fen :vlax-true) (vla-put-mspace doc :vlax-true) (vla-zoomWindow (vlax-get-acad-object) (vlax-3d-point bg) (vlax-3d-point hd)) (vla-put-customscale fen eh) (vla-put-mspace doc :vlax-false) (vla-put-displaylocked fen :vlax-true) (setq tot (1+ tot) col (1+ col) x (+ x px) ) (and (eq col 11) (setq x 0.0 y (+ y py) col 1 ) ) ) (setvar "LAYOUTREGENCTL" rgn) (setvar "LAYOUTCREATEVIEWPORT" lcr) (foreach lay old (vla-delete (vla-item (vla-get-layouts doc) lay)) ) (vla-purgeall doc) ) ) (vla-endundomark doc) (princ) ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
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