Aller au contenu

Gestionnaire des styles de tracés dans les présentations


tchetchi

Messages recommandés

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

Lien vers le commentaire
Partager sur d’autres sites

  • 1 an après...

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

 

Autodesk Architecture 2023 sous windows 11 64

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Lien vers le commentaire
Partager sur d’autres sites

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

Autodesk Architecture 2023 sous windows 11 64

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Lien vers le commentaire
Partager sur d’autres sites

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 @)

Lien vers le commentaire
Partager sur d’autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité