CADarome Posté(e) le 12 mars 2007 Posté(e) le 12 mars 2007 Bonjour à tous,... j'aimerais savoir quelle est la variable pour savoir le nom du format de papier actuel.. merci. Sky is the limit.....Mon oeuil !!
Patrick_35 Posté(e) le 12 mars 2007 Posté(e) le 12 mars 2007 Salut (vla-get-canonicalmedianame (vla-get-activelayout (vla-get-activedocument (vlax-get-acad-object)))) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
CADarome Posté(e) le 12 mars 2007 Auteur Posté(e) le 12 mars 2007 Salut (vla-get-canonicalmedianame (vla-get-activelayout (vla-get-activedocument (vlax-get-acad-object)))) @+ Merci Patrick... je te trouve très bon en VLISP.je prend ton code. Merci. Mais n'existe-t-il pas déjà une variable système ?Il me semble avoir vue ça quelque part....hhmm... :exclam: Sky is the limit.....Mon oeuil !!
CADarome Posté(e) le 12 mars 2007 Auteur Posté(e) le 12 mars 2007 Pat,....je viens de tester ton code.... mais il ne retourne pas toujour vraie... ex: j'ai un format qui s'appèle "Automatique"et ton code me retourne..."user258" Je change de format via la commande _PLOT et applique à la présentation...et je choisi..."Poscript Custom Page" et le code me retourne "User32767" ?? Sky is the limit.....Mon oeuil !!
Tramber Posté(e) le 12 mars 2007 Posté(e) le 12 mars 2007 Mais n'existe-t-il pas déjà une variable système ?Il me semble avoir vue ça quelque part....hhmm... :exclam: Tu dois confondre avec CTAB qui ne gère que les noms des présentations. Je ne comprends pas la propriété CononicalName... Patrick ? Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
CADarome Posté(e) le 12 mars 2007 Auteur Posté(e) le 12 mars 2007 Bon...je sais pourquoi.. vla-get-canonicalmedianame.....ne fonctionne qu'avec les imprimantes CANON.il y a-t-il un vla-get-oceicalmedianame ? ou vla-get-xerocicalmedianame ? Sky is the limit.....Mon oeuil !!
Patrick_35 Posté(e) le 12 mars 2007 Posté(e) le 12 mars 2007 CADaromeNon, le vla-get-canonicalmedianame fonctionne sur toutes les imprimantes, il faut utiliser vla-getlocalemedianame pour traduire le format papier type USER... (fonctionne aussi pour les formats standards).Et ne pas oublier de faire vla-refreshplotdeviceinfo afin que le format papier soit correct.Par contre, je ne connais pas de variable qui donne le format papier actuel. Un exemple de ma routine d'impression (et je remarque qu'il y a des choses à améliorer, comme quoi tout le monde progresse :) ) (defun format_papier(imp / def esp n lay lst paps) (if (zerop (getvar "tilemode")) (setq esp (vla-get-paperspace (vla-get-ActiveDocument (vlax-get-acad-object)))) (setq esp (vla-get-modelspace (vla-get-ActiveDocument (vlax-get-acad-object)))) ) (setq lay (vla-get-layout esp)) (setq def (vla-get-configname lay)) (if (not (vl-catch-all-error-p (vl-catch-all-apply 'vla-put-configname (list lay imp)))) (progn (vla-RefreshPlotDeviceInfo lay) (setq paps (vlax-safearray->list (vlax-variant-value (vla-GetCanonicalMediaNames lay)))) (foreach n paps (setq lst (append lst (list (vla-GetLocaleMediaName lay n)))) ) (vla-put-configname lay def) ) (setq lst '("")) ) lst ) TramberMoi non plus, je ne connais pas CononicalName ;) , par contre canonicalmedianame veut dire format papier, comme pour la fonction vla-getlocalemedianame @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
CADarome Posté(e) le 12 mars 2007 Auteur Posté(e) le 12 mars 2007 Pat,.. J'essai de comprendre un peu mieux....mais je n'y arrive pas. (if (zerop (getvar "tilemode")) (setq esp (vla-get-paperspace (vla-get-ActiveDocument (vlax-get-acad-object)))) (setq esp (vla-get-modelspace (vla-get-ActiveDocument (vlax-get-acad-object)))) ) (setq lay (vla-get-layout esp)) (setq paps (vlax-safearray->list (vlax-variant-value (vla-GetCanonicalMediaNames lay)))) Donne le même résultat... J'ai pensé à extracter la mise-en-page courante avec.. (defun c:CPage () (vl-load-com) (setq curdwg (vla-get-ActiveDocument (vlax-get-Acad-Object)) pslayout (vla-get-Layout (vla-get-PaperSpace curdwg)) ) (cdr (assoc 3 (entget (vlax-vla-object->ename (vla-get-Plotconfigurations curdwg))))) ) Mais il me retourne toujour le premier de la liste et non celle qui est courante....;-( Sky is the limit.....Mon oeuil !!
Patrick_35 Posté(e) le 13 mars 2007 Posté(e) le 13 mars 2007 Pour obtenir le format de papier actuel(setq lay (vla-get-activelayout (vla-get-activedocument (vlax-get-acad-object)))) (vla-refreshplotdeviceinfo lay) (vla-getlocalemedianame lay (vla-get-canonicalmedianame lay)) Pour obtenir la liste des formats papier de l'imprimante actuel(setq lay (vla-get-activelayout (vla-get-activedocument (vlax-get-acad-object)))) (vla-refreshplotdeviceinfo lay) (mapcar '(lambda (x) (vla-getlocalemedianame lay x)) (vlax-safearray->list (vlax-variant-value (vla-getcanonicalmedianames lay)))) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Tramber Posté(e) le 13 mars 2007 Posté(e) le 13 mars 2007 OK, pigé le local donne les traductions. Mais on a des GET, comment envisager des PUT ? (la khole !) Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Patrick_35 Posté(e) le 13 mars 2007 Posté(e) le 13 mars 2007 Si c'est pour changer de format de papier, par un (vla-put-canonicalmedianame lay "A4") par exemple (si le format "A4" existe).Si c'est pour ajouter un format de papier qui n'existe pas, il va falloir jouer de l'activex. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
CADarome Posté(e) le 13 mars 2007 Auteur Posté(e) le 13 mars 2007 Merci beaucoup Pat... Je ne sais pas où tu es aller chercher ces nouvelles commandes..mais c'Est vraiment interressant,, J'essai justement de faire de même avec les mises-en-pages... (vl-load-com) (setq lst () curdwg (vla-get-ActiveDocument (vlax-get-Acad-Object)) pslayout (vla-get-Layout (vla-get-PaperSpace curdwg)) ) ;; Appèle RefreshPlotDeviceInfo Avant GetPlotDeviceNames (vla-RefreshPlotDeviceInfo pslayout) (setq x (vlax-safearray->list (vlax-variant-value (vla-get-Plotconfigurations curdwg)))) (foreach n x (setq lst (append lst (list (vla-get-Plotconfigurations curdwg n)))) ) mais je ne sais pas trop pourquoi la valeur lst ne retourne rien.. :casstet: Sky is the limit.....Mon oeuil !!
Patrick_35 Posté(e) le 13 mars 2007 Posté(e) le 13 mars 2007 Je ne sais pas où tu es aller chercher ces nouvelles commandes..Tout simplement dans l'explorateur d'objets du vba Qu'essais-tu de faire exactement afin que je puisse mieux t'aiguiller ?La liste des présentations , des jeux de feuilles ou encore celle des imprimantes ? ps : pour ce qui concerne ton code, je regarde demain @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
CADarome Posté(e) le 13 mars 2007 Auteur Posté(e) le 13 mars 2007 en fait j'essai de savoir quel est la mise-en-page courante de l'impression de l'onglet courant.car j'aimerai associer ce nom à une base de donné. Pour ce qui est des "Sheetset".....non merci..Dans tous les domaines que j'ai touché....et dans toutes les cies...je n'ai vue aucune firme d'ingénierie et contracteurs qui utilisent les "SHEETSET"et personellement,..,..je les comprend. ;-) Sky is the limit.....Mon oeuil !!
Patrick_35 Posté(e) le 14 mars 2007 Posté(e) le 14 mars 2007 Si, comme je le suppose, c'est la liste des imprimantes que tu recherches utilise(setq lay (vla-get-activelayout (vla-get-activedocument (vlax-get-acad-object)))) (vl-remove "Aucun" (vlax-safearray->list (vlax-variant-value (vla-getplotdevicenames lay)))) Comme tu recherches tous les paramètres de mise en page, ils se trouvent dans la variable lay (donc dans le layout actif car chaque layout à sa propre mise en page). Tu as le lisp MPL sur cette page qui recopie la mise en page d'un onglet vers d'autres. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
CADarome Posté(e) le 14 mars 2007 Auteur Posté(e) le 14 mars 2007 Salut Patrick.. Merci.... Voici une liste de commande...que j'essai de comprendre.. (setq lay (vla-get-activelayout (vla-get-activedocument (vlax-get-acad-object)))) (vla-refreshplotdeviceinfo lay) ;;Nom de l'imprimante (vla-get-ConfigName lay) ;;liste Imprimantes (setq x (vlax-safearray->list (vlax-variant-value (vla-GetPlotDeviceNames lay)))) ;;format de papier (vla-get-canonicalmedianame lay) ;;liste des formats de papier disponibles (setq paps (vlax-safearray->list (vlax-variant-value (vla-GetCanonicalMediaNames lay)))) ;;Origine (setq x (vlax-safearray->list (vlax-variant-value (vla-get-PlotOrigin lay)))) ;;Paper UNITS (vla-get-PaperUnits lay) ;;Échelle standard ??? (vla-get-StandardScale lay) ;;HIDDEN (vla-get-PlotHidden lay) ;;ROTATION (vla-get-PlotRotation lay) ;;PLOTTYPE ???? (vla-get-PlotType lay) ;;Border (vla-get-PlotViewportBorders lay) ;;Plot Viewport First (vla-get-PlotViewportsFirst lay) ;;LINEWEIGHT (vla-get-PlotWithLineweights lay) ;;Impression avec PLotstyles (vla-get-PlotWithPlotStyles lay) ;;Échelle épaisseur de lignes (vla-get-ScaleLineweights lay) ;;Show PLot Styles (vla-get-ShowPlotStyles lay) ;;????????? (setq x (vlax-safearray->list (vlax-variant-value (vla-GetPlotStyleTableNames lay)))) ;;Style Sheet ?? (vla-get-StyleSheet lay) ;;Échelle Standard ?? (vla-get-UseStandardScale lay) ;;Centré (vla-get-CenterPlot lay) ;;Layout (vla-get-name lay) Dans cette liste.....certaines me laisse bouche bé... Mais je n'arrive toujour pas à mettre le doigt sur le nom de la mise-en-page courante.... :o j'avais pensé que..... vla-get-LayoutShowPlotSetupaurai fait l'affaire....mais bon...ya qqchose qui cloche.. j'aimerais aussi savoir si tu connais un site où ils expliquent en détail toutes ces commandes..j'aimerrais ça moi aussi être bon comme toi ! ..;-) Sky is the limit.....Mon oeuil !!
Patrick_35 Posté(e) le 14 mars 2007 Posté(e) le 14 mars 2007 j'aimerais aussi savoir si tu connais un site où ils expliquent en détail toutes ces commandes..Je ne connais pas de site. Comme je te l'ai déjà dit, tu lances vba (alt+f11), ensuite l'explorateur d'objets (f2), tu vas dans la classe AcadLayout (sans le s à la fin) et dans la fenêtre à coté, tu verras les membres avec leurs explications ainsi que leurs paramètres (bon, c'est en anglais, mais on n'a pas le choix) j'aimerrais ça moi aussi être bon comme toi ! ..;-) C'est un bien grand mot, je me débrouille.Mais une fois que tu auras compris la logique de ce que je t'ai expliqué avant, tu vas pouvoir me dépasser ;) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
CADarome Posté(e) le 14 mars 2007 Auteur Posté(e) le 14 mars 2007 pour info... j'ai trouvé ceci.... ;;liste des page setup (defun get_page_setup (doc func / lst) (vlax-map-collection (vla-get-plotconfigurations doc) '(lambda (x) (setq lst (cons ((eval func) x) lst))) ) (reverse lst) ) (setq adoc (vla-get-activedocument (vlax-get-acad-object))) (setq page_setups (get_page_setup adoc 'vla-get-name)) ;;pagesetup (defun getPageSetupName (/ laydict psn) (setq dn (cdr (assoc -1 (dictsearch (namedobjdict) "ACAD_LAYOUT")))) (setq laydict (dictsearch dn (getvar "CTAB"))) (setq psn (member '(100 . "AcDbPlotSettings") laydict)) (if (= (caadr psn) 1) ; Page Setup Name exist (setq psn (cdadr psn)) ) ) ;-) Sky is the limit.....Mon oeuil !!
Patrick_35 Posté(e) le 14 mars 2007 Posté(e) le 14 mars 2007 Merci :DCela te récupère juste les présentations qui ont été créées avec le gestionnaire des mise en page, mais, car il y a toujours un mais, si tu créés ta présentation sans passer par le gestionnaire, tu ne la voie pas :o , tandis qu’en regardant dans le layout, tu as forcement les paramètres d’impression, et même s’il elle n’a pas encore été définie. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
BIM G CO Posté(e) le 14 mars 2007 Posté(e) le 14 mars 2007 ne reste plus que Get (er) et put (er) les mise en page nommée comme dans ce Forum Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office PlaquetteDeplianteMars2024.pdf
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