Aller au contenu

resultat semble aleatoire


Messages recommandés

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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

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é