Aller au contenu

Messages recommandés

Posté(e)
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 !!

Posté(e)

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 !!

Posté(e)
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

 

./__\.
(.°=°.)
Posté(e)

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 !!

Posté(e)

CADarome

Non, 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
   )

 

Tramber

Moi non plus, je ne connais pas CononicalName ;) , par contre canonicalmedianame veut dire format papier, comme pour la fonction vla-getlocalemedianame

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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 !!

Posté(e)

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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

 

./__\.
(.°=°.)
Posté(e)

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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 !!

Posté(e)

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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 !!

Posté(e)

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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-LayoutShowPlotSetup

aurai 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 !!

Posté(e)

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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 !!

Posté(e)

Merci :D

Cela 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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

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é