Infinicad Posté(e) le 4 décembre 2013 Posté(e) le 4 décembre 2013 Bonjour,Voici mon lisp: (defun c:pltpres (/ l nom chemin nomplt compteur format) (setq nom (vl-filename-base (getvar "dwgname"))) (setq chemin (getvar "dwgprefix")) (setq compteur 1) (setq hd (cadr (getvar "EXTMAX"))) (setq hdx (car (getvar "EXTMAX"))) (setq bg (cadr (getvar "EXTMIN"))) (setq bgx (car (getvar "EXTMIN"))) (foreach l (layoutlist) (setq format (if (AND (>= (- hd bg) 300) (>= (- hdx bgx) 300)) "Utilisateur 1 (700.00 x 10000.00 mm)" "Utilisateur 2 (297.00 x 6000.00 mm)" ) ) (command "FILEDIA" "0" "_-plot" "O" l "ANR 510 SERIES.pc3" format "Millimètres" "paysage" "NON" "Etendu" "1:1" "0,0" "NON" "." "O" "NON" "O" "N" "O" "" "N" "O" "FILEDIA" "1" ) ) Mon probleme est que si je le lance plusieurs fois le lisp les formats ne sont pas les meme pour les même presentations.Si quelqu'un voit d'où cela peux venir..Merci
(gile) Posté(e) le 4 décembre 2013 Posté(e) le 4 décembre 2013 Salut, Sans regarder en profondeur (il n'y a pas d'aléatoire en informatique), ça peut venir des variables EXTMIN et EXTMAX qui ne sont pas automatiquement mise à jour.Essaye une régénération avant de récupérer les valeurs de ces variables (je ne sais pas s'il y a d'autres moyens en LISP) : (command "_regen")ou(vla-regen (vla-get-ActiveDocument (vlax-get-acad-object)) acActiveViewport)si tu es bien dans l'espace objet. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Infinicad Posté(e) le 5 décembre 2013 Auteur Posté(e) le 5 décembre 2013 Salut, Sans regarder en profondeur (il n'y a pas d'aléatoire en informatique), ça peut venir des variables EXTMIN et EXTMAX qui ne sont pas automatiquement mise à jour.Essaye une régénération avant de récupérer les valeurs de ces variables (je ne sais pas s'il y a d'autres moyens en LISP) : (command "_regen")ou(vla-regen (vla-get-ActiveDocument (vlax-get-acad-object)) acActiveViewport)si tu es bien dans l'espace objet.Re,bon ça marche pas je pense que pour les presentations ces variables ne sont pas pertinentes...Merci pour ta réponse
(gile) Posté(e) le 5 décembre 2013 Posté(e) le 5 décembre 2013 Salut, Les valeurs des variable EXTMIN et EXTMAX dépendent de l'espace (layout) actif au moment où on les interroge.Donc, si j'ai bien compris ce que tu cherches à faire, il faut, pour chaque présentation, activer la présentation, récupérer EXTMIN et EXTMAX, et lancer le traçage en conséquence. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Infinicad Posté(e) le 5 décembre 2013 Auteur Posté(e) le 5 décembre 2013 Salut, Les valeurs des variable EXTMIN et EXTMAX dépendent de l'espace (layout) actif au moment où on les interroge.Donc, si j'ai bien compris ce que tu cherches à faire, il faut, pour chaque présentation, activer la présentation, récupérer EXTMIN et EXTMAX, et lancer le traçage en conséquence. C'est ça.Mais j'ai l'impression que même en faisant un regen il garde les valeurs precédentes.Je pense qu'il vaudrais mieux recuperer les tailles des FMULT mais c'est encore un peu compliquée pour moi :/Je n'ai commencé qu'il y a quelques semaines...
(gile) Posté(e) le 5 décembre 2013 Posté(e) le 5 décembre 2013 Dans le code que tu as posté, tu récupères EXTMIN et EXTMAX avant le (foreach ...) et pas dans la boucle. De plus, tu n'actives pas chaque présentation avant de récupérer EXTMIN et EXTMAX. Essaye ça, et inspire t'en pour faire ce que tu as à faire.;; pour chaque présentation (foreach layout (layoutlist) ;; activer la présentation (setvar 'ctab layout) ;; récupérer EXTMIN et EXTMAX (setq p1 (getvar 'extmin) p2 (getvar 'extmax) ) ;; désiner un rectangle (à remplacer par le traitement à faire) (command "_rectangle" "_non" p1 "_non" p2) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Infinicad Posté(e) le 5 décembre 2013 Auteur Posté(e) le 5 décembre 2013 Dans le code que tu as posté, tu récupères EXTMIN et EXTMAX avant le (foreach ...) et pas dans la boucle. De plus, tu n'actives pas chaque présentation avant de récupérer EXTMIN et EXTMAX. Essaye ça, et inspire t'en pour faire ce que tu as à faire.;; pour chaque présentation (foreach layout (layoutlist) ;; activer la présentation (setvar 'ctab layout) ;; récupérer EXTMIN et EXTMAX (setq p1 (getvar 'extmin) p2 (getvar 'extmax) ) ;; désiner un rectangle (à remplacer par le traitement à faire) (command "_rectangle" "_non" p1 "_non" p2) )He ben oui, forcément récuperer les variables DANS la boucle....ça marche, merci beaucoup grand lisper :)
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