salvanorigatore Posté(e) le 17 mars 2008 Partager Posté(e) le 17 mars 2008 Bonjour à tous,quelqu’un connait-il (ou pourrait-il créer) un outil qui permette d’un seul clic de souris (ou presque…) de supprimer les couleurs forcés des styles de cote présentes dans le dessin en mettant tout (lignes, flèches, textes, …) en couleur du calque ?Merci par avance de votre aide.Bonne journée. " Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres " Lien vers le commentaire Partager sur d’autres sites More sharing options...
clambert Posté(e) le 17 mars 2008 Partager Posté(e) le 17 mars 2008 Tu te mets à l'écran ta barre d'outils Propriétés.Il y a 3 déroulants : couleur, type de ligne et épaiseur de ligne.Tu sélectionne un par un les objets à modifier, ou ,pour aller plus vite, tu fais un CTRL+A dans ta zone graphique et tu vas cherdher Couleur, Du Calque.C'est fait @ + Lien vers le commentaire Partager sur d’autres sites More sharing options...
salvanorigatore Posté(e) le 17 mars 2008 Auteur Partager Posté(e) le 17 mars 2008 Bonjour clambert,merci pour ta contribution mais je connaissais déjà cette méthode!quand je parlais d'un outils j'entendais plutôt quelque chose dans le genre "petit lisp' qui une fois lancé fait le bouleau pour moi et qui traite toutes les cotations du dessins quelles soient obliques, droites, angulaires, etc.Merci encore quand même. " Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres " Lien vers le commentaire Partager sur d’autres sites More sharing options...
funkkybebel Posté(e) le 18 mars 2008 Partager Posté(e) le 18 mars 2008 Bonjour,je serai très intéressé moi aussi par ce genre d'outil... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Matt666 Posté(e) le 18 mars 2008 Partager Posté(e) le 18 mars 2008 Salut. Un truc comme ça ?(defun c:COTZ (/ sel n ent) (if (setq sel (ssget "_x" '((0 . "DIMENSION")))) (repeat (setq n (sslength sel)) (entmod (subst (cons 62 256) (assoc 62 (setq ent (entget (ssname sel (setq n (1- n)))))) ent )) (entupd (cdr (assoc -1 ent))) )) (princ) ) A bientot.Matt. "Chacun compte pour un, et nul ne compte pour plus d'un." Lien vers le commentaire Partager sur d’autres sites More sharing options...
Matt666 Posté(e) le 18 mars 2008 Partager Posté(e) le 18 mars 2008 Un autre un peu plus poussée...(defun c:COTZ (/ cmdecho sel n ent) (setq cn 0 cmdecho (getvar "cmdecho")) (setvar "cmdecho" 0) (command "_undo" "d") (if (setq sel (ssget "_X" '((0 . "DIMENSION")))) (progn (repeat (setq n (sslength sel)) (setq ent (entget (ssname sel (setq n (1- n))))) (if (/= 256 (cdr (assoc 62 ent))) (entmod (subst (cons 62 256) (assoc 62 ent) ent )) (setq cn (1+ cn)) ) (entupd (cdr (assoc -1 ent))) ) (setq cn (- (sslength sel) cn)) (if (and (< cn 2) (/= 0 cn)) (princ (strcat "\n1 cote sur " (itoa (sslength sel)) " a été modifiée.")) (if (/= 0 cn) (princ (strcat "\n" (itoa cn) " cotes sur " (itoa (sslength sel)) " ont été modifiées.")) (princ "\nToutes les cotes sont à jour.") ) ) ) ) (command "_undo" "f") (setvar "cmdecho" cmdecho) (princ) ) - Un annulation de la commande- Des messages de fin. A bientot !Matt. "Chacun compte pour un, et nul ne compte pour plus d'un." Lien vers le commentaire Partager sur d’autres sites More sharing options...
salvanorigatore Posté(e) le 18 mars 2008 Auteur Partager Posté(e) le 18 mars 2008 Salut Matt666,merci beaucoup pour ton programme j'en ai fais un fichier lisp.mais lorsque je le lance (cmd COTZ) bien qu'il démarre et qu'il donne un message de fin disant combien de côtes il à traité je ne vois pas ce qu'il modifie puisque les couleurs des côtes (lignes, textes, etc ) restent identiques.A moins que je ne sache pas l'utiliser!:calim:merci de m'aider. :yltype: " Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres " Lien vers le commentaire Partager sur d’autres sites More sharing options...
Matt666 Posté(e) le 18 mars 2008 Partager Posté(e) le 18 mars 2008 Ah pardon !! je n'avais pas tout lu... Je te finis le truc dès que j'ai un peu le temps ! Adtal !Matt. "Chacun compte pour un, et nul ne compte pour plus d'un." Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 18 mars 2008 Partager Posté(e) le 18 mars 2008 Salut, Un petit truc qui met toutes les cotes en "DuCalque" et tous leurs composants (ligne de cote, ligne d'attache, texte) en "DuBloc". (defun c:cleandim (/ ss) (vl-load-com) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object))) ) (if (ssget "_X" '((0 . "DIMENSION"))) (progn (vla-StartUndoMark *acdoc*) (vlax-for d (setq ss (vla-get-ActiveSelectionSet *acdoc*)) (vla-put-Color d 256) (foreach p '(DimensionLineColor ExtensionLineColor TextColor) (if (vlax-property-available-p d p) (vlax-put d p 0) ) ) ) (vla-EndUndoMark *acdoc*) ) ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
Matt666 Posté(e) le 18 mars 2008 Partager Posté(e) le 18 mars 2008 Salut Gile ! bon bah plus besoin de chercher ! Sauf que j'ai quand même fait un truc, mais n'ayant pas AutoCAD sous la main, je ne sais pas si cela fonctionne... Si vous pouviez voir ça ?? Je ne sais même pas si c'est une bonne méthode... Ca m'a l'air un peu simplet :)C'est une méthode en autolisp, pas en vlisp. Merci !;;; LSTAB ;;; Génère automatiquement une liste des entités d'une des tables de la bd graphique. ;;; (LSTAB "layer") -> ("0" "structure") (defun LSTAB ( TABL / LB X ) (if (member (strcase tabl) '("APPID" "BLOCK" "DIMSTYLE" "LAYER" "LTYPE" "STYLE" "UCS" "VIEW" "VPORT") ) (progn (setq lb (cons (cdr (assoc 2 (tblnext tabl T))) lb)) (while (setq x (cdr (assoc 2 (tblnext tabl)))) (setq lb (cons x lb)) ) (if (/= (strcase tabl) "BLOCK") (setq lb (acad_strlsort lb)) lb ) ) ) ) ;;;Normalise les styles de cotes (defun c:COTZ (/ cmdecho sel n ent) (setq cmdecho (getvar "cmdecho")) (setvar "cmdecho" 0) (command "_undo" "d") (if (setq sel (ssget "_X" '((0 . "DIMENSION")))) (progn (repeat (setq n (sslength sel)) (setq ent (entget (ssname sel (setq n (1- n))))) (if (/= 256 (cdr (assoc 62 ent))) (entmod (subst (cons 62 256) (assoc 62 ent) ent )) ) (entupd (cdr (assoc -1 ent))) ) (setq dimstyle (getvar "dimstyle")) (foreach pt (lstab "dimstyle") (setvar "dimstyle" pt) (setvar "dimclre" 256) (setvar "dimclrd" 256) (setvar "dimclrt" 256) ) (setvar "dimstyle" dimstyle) ) ) (command "_undo" "f") (setvar "cmdecho" cmdecho) (princ) ) A bientot.Matt. [Edité le 18/3/2008 par Matt666] "Chacun compte pour un, et nul ne compte pour plus d'un." Lien vers le commentaire Partager sur d’autres sites More sharing options...
salvanorigatore Posté(e) le 18 mars 2008 Auteur Partager Posté(e) le 18 mars 2008 Bonjour Gile,t'es un chef ton "truc"" marche du tonnerre! :heartpump:juste une petite remarque si tu me permets, tout passe en "DuBloc" : lignes, textes, etc.Serait-il possible plutôt de tout faire passer en "DuCalque"?Si ce n'est pas possible ça ne fait rien merci encore. :D Je tiens aussi à remercier Matt666 pour ses efforts, et puisque tu le demande voici le message que j'ai eu en utilisant ton deuxième programme : "" erreur: paramètre de la variable AutoCAD rejeté: "dimstyle" "PROTO-COT-AXES" "" et ça n'a eu aucun effet sur les côtes.mais toujours avec un bémol : je ne suis pas sur de l'avoir bien utilisé d'autant plus que je ne connais pas la différence entre autolisp et vlisp :red: Merci beaucoup quand même. " Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres " Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 18 mars 2008 Partager Posté(e) le 18 mars 2008 juste une petite remarque si tu me permets, tout passe en "DuBloc" : lignes, textes, etc.Serait-il possible plutôt de tout faire passer en "DuCalque"? J'avais mis DuBloc parce que c'est la valeur par défaut et que pour une cote (comme pour un bloc) si les composants ont les propriétés flottantes (DuBloc), les changements sur la cote (ou le bloc) s'affichent.Si tu veux mettre les composant des cotes en DuCalque, remplace :(vlax-put d p 0)par :(vlax-put d p 256) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
salvanorigatore Posté(e) le 18 mars 2008 Auteur Partager Posté(e) le 18 mars 2008 Ok (gile),merci beaucoup pour l'info je comprends mieux maintenant :mad2: et merci encore pour le programme, il est déjà devenu indispensable.je pense qu'il mérite amplement sa place dans ta page de lisps! (ou dans une autre)enfin moi ce qu'en j'en dit... " Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres " Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 18 mars 2008 Partager Posté(e) le 18 mars 2008 Matt666, Si tu veux agir sur les propriétés des styles de cote, il faut modifier la liste entget de l'objet style de cote (tblobjname), pas celle retournée par tblnext ou tblsearch. Exemple pour remettre lignes et etextes en Dubloc dans tous les styles de cote : (while (setq ds (tblnext "DIMSTYLE" (not ds))) (setq elst (entget (tblobjname "DIMSTYLE" (cdr (assoc 2 ds))))) (entmod (append (vl-remove-if '(lambda (x) (member (car x) '(176 177 178))) elst ) '((176 . 0) (177 . 0) (178 . 0)) ) ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
Patrick_35 Posté(e) le 18 mars 2008 Partager Posté(e) le 18 mars 2008 Salut (gile)Je remarque que tu utilises maintenant ActiveSelectionSet :) Mais la question est qu'il est plus pratique d'utiliser un vlax-for ou un vlax-map-collection sur le jeu de sélection ?Car au test du benchmark, les deux instructions se tiennent :casstet: @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824 Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 18 mars 2008 Partager Posté(e) le 18 mars 2008 Salut Patrick_35, Je remarque que tu utilises maintenant ActiveSelectionSet :) Ce n'est pas si récent :) À l'occasion, fais une recheche dans les forums avec" vla-getActiveSelectioSet", mon pseudo y apparaît plus souvent que le tien ou relis ce message (pour une fois où je te faisais découvrir quelque chose) ;) À la question vlax-for vs vlax-map-collection, j'aurais tendance à dire que je fais plus souvent un vlax-for là où une fonction lambda serait nécessaire avec vlax-map-collection et que j'utilise ce dernier plutôt avec les fonction prédéfinies ou des defun. Mais ce n'est pas systématique... [Edité le 19/3/2008 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
sechanbask Posté(e) le 18 mars 2008 Partager Posté(e) le 18 mars 2008 en vba j'ai fait ça, c'est différent l'amplitude des taches est plus grand et correspond exactement à ceux dont mon BE avez besoin, si ça peux te convenir... c'est en cours de développement mais je sais que mes collègues sont assez content car ça fait le ménage...http://www.cijoint.fr/cjlink.php?file=cj200803/cijU1MabRc.zip voilà le post qui contient le suivit de l'outil : http://www.cadxp.com/sujetXForum-18505.htm [Edité le 18/3/2008 par sechanbask] ATEGIE - Bureau d'Études Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr Lien vers le commentaire Partager sur d’autres sites More sharing options...
salvanorigatore Posté(e) le 19 mars 2008 Auteur Partager Posté(e) le 19 mars 2008 Bonjour sechanbask,merci de ta contribution.Excuse mon incompétence mais je ne sais pas comment utiliser ton programme :( Peut-tu s'il te plait éclairer ma lanterne?Peut-on le lancer via une icône ou un menu contextuel?merci d'avance. " Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres " Lien vers le commentaire Partager sur d’autres sites More sharing options...
lili2006 Posté(e) le 19 mars 2008 Partager Posté(e) le 19 mars 2008 Bonjour à toutes et tous, Après avoir mis le fichier ""nettoyeur.dvb" dans un dossier support de AutoCAD, tu fais => Outils => Macro VBA => charger projet Ensuite, Outils => Macros => Exécuter (autorise l'ouverture des macros) Puis, tu choisis l'option la ou les options qui t'intéresse <!--url{0}--> => Ca marche super bien ! Merci encore sechanbask [Edité le 19/3/2008 par lili2006] Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
lili2006 Posté(e) le 19 mars 2008 Partager Posté(e) le 19 mars 2008 Re, J'suis déjà obsolète !! => <!--url{0}--> Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bred Posté(e) le 19 mars 2008 Partager Posté(e) le 19 mars 2008 Salut,dans le lisp de (gile), (vla-get-ActiveSelectionSet *acdoc*) est mis dans une variable.Il me semble que c'est inutile.non ?et si ça ne l'est pas, pourquoi ? merci. Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose... Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 19 mars 2008 Partager Posté(e) le 19 mars 2008 Salut Bred, C'est pour éviter ça, mais je n'ai pas vraiment testé l'efficacité ou l'utilité du procédé. EDIT: à y bien réfléchir, je pense que c'est effectivement inutile. [Edité le 19/3/2008 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
Patrick_35 Posté(e) le 19 mars 2008 Partager Posté(e) le 19 mars 2008 si ça ne l'est pas, pourquoi ? Cela permet de vider le jeu de sélection, car après plusieurs ActiveSelectionSet, j'ai un message d'erreur et plus de sélection possible. Le moyen que j'ai trouvé pour l'éviter, c'est donc de le vider. Ce n'est pas si récent :) J'ai pourtant vu plusieurs de tes lisps avec un traitement du jeu de sélection en pur autolisp.Peut-être pour qu'il reste plus accessible pour la compréhension. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824 Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 19 mars 2008 Partager Posté(e) le 19 mars 2008 si ça ne l'est pas, pourquoi ? Cela permet de vider le jeu de sélection, car après plusieurs ActiveSelectionSet, j'ai un message d'erreur et plus de sélection possible. Le moyen que j'ai trouvé pour l'éviter, c'est donc de le vider. Je ne suis pas sûr que ActiveSelectionSet soit une cause d'attente de la limite du nombre de jeu de sélections, il n'y a jamais qu'un jeu de sélection actif à la fois et il ne semble pas être ajouté à la collection s'il n'est pas contenu dans une variable. L'expression suivante fonctionne : (repeat 200 (ssget "x") (vlax-for o (vla-get-ActiveSelectionSet *acdoc*) (vla-Highlight o :vlax-true) ) (ssget "x") (vlax-for o (vla-get-ActiveSelectionSet *acdoc*) (vla-Highlight o :vlax-false) ) ) et (vla-get-count (vla-get-SelectionSets *acdoc*)) retourne 1 Par contre les suivantes échouent: (setq n 0) (repeat 200 (set (read (strcat "ss" (itoa (setq n (1+ n))))) (ssget "_X") ) ) et retourne:; erreur: dépassement du nombre maximum de jeux de sélection pour faire le ménage: (foreach pickset (vl-remove-if-not '(lambda (symbol) (eq 'pickset (type (eval symbol)))) (atoms-family 0) ) (set pickset nil) ) [Edité le 19/3/2008 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
Patrick_35 Posté(e) le 19 mars 2008 Partager Posté(e) le 19 mars 2008 Re, Je ne parlais pas du nombre de jeu de sélections, mais d'une erreur du type IAcadSelection et dès que j'utilisais un ssget, j'avais ce type de message d'erreur. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824 Lien vers le commentaire Partager sur d’autres sites More sharing options...
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