Aller au contenu

commande imprimer avec test


zebulon_

Messages recommandés

Bonjour,

 

Maintenant qu'on s'est bien amusé à faire des fmults à des échelles bien définies...

 

http://www.cadxp.com/sujetXForum-7372.htm

 

on voudrait aller un cran plus loin et vérifier, avant d'imprimer si les fmults de l'onglet courant de l'espace papier n'ont pas des échelles farfelues.

Ca vous est sans doute déjà arrivé aussi de faire une fmult, d'y définir une échelle genre 1:100, de reporter cette echelle dans le titre de la vue et/ou dans le cartouche et, plus tard, refaire un zoom malencontreux dans cette fenêtre (avec la molette de la souris ça va vite !) et vous vous retrouvez avec une fmult au 1:103.655 ou au 1:98.665 sans vous en rendre compte.

Vous imprimez votre plan pour le donner à l'économiste, qui chiffre le projet en s'aidant de son kutch (comme tous les économistes) et le pauvre aura 2, 3, 5% dans la vue (en plus ou en moins suivant le sens de rotation de la molette).

 

Je vous soumet donc ce lisp, qui vérifie que les echelles des fmults sont dans la liste définie par le sujet cité ci-dessus. Pourquoi pas substituer ce lisp à la commande _plot ?

 

(defun listeautorisee (/ F FLAG TEMP)
 (if (setq F (open (strcat (getvar "ROAMABLEROOTPREFIX") "fmmo.fmo") "r"))
   (progn
     (setq LZXPAUTORISE nil)
     (setq FLAG T)
     (setq TEMP (read-line F))
     (setq TEMP (read-line F))
     (setq TEMP (read-line F))
     (While (setq L (read-line F))
       (if FLAG
         (setq FLAG nil)
         (progn
           (setq LZXPAUTORISE (append LZXPAUTORISE (list (rtos (cal L) 2 3))))
           (setq FLAG T)
         )
       )
     ) 
     (close F)
   )
   (setq LZXPAUTORISE '("1.000" "2.000" "4.000" "5.000" "6.667" "8.000" "10.000" "13.333" "20.000" "40.000" "50.000" "100.000" "200.000" "500.000" "1000.000"))
 )
)

(defun monimp_ep ()
 (if (not (member "geomcal.arx" (arx)))
   (arxload "geomcal")
 )
 (setvar "DIMZIN" 0)   ; pour que le rtos ne sucre pas les zero du ZXP
 (listeautorisee)
 (setq ss (ssget "X" (list '(0 . "VIEWPORT") (cons 410 CTAB))))  ; sélectionne les fenêtres de l'onglet courant
 (if ss
   (progn
     (setq SSL (sslength ss))
     (setq I 0)
     (setq LZXP "")
     (setq SSE (ssadd))  ; définit SSE comme un jeu de sélection nul
     (while (< I SSL)
       (setq E (ssname SS I))
       (setq A (entget E))
       (setq I (+ I 1))
       (setq G41 (cdr (assoc 41 A)))
       (setq G45 (cdr (assoc 45 A)))
       (setq G90 (cdr (assoc 90 A)))
       (setq G69 (cdr (assoc 69 A)))
       (if (/= G69 1)                      ; ce n'est pas la fenêtre de présentation elle-même
         (if (= (rem G90 2) 0)             ; ce n'est pas une vue perspective
           (progn
             (setq ZXP (rtos (/ G41 G45) 2 3))
             (if (not (member ZXP LZXPAUTORISE))
               (progn
                 (setq sse (ssadd E sse))
                 (setq LZXP (strcat LZXP ZXP "\n"))
               )
             )
           )
         )
       )
     )
     (if (/= LZXP "")
       (progn
         (alert (strcat "Fenêtre(s) avec echelle(s) non autorisée(s)\n" LZXP))
         (sssetfirst nil sse) ;; afficher les poignées
         (initget "Oui Non")
         (setq REP (getkword "\nImrimer quand même [Oui] ou Non : "))
         (if (= REP "Oui")
           (progn
             (initdia)
             (command "_plot")
     
           )
         )
       )
       (progn
         (initdia)
         (command "_plot")
       )
     )
   )
 )
)

(defun c:monimp ()
 (setq CTAB (getvar "ctab"))   ; nom de la présentation courante
 (if (= CTAB "Model")
   (progn       ; imprimer dans l'espace objet
     (initdia)
     (command "_plot")
   )
   (monimp_ep)  ; imprimer dans l'espace papier
 )
 (princ)
) 

 

ça me fait penser que je pourrais peut être activer le verrouillage de la fmult créée avec le 1er lisp ?

 

Commande FMULT Verrou Actif

 

A priori, ça semble être bien, mais à y regarder de plus près, le verrouillage des fmults verrouille "trop". On ne peut plus faire de zoom à l'intérieur de la fmult (et c'est plutôt bien), mais on ne peut plus faire de pan non plus (et là c'est moins bien)

 

Amicalement

 

Zebulon_

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour

 

je ne suis pas partisan de tout "lisper",

je n'ai pas lu ton code dans le détail mais

il n'empêche que c'est un bel effort et je te tire mon chapeau.

 

pour ce qui est des "pan" et "zoom" dans les fenêtres,

AutoCad propose une option,

 

http://img484.imageshack.us/img484/8800/cadxp133dg.png

 

en cliquant cette icône, tu te retrouves dans ta fenêtre, et même vérouillée

les zooms et autres pans sont autorisés.

en quittant tu retrouves ton espace papier originel.

 

amicalement

Lien vers le commentaire
Partager sur d’autres sites

Je n'ai que la 2004 et je n'ai pas trouvé. Alors ça doit être à partir de la 2005, ou bien je ne cherche pas au bon endroit... à savoir la barre d'état ?

 

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

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é