La Lozère Posté(e) le 1 octobre 2009 Partager Posté(e) le 1 octobre 2009 Bonjour,Quelqu'un aurait-il dans sa "valise", une routine permettant d'inverser l'état de visibilité des calques.Ainsi une routine qui rendrait tous les calques inactif/geler en actif/dégeler et tous les calques actif/dégeler en inactif ou geler.je sais pas si j'ai été clair. J'ai cherché dans les routines de (gile) et patrick_35 mais je n'ai rien trouvé. Merci. www.cad-is.fr Autocad Map 2021 - Covadis/Autopiste V18.0c Pisser sous la douche ne suffira pas Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 1 octobre 2009 Partager Posté(e) le 1 octobre 2009 Salut, Et pour le calque courant ?... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 1 octobre 2009 Partager Posté(e) le 1 octobre 2009 Hello En effet voici une routine qui peut s'averer interessante, mais (a mon avis) On ne touche pas au calque ZERO NI au calque COURANT Qu'en pensez vous ? Le Decapode Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 1 octobre 2009 Partager Posté(e) le 1 octobre 2009 ReHello Et les calques verrouilles, on fait quoi ? Une petite question peut etre :Inverser la visibilite des calques verrouilles (Oui/Non) Defaut = Non ! Le Decapode Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
La Lozère Posté(e) le 1 octobre 2009 Auteur Partager Posté(e) le 1 octobre 2009 Je rajoute le pourquoi de ma demande.Pour monter un projet, je travail avec un fichier que l'on va appeler "calcul".Et lorsque je dois envoyer le résultat de mon travail au client, après un "enregistrer sous..." je fais le ménage. Et tous les éléments nécessaire aux calculs (MNT, lignes de constructions, etc...) je les efface. Pour faire cela, j'inverse l'état de visibilité des calques, et je supprime tous ce qui est devenu visible, et je ré-active tous les calques. Pour le calque courant, je rend courant un des calques que je rend visible et donc je peux geler "l'ancien" calque courant. Pour le calque 0, en faisant la manip ci-dessus, il peut être gelé.Normalement, si j'ai bien travaillé, il ne devrait rien y avoir dessus. Mais bon, rien est moins sur..... Pour les calques verrouillés, si ils sont inactifs/gelés, il faudra les déverrouiller avant de les rendre visible. Merci à vous. www.cad-is.fr Autocad Map 2021 - Covadis/Autopiste V18.0c Pisser sous la douche ne suffira pas Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 1 octobre 2009 Partager Posté(e) le 1 octobre 2009 Un premier jet qui répond au cahier des charges du crabe.Pour adat-btp, il me semble que la commande LAYDEL devrait faire l'affaire... (defun c:toglay (/ acdoc clay lock name) (vl-load-com) (setq acdoc (vla-get-Activedocument (vlax-get-acad-object)) clay (getvar 'clayer) ) (initget "Oui Non") (if (/= "Oui" (setq lock (getkword "\nTraiter les calques verrouillés ? [Oui/Non] : ") ) ) (setq lock "Non") ) (vlax-for l (vla-get-Layers acdoc) (setq name (vla-get-Name l)) (if (and (/= name "0") (/= name clay) (or (= "Oui" lock) (= (vla-get-Lock l) :vlax-false)) ) (if (and (= (vla-get-LayerOn l) :vlax-true) (= (vla-get-Freeze l) :vlax-false) ) (vla-put-Freeze l :vlax-true) (progn (vla-put-Freeze l :vlax-false) (vla-put-LayerOn l :vlax-true) ) ) ) ) (vla-regen acdoc acAllViewports) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
La Lozère Posté(e) le 2 octobre 2009 Auteur Partager Posté(e) le 2 octobre 2009 Salut,Merci (gile), super ton bout de code, il se rapproche énormément de ce que je recherche.Juste une chose, je vais parler dans mon langage, mais pour moi, il suffirait, de définir courant un des calques qui est normalement geler ou inactif (le 1er dans la liste alphabétique par exemple), et ensuite de lancer le code en l'appliquant sur tous les calques, le calque 0 et l'ancien calque courant, y compris. De plus, (gile), sauf à mal utiliser la commande LAYDEL, mais elle ne fait que supprimer les calques dans leurs ensemble. Et pour l'utiliser, soit, on clic les objets des calques que l'on souhaite supprimer, soit on les sélectionne dans une liste.Dans le premier cas, il faudrait inverser la visibilité pour sélectionner les calques,Et dans le deuxième il faudrait connaître leurs noms, et il peut y en avoir plusieurs 10aine.Donc, pour moi, la commande LAYDEL ne convient pas. Encore merci.A plus. www.cad-is.fr Autocad Map 2021 - Covadis/Autopiste V18.0c Pisser sous la douche ne suffira pas Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 2 octobre 2009 Partager Posté(e) le 2 octobre 2009 Salut, Celui_là devrait répondre à ta demande. (defun c:toglay (/ acdoc layers clay lock name) (vl-load-com) (setq acdoc (vla-get-Activedocument (vlax-get-acad-object)) layers (vla-get-Layers acdoc) ) (vlax-for l layers (if (and (not clay) (or (= (vla-get-LayerOn l) :vlax-false) (= (vla-get-Freeze l) :vlax-true) ) [surligneur](not (wcmatch (vla-get-Name l) "*|*"))[/surligneur] ) (progn (vla-put-Freeze l :vlax-false) (vla-put-LayerOn l :vlax-true) (setvar 'clayer (setq clay (vla-get-Name l))) ) ) ) (if clay (progn (vlax-for l layers (setq name (vla-get-Name l)) (if (and (= (vla-get-LayerOn l) :vlax-true) (= (vla-get-Freeze l) :vlax-false) ) (vl-catch-all-apply 'vla-put-Freeze (list l :vlax-true)) (progn (vla-put-Freeze l :vlax-false) (vla-put-LayerOn l :vlax-true) ) ) ) (vla-regen acdoc acAllViewports) ) (princ "\nAucun calque gelé ou désactivé.") ) (princ) ) Avec LAYDEL, tu peux sélectionner plusieurs calques dans la liste. si tes calques de construction avaient un même préfixe, ils seraient très facile à sélectionner et donc de supprimer ces calques et tout ce qu'il y a dessus en une seule fois... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
La Lozère Posté(e) le 20 octobre 2009 Auteur Partager Posté(e) le 20 octobre 2009 Salut,Désolé (gile), je n'avais pas vu ta réponse.Je viens de tester ton proget voilà ce qu'il me renvoi: Commande: toglay; erreur: paramètre de la variable AutoCAD rejeté: CLAYER "X_CAD_Fond de plan-ALLEGE|GEOS_INSTALLATIONS-TCMC" Les X-ref ne poseraient-ils pas un problème? De plus,J'ai bricolé ton précédent code [surligneur](En jaune)[/surligneur] pour arriver à ce que je voulais. Ce n'est pas très orthodoxe, mais ça marche. En fait, j'utilise ton code pour une permière commande qui en même temps sauvegarde l'état des calques. Et une fois l'opération effectué, je restore l'état des calques via une autre commande. Ceci pour palier le risque de réactiver des calques d'X-ref gelés ou inactifs. Il faut juste que je rajoute la suppression de l'état de calques sauvegardé à la fin de la commande, plus un ou 2 trucs. (defun c: [surligneur] togon [/surligneur] (/ acdoc clay lock name) [surligneur] (command "clayer" "0") [surligneur](command "-calque" "in" "0" "o" "")[/surligneur] (command "-calque" "A" "E" "toglay" "" "" "")[/surligneur] (vl-load-com) (setq acdoc (vla-get-Activedocument (vlax-get-acad-object)) clay (getvar 'clayer) ) (initget "Oui Non") (if (/= "Oui" (setq lock (getkword "\nTraiter les calques verrouillés ? [Oui/Non] : " ) ) ) (setq lock "Non") ) (vlax-for l (vla-get-Layers acdoc) (setq name (vla-get-Name l)) (if (and (/= name "0") (/= name clay) (or (= "Oui" lock) (= (vla-get-Lock l) :vlax-false)) ) (if (and (= (vla-get-LayerOn l) :vlax-true) (= (vla-get-Freeze l) :vlax-false) ) (vla-put-Freeze l :vlax-true) (progn (vla-put-Freeze l :vlax-false) (vla-put-LayerOn l :vlax-true) ) ) ) ) (vla-regen acdoc acAllViewports) (princ) ) [surligneur] (defun c:togoff () (command "-calque" "A" "R" "toglay" "" "")[/surligneur] ) Mais, cela m'intéresserais de voir ce que fais ton dernier prog une fois qu'il fonctionne, car j'avoue que ce que j'ai fait est du bricolage.Il faudrait que je me penche plus sur la programmation LISP, cela commence à bien m'intéressait.A plus [Edité le 20/10/2009 par adat-btp] www.cad-is.fr Autocad Map 2021 - Covadis/Autopiste V18.0c Pisser sous la douche ne suffira pas Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 20 octobre 2009 Partager Posté(e) le 20 octobre 2009 Salut, J'ai modifié le code pour les calques des xrefs soient écartés pour le nouveau calque courant. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
La Lozère Posté(e) le 20 octobre 2009 Auteur Partager Posté(e) le 20 octobre 2009 Merci (gile),Ça marche nickel, t'es un chef. A plus. www.cad-is.fr Autocad Map 2021 - Covadis/Autopiste V18.0c Pisser sous la douche ne suffira pas 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