(gile) Posté(e) le 31 octobre 2007 Posté(e) le 31 octobre 2007 Salut à tous, Un grand merci (comme on dit chez nous) à Patrick_35 pour vlr-miscellaneous-reactor qui semble très bien fonctionner. Je modifie à nouveau le code (réponse 8) version 1.4 : - utilisation de vlr-miscellaneous-reactor ;- correction d'un dysfonctionnement quand le calque courant est coché ;- ajout d'une expression pour le chargement automatique. [Edité le 31/10/2007 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 4 novembre 2007 Posté(e) le 4 novembre 2007 Petite amélioration dans GetLayers. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 4 novembre 2007 Posté(e) le 4 novembre 2007 Bonjour à toutes et tous, (gile), j'ai testé la dernière version de "GELOBJ (version 1.6) 04/11/2007", et voici ce que me renvoi AutoCAD (V2008) => <!--url{0}--> <!--url{1}--> <!--url{2}--> Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 4 novembre 2007 Posté(e) le 4 novembre 2007 C'était un petit oubli, c'est réparé (version 1.7) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 4 novembre 2007 Posté(e) le 4 novembre 2007 Re, Ca marche du tonnère (gile). Une nouvelle requête : Est-ce possible de geler ou pas sur différentes fenêtres de l'EO ? Pourrait être pratique en 3D ? Je ne sais pas si c'est réalisable mais j'ai vu passer un post sur ce sujet récemment (Didier, je crois). Merci d'avance et bonne soirée. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 4 novembre 2007 Posté(e) le 4 novembre 2007 Je ne suis pas sûr que ce soit possible, en tous cas je ne sais pas faire (javais vu la demande). La routine ci-dessus gèle les calques quand on est dans l'onglet objet et les dégèle dans les onglets présentation, c'est le passage d'un onglet à l'autre qui lance le réacteur. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 4 novembre 2007 Posté(e) le 4 novembre 2007 Re, Merci pour tes éclaircissements (gile). Bonne fin de soirée. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Bred Posté(e) le 8 novembre 2007 Auteur Posté(e) le 8 novembre 2007 Salut,merci (gile).un "détail" :ne serait-il pas logique de rendre "incochable" les calques déjà gelée "normalement".Car si ils ont été gelé (en EO+EP), il y a forcément une raison qui rends inutile (et non logique) la possibilité de le rendre gelé uniquement en EO... Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
(gile) Posté(e) le 8 novembre 2007 Posté(e) le 8 novembre 2007 Salut Bred, Merci pour le test. J'ai essayé de répondre à ta remarque, ça semble fonctionner les calques gelés en EO+EP et le calque courant sont grisés dans la boite de dialogue (getLayers2). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Bred Posté(e) le 9 novembre 2007 Auteur Posté(e) le 9 novembre 2007 Et bien on atteinds (presque) la perfection !!!!... (le "presque" n'est en fait par pour toi, (gile), car je comprends que l'on ne peux pas faire autrement, et c'est du "chipotage" de ma part : lorsque l'on passe dans un onglet EP, on voit les objets du calque verrouillé en EO se dégeler.) Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
(gile) Posté(e) le 9 novembre 2007 Posté(e) le 9 novembre 2007 J'ai encore trouvé une situation où la mise à jour des listes de gelobj ne se faisait pas quand on dégelait un calque avec les commandes AutoCAD, c'est réparé. Il me semble avoir fait le tour de toutes les situations (version 2) mais rien n'est moins sur... Merci aux testeurs de me faire savoir les dysfonctionnements qu'ils pourraient rencontrer. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 9 novembre 2007 Posté(e) le 9 novembre 2007 J'en ai encore débusqué un : version 2.1 Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 10 novembre 2007 Posté(e) le 10 novembre 2007 Gelobj 2.1 est en téléchargement sur cette page Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
yodaguy Posté(e) le 29 novembre 2007 Posté(e) le 29 novembre 2007 Bonjours je suis tres interesse par ce lisp mais autocad affiche un message d'erreur la boite de dialogue est trop grande pour tenir à l'ecran .je suis debutant .merci La vitesse de la lumière étant supérieure à celle du son, beaucoup de gens paraissent brillants jusqu''à ce qu''ils ouvrent leur gueule...
lili2006 Posté(e) le 29 novembre 2007 Posté(e) le 29 novembre 2007 Bonjour à tous et toutes, Bienvenue yodaguy Tu dois alors avoir un sacré paquet de calques dans ton fichier,...(du moins, je pense !)Essayes avec un fichier plus "light", juste pour le test,... En attendant une réponse de (gile). Bonne soirée. [Edité le 29/11/2007 par lili2006] Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 29 novembre 2007 Posté(e) le 29 novembre 2007 Salut yodaguy, As tu chargé la dernière version ?Elle affiche les calques sur 1, 2, ou 3 colonnes suivant leur nombre, si ça ne suffit pas, je peux essayer d'ajouter une 4ème colonne mais je crains de dépasser la limite en largeur si des noms de calques sont un peu longs. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
yodaguy Posté(e) le 30 novembre 2007 Posté(e) le 30 novembre 2007 Bonjour merci de repondre si viteen effet avec un fichier plus light tout fonctionne , trop de calque .j'utilise la derniere version bonne journée [Edité le 30/11/2007 par yodaguy] La vitesse de la lumière étant supérieure à celle du son, beaucoup de gens paraissent brillants jusqu''à ce qu''ils ouvrent leur gueule...
(gile) Posté(e) le 2 décembre 2007 Posté(e) le 2 décembre 2007 J'ai modifié la routine GetLayers : ajout d'une quatrième colonne à partir de 45 calques. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
yusukens82 Posté(e) le 21 décembre 2007 Posté(e) le 21 décembre 2007 Bravo, Bravo Rien n’à redire, ça marche super bien.J’ai encore du mal à y croire qu'un tel lisp peut basculer ainsi l'utilisation d'autocad. :)
sigecom Posté(e) le 31 juillet 2008 Posté(e) le 31 juillet 2008 bonjour, quelle est le nbre maxi de calques? (marche pas avec 331 calques) ne pourrait on pas récupérer la liste filtrée de calques?
lili2006 Posté(e) le 31 juillet 2008 Posté(e) le 31 juillet 2008 Bonjour à toutes et tous, Peut-être une alternative à ton problème ? Trouvé dernièrement sur le forum Autodesk France. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 31 juillet 2008 Posté(e) le 31 juillet 2008 Salut sigecom et bienvenue sur CADxp, J'ai essayé de faire quelque chose avec des list_box à choix multiple, il ne devrait plus y avoir de problème d'affichage.Dans la liste "Geler" ne sont affichés que les calques dégelés à sélectionner pour les geler dans l'EO.Dans la liste "Dégeler, ne sont affichés que les calques gelés dans l'EO avec msfreeze. Les sélectionner pour les dégeler. Au premier lancement de msfreeze seule la liste "Geler" apparaît (normal !)http://img179.imageshack.us/img179/1968/msf2gf2.png Si des calques ont été gelés avec msfreeze, on a les 2 listeshttp://img292.imageshack.us/img292/6683/msf2tc5.png EDIT : corrections mineures ;; MSFREEZE R1.3 (gile) 24/08/2008 ;; Pour geler des calques spécifiés uniquement dans l'onglet objet ;; Merci à Patrick_35 pour vlr-miscellaneous-reactor ;;; ;;; Modification ;;; 23/08/08 : ajout de la possibilité de sélectionner des calques à l'écran (defun c:msfreeze (/ lst th fr) (vl-load-com) (or *acdoc* (setq *acdoc* (vla-get-activeDocument (vlax-get-acad-object))) ) (or *layers* (setq *layers* (vla-get-layers *acdoc*))) (if (= (getvar "TILEMODE") 1) (progn (foreach l (vlax-ldata-get "MSpaceFreeze" "frozen") (and (getItem *layers* l) (= (vla-get-Freeze (vla-item *layers* l)) :vlax-true) (setq th (cons l th)) ) ) (or *MSpaceFreeze* (setq *MSpaceFreeze* (vlr-miscellaneous-reactor nil '((:vlr-layoutSwitched . msfreezerea)) ) ) ) (setq fr (vl-remove (getvar "clayer") (mapcar 'vla-get-Name (vl-remove-if (function (lambda (x) (= (vla-get-Freeze x) :vlax-true) ) ) (vlax-for l *layers* (setq lst (cons l lst)) ) ) ) ) ) (setq lst (MSFreezeBox (vl-sort fr ' (foreach l (cadr lst) (vla-put-Freeze (vla-item *layers* l) :vlax-false) (setq th (vl-remove l th)) ) (foreach l (car lst) (vla-put-Freeze (vla-item *layers* l) :vlax-true) (setq th (cons l th)) ) (vlax-ldata-put "MSpaceFreeze" "frozen" th) (or th (progn (vlr-remove *MSpaceFreeze*) (setq *MSpaceFreeze* nil) ) ) (vla-regen *acdoc* acAllViewports) ) (alert "Vous devez être dans l'onglet objet pour lancer GELOBJ." ) ) (princ) ) ;;=========================================================;; (defun MsFreezeRea (rea lay / false true th) (setq th (vlax-ldata-get "MSpaceFreeze" "frozen")) (vlax-for l *layers* (if (= (vla-get-Freeze l) :vlax-false) (setq false (cons (vla-get-Name l) false)) (setq true (cons (vla-get-Name l) true)) ) ) (cond ((= (car lay) "Model") (foreach l th (if (or (= (getvar "CLAYER") l) (= (vla-get-Freeze (vla-item *layers* l)) :vlax-true) ) (vlax-ldata-put "MSpaceFreeze" "frozen" (vl-remove l th)) (vla-put-Freeze (vla-item *layers* l) :vlax-true) ) ) (setq *FromPaperSpace* nil) ) (T (if (not *FromPaperSpace*) (progn (foreach l (common th false) (vlax-ldata-put "MSpaceFreeze" "frozen" (vl-remove l th) ) ) (foreach l th (vla-put-Freeze (vla-item *layers* l) :vlax-false) ) ) ) (setq *FromPaperSpace* T) ) ) (vla-regen *acdoc* acAllViewports) ) ;;=========================================================;; ;;; GetItem (gile) ;;; Retourne le vla-object de l'item s'il est présent dans la collection ;;; ;;; Arguments ;;; col : la collection (vla-object) ;;; name : le nom de l'objet (string) ou son indice (entier) ;;; ;;; Retour : le vla-object ou nil (defun GetItem (col name / obj) (vl-catch-all-apply '(lambda () (setq obj (vla-item col name))) ) obj ) ;;=========================================================;; ;;; COMMON (gile) ;;; Retourne la liste des éléments communs à lst1 et lst2 ;;; (COMMON '(1 2 3 4) '( 2 3 4 5)) -> (2 3 4) (defun common (l1 l2) (if l1 (if (member (car l1) l2) (cons (car l1) (common (cdr l1) l2)) (common (cdr l1) l2) ) ) ) ;;=========================================================;; ;;; SUBLIST (gile) ;;; Retourne une sous-liste ;;; ;;; Arguments ;;; lst : une liste ;;; start : l'index de départ de la sous liste (premier élément = 0) ;;; leng : la longueur (nombre d'éléments) de la sous-liste (ou nil) ;;; ;;; Exemples : ;;; (sublist '(1 2 3 4 5 6) 2 2) -> (3 4) ;;; (sublist '(1 2 3 4 5 6) 2 nil) -> (3 4 5 6) (defun sublist (lst start leng / n r) (if (or (not leng) ( (setq leng (- (length lst) start)) ) (setq n (+ start leng)) (repeat leng (setq r (cons (nth (setq n (1- n)) lst) r)) ) ) ;;=========================================================;; ;; MSFreezebox (gile) ;; Boite de dialogue (defun MSFreezebox (fr th / len tmp file dcl_id freeze thaw ret ss lay lst frv thv pos ) (setq len (max (length fr) (length th)) tmp (vl-filename-mktemp "tmp.dcl") file (open tmp "w") ) (write-line "MSFreezbox:dialog{label=\"Geler dans l'espace objet\";:row{" file ) (if fr (write-line (strcat ":list_box{label=\"Geler\";key=\"freeze\"; multiple_select=true;width=40;height=" (cond (( (( (T "10") ) ";}" ) file ) ) (if th (write-line (strcat ":list_box{label=\"Dégeler\";key=\"thaw\"; multiple_select=true;width=40;height=" (cond (( (( (T "10") ) ";}" ) file ) ) (write-line (strcat "}" (if fr ":button{key=\"sel\";label=\"Sélection >>\";fixed_width=true;}" "" ) "spacer;ok_cancel;}" ) file ) (close file) (setq dcl_id (load_dialog tmp) what_next 2 frv "" thv "" ) (while ( (if (not (new_dialog "MSFreezbox" dcl_id)) (exit) ) (and fr (start_list "freeze") (mapcar 'add_list fr) (end_list) ) (and th (start_list "thaw") (mapcar 'add_list th) (end_list) ) (or (= frv "") (set_tile "freeze" frv)) (or (= thv "") (set_tile "thaw" thv)) (action_tile "freeze" "(setq frv $value)") (action_tile "thaw" "(setq thv $value)") (action_tile "sel" "(done_dialog 3)") (action_tile "accept" "(or (not (setq ret (get_tile \"freeze\"))) (= ret \"\") (foreach n (str2lst ret \" \") (setq freeze (cons (nth (atoi n) fr) freeze)))) (or (not (setq ret (get_tile \"thaw\"))) (= ret \"\") (foreach n (str2lst ret \" \") (setq thaw (cons (nth (atoi n) th) thaw)))) (done_dialog 1)" ) (setq what_next (start_dialog)) (if (= 3 what_next) (if (ssget (list (cons 8 (strcat "~" (getvar "clayer"))))) (progn (vlax-for o (setq ss (vla-get-ActiveSelectionSet *acdoc*)) (or (member (setq lay (vla-get-Layer o)) lst) (setq lst (cons (vla-get-Layer o) lst)) ) (foreach n lst (and (setq pos (vl-position n fr)) (or (vl-string-search (strcat " " (itoa pos) " ") frv) (setq frv (strcat frv " " (itoa pos))) ) ) ) ) (vla-delete ss) ) ) ) ) (unload_dialog dcl_id) (vl-file-delete tmp) (list freeze thaw) ) ;;=========================================================;; ;; Chargement au démarrage (acaddoc.lsp ou MNL) (and (not *MSpaceFreeze*) (vlax-ldata-get "GelerOngletObjet" "toggled") (or *acdoc* (setq *acdoc* (vla-get-activeDocument (vlax-get-acad-object))) ) (or *layers* (setq *layers* (vla-get-layers *acdoc*))) (setq *MSpaceFreeze* (vlr-miscellaneous-reactor nil '((:vlr-layoutSwitched . msfreezerea)) ) ) ) [Edité le 1/8/2008 par (gile)] [Edité le 24/8/2008 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
PHILPHIL Posté(e) le 31 juillet 2008 Posté(e) le 31 juillet 2008 hello bon la je vais vraiment polluer autocad offre moults possibilité de bosseret d'avoir chacun sa méthode de travail vue que l'on est 40000 inscrits ca fait pas mal de méthodes pour éclairer ma lanterne vous pouvez me donner un exempleou le non moins génial LISp de gile serait utile ?? je précise je ne travail quand espace objet avec énormement de calque tous nommés explicitementles presentations ( EP) ne me servent qu'aux cartouches et aux fenetres EO bonne nuit phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
(gile) Posté(e) le 31 juillet 2008 Posté(e) le 31 juillet 2008 D'après ce que tu dis, tu cotes dans l'espace objet, tu peux donc, par exemple, geler certains calques de cotes dans l'EO qui seront automatiquement dégelés quan tu repasses en EP. Autre exemple, si tu fais de la 3D et que tu utilises SOLPROF ou SOLVIEW/SOLDRAW ou encore APLANIRGEOM, toutes ces commandes génèrent des objets 2d (et parfois sur des calques spécifiques) à partir de solides 3d. Ces objets 2d servent dans les présentations mais "polluent" (et pour le coup, c'est vrai) l'EO. Il peut être interessant que ces calques soient gelés en EO mais pas en EP. Ce LISP répondait à une demande de Bred, s'il passe par là, il pourra t'en dire plus. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
PHILPHIL Posté(e) le 31 juillet 2008 Posté(e) le 31 juillet 2008 hello ok en effet tres utiles en effet pour la 3d ca me vas comme explicationet puis je trouverai bien une utilité t'en fait pas merci phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
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