Aller au contenu

Impression dans espace objet, probleme bloc dynamique


Messages recommandés

Posté(e)

Bonjour, je me permet de vous contacter car jais un petit souci avec un programme lisp, voici le programme dont je me sert pour imprimer des cartouche depuis l'espace objet sous autocad.

 

 (defun	c:impr (/ 2d-point doc nom_fplan bl bg hd lst res lay plt)

  (defun 2d-point (pt)
    (vlax-make-variant
      (vlax-safearray-fill
 (vlax-make-safearray vlax-vbdouble '(0 . 1))
 (list (car pt) (cadr pt))
      )
    )
  )

  (setq doc	   (vla-get-activedocument (vlax-get-acad-object))
 nom_fplan "FOND_DE_PLAN"
  )
  (and	(ssget "x" (list (cons 0 "insert") (cons 2 nom_fplan)))
(progn
  (vlax-for bl (setq sel (vla-get-activeselectionset doc))
    (vla-getboundingbox bl 'bg 'hd)
    (setq lst (cons (list (vlax-safearray->list bg) (vlax-safearray->list hd)) lst))
  )
  (vla-delete sel)
  (setq	res (vl-sort lst '(lambda (a b) (< (caadr a) (caadr b))))
	res (vl-sort res '(lambda (a b) (< (cadadr a) (cadadr b))))
	lay (vla-get-activelayout doc)
	plt (vla-get-plot doc)
  )
  (foreach fen res
    (vla-put-plottype lay acwindow)
    (vlax-invoke-method
      lay
      'setwindowtoplot
      (2d-point (trans (car fen) 0 3))
      (2d-point (trans (cadr fen) 0 3))
    )
    (vlax-invoke plt 'plottodevice)
  )
)
  )
  (princ)
)

 

ce programme me sert pour imprimer des feuillet sous autocad directement par l'espace objet sans passer par la présentation.

 

ayant plusieurs cartouche de type A3 a imprimer il permet d'imprimer avec rapidité sans faire de présentation pour chaque feuillet.

 

 

 

Mon souci est le suivant, chaque cartouche est défini par un bloc ou l'on rentre le nom du bloc a la place de "FOND_DE_PLAN"

 

 

Mon bloc s'intitule feuillet A3, quand utilise les bloc standard cela fonctionne impeccable, en revanche jais crée un bloc dynamique de feuillet A3 me donnant les mesure a échelle différente ex : 1/100em ; 1/50em etc

 

et pour les bloc dynamique le programme ce lance mais aucune impression ce lance, il ni a aucun message d'erreur ni rien....

 

 

Sauriez vous quel est la démarche a suivre pour que cela fonctionne ?

 

 

je vous remercie d'avance de votre réponse et de votre temps pris pour étudier ma question

 

 

Cordialement.

[surligneur] [/surligneur] [surligneur] [/surligneur] [surligneur] [/surligneur] [Edité le 13/12/2010 par adri7786][Edité le 13/12/2010 par adri7786]

 

Posté(e)

Bonjour,

 

C'est normal, ton Lisp sélectionne toutes les occurrences de bloc dont le nom est "FOND_DE_PLAN".

Dans le cas d'un bloc "normal", le nom de l'occurrence du bloc correspond bien au nom du bloc, cad "FOND_DE_PLAN" dans ta situation.

Mais dans le cas d'un bloc dynamique, le nom de l'occurrence du bloc est plutôt du type "*U5".

Il faudrait faire une petite modification dans le Lisp pour aller rechercher les noms des blocs dynamique liés aux occurrences que tu as sélectionnées.

Je n'ai jamais travaillé avec les blocs dynamique donc je ne pourrais pas t'aider dans ce domaine. Désolé

 

Etienne

 

PS: Pour plus de lisibilité, peux tu mettre ton code entre les balises \[code\] \[/code\]

 

[Edité le 13/12/2010 par Titifonky]

www.le-metal.net, sur la métallerie
Posté(e)

merci beaucoup de ta réponse, s'aurait tu comment on trouve le nom du bloc dynamique "U5"

 

merci.

Posté(e)

Salut

 

(defun c:impr(/ 2d-point nombl doc nom_fplan bl bg hd lst res lay plt)

 (defun 2d-point (pt)
   (vlax-make-variant
     (vlax-safearray-fill
(vlax-make-safearray vlax-vbdouble '(0 . 1))
(list (car pt) (cadr pt))
     )
   )
 )

 (defun nombl(bl)
   (if (vlax-property-available-p bl 'effectivename)
     (vla-get-effectivename bl)
     (vla-get-name bl)
   )
 )

 (setq doc (vla-get-activedocument (vlax-get-acad-object))
nom_fplan "FOND_DE_PLAN"
 )
 (and (ssget "x" (list (cons 0 "insert") (cons 2 (strcat nom_fplan ",`**")) (cons 410 (getvar "ctab"))))
   (progn
     (vlax-for bl (setq sel (vla-get-activeselectionset doc))
       (and (eq (strcase nom_fplan) (strcase (nombl bl)))
  (progn
    (vla-getboundingbox bl 'bg 'hd)
    (setq lst (cons (list (vlax-safearray->list bg) (vlax-safearray->list hd)) lst))
  )
)
     )
     (vla-delete sel)
     (and lst
  (setq res (vl-sort lst '(lambda (a b) (< (caadr a) (caadr b))))
	res (vl-sort res '(lambda (a b) (< (cadadr a) (cadadr b))))
	lay (vla-get-activelayout doc)
	plt (vla-get-plot doc)
  )
(foreach fen res
  (vla-put-plottype lay acwindow)
  (vlax-invoke-method lay 'setwindowtoplot (2d-point (trans (car fen) 0 3)) (2d-point (trans (cadr fen) 0 3)))
  (vlax-invoke plt 'plottodevice)
)
     )
   )
 )
 (princ)
)

 

@+

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)

nickel, merci beaucoup Patrick_35, c'est que ça marche en plus ;) <acronym class=dict title= , vraiment merci d'avoir

 

passé un peut de temps pour résoudre mon problème. c'est vraiment sympa.

 

et merci a tous ce qui auron essayé ;).

 

 

[Edité le 13/12/2010 par adri7786]

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é