Aller au contenu

Messages recommandés

Posté(e)

Bonjour à tous,

 

Mon idée est de dessiner avec un rectangle les dimensions réelles du papier associé à une mise en page.

 

Merci,

 

Bonne journée,

 

Posté(e)

Merci pour l'information,

 

Ce n'est pas pour créer une fenêtre flottante en espace papier, j'utilise fmult puis zone graphique pour çà.

 

Je souhaiterais dessiner un rectangle autour de cette fenêtre en prenant compte les 4 marges.

 

Exemple pour un A4 :

201.78 : largeur fenêtre flottante

280.60 : hauteur fenêtre flottante

 

209.973 : largeur réelle papier

296.926 : hauteur réelle papier

 

Prendre ces dernières mesures afin de caler la polyligne rectangulaire.

 

Fabrice

Posté(e)

Le soucis, c'est que tes marges changent suivant le type d'imprimantes que tu sélectionne.

Raph.

Celui qui pose une question est bête 5 minutes, celui qui n'en pose pas l'est toute sa vie !

Posté(e)

Salut,

 

Un petit truc en Visual LISP.

La commande PLOTREC appelle la fonction gc:PlotAreaToRectangle pour dessiner un rectangle correspondant à la zone d'impression dans toutes les présentations.

gc:PlotAreaToRectangle tient compte des paramètres choisis dans le gestionnaire de mise en page :

- marges en fonction du traceur

- orientation du dessin (portrait/paysage)

- échelle du tracé (mm/unités)

- origine du tracé différente de 0,0

 

;; gc:PlotAreaToRectangle
;; Dessine un rectangle correspondant à la zone imprimable dans la présentation
;;
;; Argument
;; layout : la présentation (vla-object)

(defun gc:PlotAreaToRectangle
      (layout / width height numerator denominator lowerLeft upperRight origin scale x y w h pts)
 (vla-GetPaperSize layout 'width 'height) ; taille du papier
 (vla-GetCustomScale layout 'numerator 'denominator) ; échelle (mm/unités)
 (vla-GetPaperMargins layout 'lowerLeft 'upperRight) ; marges
 (setq	lowerLeft  (vlax-safearray->list lowerLeft)
upperRight (vlax-safearray->list upperRight)
origin	   (vlax-get layout 'PlotOrigin) ; origine du tracé
scale	   (/ denominator numerator)
x	   (* (- (car origin)) scale)
y	   (* (- (cadr origin)) scale)
w	   (* (- width (car lowerLeft) (car upperRight)) scale)
h	   (* (- height (cadr lowerLeft) (cadr upperRight)) scale)
pts	   (if (zerop (rem (vla-get-PlotRotation layout) 2)) ; rotation (portrait/paysage)
	     (list x y (+ x w) y (+ x w) (+ y h) x (+ y h))
	     (list y x (+ y h) x (+ y h) (+ x w) y (+ x w))
	   )
 )
 (vla-put-Closed
   (vlax-invoke (vla-get-Block layout) 'addLightWeightPolyline pts)
   :vlax-true
 )
)


;; Commande PLOTREC
;; Dessine la zone imprimable dans toutes les présentations.
(defun c:plotrec ()
 (vl-load-com)
 (vlax-for layout (vla-get-Layouts (vla-get-ActiveDocument (vlax-get-acad-object)))
   (if	(/= (vla-get-Name layout) "Model")
     (gc:PlotAreaToRectangle layout)
   )
 )
 (princ)
)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

@Gile

 

il manque une parenthèse pour fermer le setq pts :

 

 ;; gc:PlotAreaToRectangle

;; Dessine un rectangle correspondant à la zone imprimable dans la présentation

;;

;; Argument

;; layout : la présentation (vla-object)



(defun gc:PlotAreaToRectangle

      (layout / width height numerator denominator lowerLeft upperRight origin scale x y w h pts)

 (vla-GetPaperSize layout 'width 'height) ; taille du papier

 (vla-GetCustomScale layout 'numerator 'denominator) ; échelle (mm/unités)

 (vla-GetPaperMargins layout 'lowerLeft 'upperRight) ; marges

 (setq	lowerLeft  (vlax-safearray->list lowerLeft)

upperRight (vlax-safearray->list upperRight)

origin	   (vlax-get layout 'PlotOrigin) ; origine du tracé

scale	   (/ denominator numerator)

x	   (- (car origin))

y	   (- (cadr origin))

w	   (* (- width (car lowerLeft) (car upperRight)) scale)

h	   (* (- height (cadr lowerLeft) (cadr upperRight)) scale)

pts	   (if (zerop (rem (vla-get-PlotRotation layout) 2)) ; rotation (portrait/paysage)

	     (list x y (+ x w) y (+ x w) (+ y h) x (+ y h))

	     (list x y (+ x h) y (+ x h) (+ y w) x (+ y w))

 ))

 (vla-put-Closed

   (vlax-invoke (vla-get-Block layout) 'addLightWeightPolyline pts)

   :vlax-true

 )

)





;; Commande PLOTREC

;; Dessine la zone imprimable dans toutes les présentations.

(defun c:plotrec ()

 (vl-load-com)

 (vlax-for layout (vla-get-Layouts (vla-get-ActiveDocument (vlax-get-acad-object)))

   (if	(/= (vla-get-Name layout) "Model")

     (gc:PlotAreaToRectangle layout)

   )

 )

 (princ)

)

 

 

 

 

[Edité le 30/6/2011 par neptune38]

Raph.

Celui qui pose une question est bête 5 minutes, celui qui n'en pose pas l'est toute sa vie !

Posté(e)

je sais pas si tu a vu mon edition précédente.

 

C'est de la balle ton lisp ! bravo Gile

Raph.

Celui qui pose une question est bête 5 minutes, celui qui n'en pose pas l'est toute sa vie !

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é