tchetchi Posté(e) le 17 juin 2021 Posté(e) le 17 juin 2021 Bonjour à tous, Je me tourne vers vous pour savoir si vous connaissez une fonction ou un lisp permettant de gérer les tables de styles de tracé. Mes recherches ne m'ont pas permis de trouver ce que je cherche. Je m'explique Nous travaillons avec des styles de tracés en .ctb (j'ai déjà entendu parlé des .stb mais il faudrait que je cherche un tuto pour les utiliser mais là n'est pas la question). Nous avons des styles à appliquer pour une impression au 100e, au 50e, au 20e etc... Et pour certains projet particulier nous pouvons créer une variante du style de base. Lors des changements d'échelle des dessins il faut à chaque présentation bien vérifier que le style de tracé appliqué correspond à l'échelle du dessin. Ce qui peut être long et source d'étourderies. (j'imagine qu'avec les stb le problème est le même) Je connais le lisp MPL de Patrick 35 qui est top et qui fait un peu ce que je souhaiterais mais il n'est pas complètement adapté. En effet, les styles peuvent être appliqués à des pages ayant des formats différents, or MPL les modifie. Du coup ma question est : existe-t-il un moyen de propager uniquement un style de tracé sur plusieurs présentations (si on pouvait également activer l'option afficher les styles de tracés par la même occasion ça serait encore mieux)? Si ce n'est pas possible est-il possible d'obtenir un tableau avec le nom des présentations et le nom du style de tracé attribué afin de vérifier avant de faire les modifs sur les pages en question. J'espère être suffisamment claire. Je vous remercie grandement par avance pour toute les pistes de réflexions que vous pourrez m'amener. Bonne journée
PHILPHIL Posté(e) le 2 mai 2023 Posté(e) le 2 mai 2023 hello tchetchi un truc comme ca ? (defun c:info_presentation (/ listefen ) (setq listefen nil ) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vlax-for lay (vla-get-layouts doc) (if (/= (vla-get-name lay) "Model") (progn (setq test33 lay table1 (vla-get-stylesheet lay) li1 (strcat (vla-get-name lay) " [ " table1 " ]" " " ) ) (setq listefen (cons li1 listefen)) ) ) ) (getlviewport1 listefen "LISTE DES ONGLETS PRESENTATIONS ET STYLE DE TRACE" t) (princ) ) ;; (gile) 03/12/07 ;; Retourne la liste des présentations choisies dans la boite de dialogue ;; ;; arguments ;; titre : titre de la boite de dialogue ou nil, défauts = Choisir la (ou les) présentation(s) ;; mult : T ou nil (pour choix multiple ou unique) (defun getlviewport1 (listefen titre mult / tmp file ret) (setq tmp (vl-filename-mktemp "tmp.dcl") file (open tmp "w") ) (write-line (strcat "getlviewport1:dialog{label=" (if titre (vl-prin1-to-string titre) (if mult "\"Choisir les présentations du fichier\"" "\"Choisir une présentation\"" ) ) ";:list_box{height = 100;key=\"lst\";multiple_select=" (if mult "true;width = 100;}:row{:retirement_button{label=\"Toutes\";key=\"all\";} ok_button;cancel_button;}}" "false;}ok_cancel;}" ) ) file ) (close file) (setq dcl_id (load_dialog tmp)) (if (not (new_dialog "getlviewport1" dcl_id)) (exit) ) (start_list "lst") (mapcar 'add_list listefen) (end_list) (action_tile "all" "(setq ret (reverse listefen)) (done_dialog)") (action_tile "accept" "(or (= (get_tile \"lst\") \"\") (foreach n (str2lst (get_tile \"lst\") \" \") (setq ret (cons (nth (atoi n) listefen) ret)))) (done_dialog)" ) (start_dialog) (unload_dialog dcl_id) (vl-file-delete tmp) (reverse ret) ) Phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
PHILPHIL Posté(e) le 2 mai 2023 Posté(e) le 2 mai 2023 hello ou un truc comme ca c:MCTB ;;;================================================================= ;;; ;;; mctb.LSP V1.01 ;;; ;;; Changer LE STYLE DES CTB DANS LES Présentations ;;; ;;; Copyright (C) Patrick_35 ;;; ;;;================================================================= (defun c:mctb(/ s *errmctb* MsgBox) ;;;--------------------------------------------------------------- ;;; ;;; Gestion des erreurs ;;; ;;;--------------------------------------------------------------- (defun *errmctb* (msg) (if (/= msg "Function cancelled") (if (= msg "quit / exit abort") (princ) (princ (strcat "\nErreur : " msg)) ) (princ) ) (setq *error* s) (vla-endundomark (vla-get-activedocument (vlax-get-acad-object))) (princ) ) ;;;--------------------------------------------------------------- ;;; ;;; Message ;;; ;;;--------------------------------------------------------------- (defun MsgBox (Titre Bouttons Message / Reponse WshShell) (vl-load-com) (setq WshShell (vlax-create-object "WScript.Shell")) (setq Reponse (vlax-invoke WshShell 'Popup Message 7 Titre (itoa Bouttons))) (vlax-release-object WshShell) Reponse ) ;;;--------------------------------------------------------------- ;;; ;;; Routine principale ;;; ;;;--------------------------------------------------------------- (defun multiplie_pre (/ config doc init_mctb lay liste_lay n position positiondests resultat stylenames ) (if (findfile "mctb.dcl") (progn (setq init_mctb (load_dialog (findfile "mctb.dcl"))) (setq liste_lay nil n 0 position "0" positiondest "0" doc (vla-get-activedocument (vlax-get-acad-object)) ) (setq stylenames (vl-remove-if '(lambda(x) (eq (vl-filename-extension x) ".stb")) (vlax-invoke (vla-get-layout (vla-get-modelspace doc)) 'getplotstyletablenames))) ;;; filtrer pour retirer les *.stb ;;; (setq stylenames (vlax-safearray->list (vlax-variant-value (vla-getplotstyletablenames (vla-get-layout (vla-get-modelspace doc)))) ) ) ;;; pas de flitre et prend les *.stb et *.ctb (if (vl-position "Aucun" stylenames) (setq stylenames (vl-remove "Aucun" stylenames)) ) (vlax-for lay (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object))) (setq lst (append lst (list (cons (vla-get-taborder lay) lay)))) ) ;;; ;; List all the entries in the plot style table ;;; (setq styleNames (vlax-variant-value (vla-GetPlotStyleTableNames Layout))) ;;; (while (assoc n lst) ;;; (setq liste_lay (append liste_lay (list (vla-get-name (cdr (assoc n lst)))))) ;;; (setq n (1+ n)) ;;; ) (while (assoc n lst) (if (/= (vla-get-name (cdr (assoc n lst))) "Model") (setq liste_lay (append liste_lay (list (strcat (vla-get-name (cdr (assoc n lst))) " - [ "(vla-Get-Stylesheet (cdr (assoc n lst)))" ]" )))) ) (setq n (1+ n)) ) ;;; (if (vl-position "Model" liste_lay) ;;; (setq liste_lay (vl-remove "Model" liste_lay)) ;;; ) (new_dialog "mctb" init_mctb "") (start_list "mctb") (mapcar 'add_list stylenames) (end_list) (start_list "dest") (mapcar 'add_list liste_lay) (end_list) (set_tile "titre" "Sélection CTB V1") (set_tile "mctb" position) (set_tile "dest" positiondest) (mode_tile "mctb" 2) (while (and (/= resultat 1) (/= resultat 0)) (action_tile "mctb" "(setq position $value)") (action_tile "dest" "(setq positiondest $value)") (action_tile "accept" "(done_dialog 1)") (action_tile "cancel" "(done_dialog 0)") (setq resultat (start_dialog)) ) (unload_dialog init_mctb) (if (eq resultat 1) (while (not (eq positiondest "")) (setq n (read positiondest)) (vlax-for lay (vla-get-layouts doc) (if (eq (nth n liste_lay) (strcat (vla-get-name lay) " - [ "(vla-Get-Stylesheet lay)" ]" )) (progn (vla-put-stylesheet lay (nth (atoi position) stylenames)) (princ (strcat "\nPrésentation " (vla-get-name lay) " Configurée avec le CTB " (nth (atoi position) stylenames)) ) ) ) ) (setq positiondest (substr positiondest (+ 2 (strlen (itoa n))) (strlen positiondest))) ) ) ) (msgbox "mctb" 16 "Fichier mctb.DCL introuvable") ) (c:info_presentation) ) ;;;--------------------------------------------------------------- ;;; ;;; Routine de lancement ;;; ;;;--------------------------------------------------------------- (vl-load-com) (setq s *error*) (setq *error* *errmctb*) (vla-startundomark (vla-get-activedocument (vlax-get-acad-object))) (multiplie_pre) (vla-endundomark (vla-get-activedocument (vlax-get-acad-object))) (setq *error* s) (princ) ) (setq nom_lisp "mctb") (if (/= app nil) (if (= (strcase (substr app (1+ (- (strlen app) (strlen nom_lisp))) (strlen nom_lisp))) nom_lisp) (princ (strcat "..." nom_lisp " chargé.")) (princ (strcat "\n" nom_lisp ".LSP Chargé.....Tapez " nom_lisp " pour l'éxecuter."))) (princ (strcat "\n" nom_lisp ".LSP Chargé......Tapez " nom_lisp " pour l'éxecuter."))) (setq nom_lisp nil) (princ) (defun c:info_presentation (/ listefen ) (setq listefen nil ) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vlax-for lay (vla-get-layouts doc) (if (/= (vla-get-name lay) "Model") (progn (setq test33 lay table1 (vla-get-stylesheet lay) li1 (strcat (vla-get-name lay) " [ " table1 " ]" " " ) ) (setq listefen (cons li1 listefen)) ) ) ) (getlviewport1 listefen "LISTE DES ONGLETS PRESENTATIONS ET STYLE DE TRACE" t) (princ) ) ;; (gile) 03/12/07 ;; Retourne la liste des présentations choisies dans la boite de dialogue ;; ;; arguments ;; titre : titre de la boite de dialogue ou nil, défauts = Choisir la (ou les) présentation(s) ;; mult : T ou nil (pour choix multiple ou unique) (defun getlviewport1 (listefen titre mult / tmp file ret) (setq tmp (vl-filename-mktemp "tmp.dcl") file (open tmp "w") ) (write-line (strcat "getlviewport1:dialog{label=" (if titre (vl-prin1-to-string titre) (if mult "\"Choisir les présentations du fichier\"" "\"Choisir une présentation\"" ) ) ";:list_box{height = 100;key=\"lst\";multiple_select=" (if mult "true;width = 100;}:row{:retirement_button{label=\"Toutes\";key=\"all\";} ok_button;cancel_button;}}" "false;}ok_cancel;}" ) ) file ) (close file) (setq dcl_id (load_dialog tmp)) (if (not (new_dialog "getlviewport1" dcl_id)) (exit) ) (start_list "lst") (mapcar 'add_list listefen) (end_list) (action_tile "all" "(setq ret (reverse listefen)) (done_dialog)") (action_tile "accept" "(or (= (get_tile \"lst\") \"\") (foreach n (str2lst (get_tile \"lst\") \" \") (setq ret (cons (nth (atoi n) listefen) ret)))) (done_dialog)" ) (start_dialog) (unload_dialog dcl_id) (vl-file-delete tmp) (reverse ret) ) Phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
rebcao Posté(e) le 3 mai 2023 Posté(e) le 3 mai 2023 Bonjour, Pourrais-tu publier un dessin pour comprendre la gestion d'impression par échelle (100e, 50e, etc.) ? Avec un ETRANSMIT ce serait bien comme ça le CTB sera joint... Merci. 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 @)
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