PHILPHIL Posté(e) le 5 novembre 2022 Posté(e) le 5 novembre 2022 Hello. peut on récupérer la liste des noms de l'etat de calques, pour ensuite dans une fenetre en sélectionner un, en LISP ? peut on acceder a l'espace objet d'une fenetre de présentation sans l'ouvrir ( sans devoir aller dans l'onglet de présentation en restant dans l'onglet objet ), et faire la fonction -calque pour modifier, restaurer l'etat de calque ? pour aller plus sans devoir passer en revue tous les onglets de présentations. a+ Phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
GEGEMATIC Posté(e) le 9 novembre 2022 Posté(e) le 9 novembre 2022 Salut copier/coller manuel d'une fenêtre à l'autre: tu peux remplacer px_setvar1 et 2 par setvar ;;************************************************************************** ;§/calques/ lit l'état gelé-libéré fen courante d'un viewport et génere la chaine layer-string-state/none ;;inspiré de Paul Turvill (defun c:PickReferenceViewport (/ v2 frz flist l1 n is-viewport) (command "_pspace") (while (not is-viewport) (prompt "\nSelectionnez la fenêtre de référence pour l'état de calques" ) (setq v2 (ssname (ssget ":s" '((0 . "viewport"))) 0) ;;; (car ;;; (entsel ;;; "\nSelectionnez la fenêtre de référence pour l'état de calques" ;;; ) ;;; ) ) ;;pick the viewport (if (= "VIEWPORT" (cdr (assoc 0 (entget v2)))) (setq is-viewport T) (prompt "\nNot a viewport, please select a viewport") ) ) (setq frz (cdadr (assoc -3 (entget v2 (list "acad"))))) ;;...and frz will contain the viewport's extended data, with each frozen ;;viewport as the argument of a different "1003" code group. ;;To get a comma-delimited list of the frozen viewports, use: (setq flist nil) (foreach n frz (if (= (car n) 1003) (setq L1 (cdr n) ;; flist (strcat flist L1 ",") flist (cons L1 flist) ) ) ;;if ) ;;flist ;;Any layer not contained in flist is thawed in the selected viewport. (setq layer-string-state flist) (vl-propagate 'layer-string-state) ) ;;************************************************************************** ;§/calques/ restaure l'état gelé-libéré fen courante à un autre viewport à partir de la chaine layer-string-state/none (defun c:PickTargetViewport (/ v2 nvport is-viewport) (while (not is-viewport) (prompt "\nSelectionnez la fenêtre cible pour l'état de calques") (setq v2 (ssname (ssget ":s" '((0 . "viewport"))) 0) ;;; (car ;;; (entsel ;;; "\nSelectionnez la fenêtre cible pour l'état de calques" ;;; ) ;;; ) ) ;;pick the viewport (if (= "VIEWPORT" (cdr (assoc 0 (setq eg (entget v2))))) (setq is-viewport T) (prompt "\nNot a viewport, please select a viewport") ) ) (setq nvport (cdr (assoc 69 eg))) (command "_mspace") (pw_setvar "cvport" nvport) (command "_VPLAYER" "_thaw" "*" "" "") (command "_VPLAYER") (foreach l layer-string-state (if (tblsearch "LAYER" l) (command "_freeze" l "") ) ) (command "") (command "_pspace") ) Pour un truc entièrement automatisé, je peux pas te donner un truc tout en un, sauf a ce que tu installe PowerClic, qui n'a pas forcément été mis à jour, désolé, mais voilà ce que j'ai: Il y a un sujet cadxp qui m'a aidé d'après le commentaire. ;;************************************************************************** ;§/Calques/propage à la 1ère active fenêtre des présentation sélectionnées un état de calque en utilisant les vues/none ;;demande d'aide: http://cadxp.com/topic/48468-assigner-un-etat-de-calque-a-un-viewport/page__pid__289778#entry289778 ;;technique alternative : PickReferenceViewport, PickTargetViewport (defun c:propage_etat_calque (/ bl lpres l eg) ;;etat de calque (optionnel) (if (setq letatcalq (pw_liste_layerState)) (progn (pw_bydefault "pw-ac-layerstate" '("aucun")) (setq pw-ac-layerstate (pw_s_lchaines3 "Choisissez un état de calque à restaurer: " (cons "aucun" letatcalq) nil pw-ac-layerstate ) ) ) ) (setq lpres (layoutlist)) (pw_bydefault "masq-calq" "*") (pw_getstringmem "\nMasque de calque pour la sélection de la fenêtre ?" "masq-calq") (pw_bydefault "l-pres" lpres) (setq l-pres (pw_s_lchaines3 "Choisir les présentations auxquelles propager l'état de calque" lpres T l-pres)) (setq colViews (vla-get-views pw-acaddocument)) (command "_pspace") (foreach l l-pres (command "_layout" "_set" l) (command "_pspace") (if (setq sel (ssget "x" (list '(0 . "viewport") (cons 8 masq-calq) (cons 410 (getvar "CTAB"))))) (progn ;(setq lvp (pw_listsel sel)) ;(foreach vp lvp ; (setq vobj (pw_to_object vp)) (command "_mspace") ;;ci dessous plante si la vue existe déjà (command "_view" "_save" l) (setq vobj (vla-item colViews l)) ;;(setq vobj (vla-add colViews l))_ne arche pas dans l'espace paier (vlax-put-property vobj 'LayerState (car pw-ac-layerstate)) ;;(vla-SetView (vla-get-ActivePViewport pw-acaddocument) vobj);_ne marche pas pour le pviwport (command "_view" "_restore" l) ;;(vla-delete vobj);_ne marche pas : si je supprime la vue, je perds l'état de calque (command "_pspace") ;) ) ) ) ;_foreach ) ----------------------------------------------------------------------Site: https://www.g-eaux.frBlog: http://g-eaux.over-blog.com
PHILPHIL Posté(e) le 9 novembre 2022 Auteur Posté(e) le 9 novembre 2022 hello OK merci je vais regarder ca Phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
PHILPHIL Posté(e) le 8 septembre 2023 Auteur Posté(e) le 8 septembre 2023 Bonjour a tester PROPAGE_FREEZE_calqueS_dans_fenetres Ca récupère la liste des calques qui sont "freeze" dans une fenêtre et le propage dans les fenetres sélectionner dans les présentations PROPAGE FREEZE CALQUE DANS FENETRES.LSP il faut installer vplayerlisp de Gile on doit pouvoir propager autre chose que FREEZE des calques, pour peu que l'on récupère les paramètres du calque a+ 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