Invité adri7786 Posté(e) le 13 décembre 2010 Posté(e) le 13 décembre 2010 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]
Titifonky Posté(e) le 13 décembre 2010 Posté(e) le 13 décembre 2010 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
Invité adri7786 Posté(e) le 13 décembre 2010 Posté(e) le 13 décembre 2010 merci beaucoup de ta réponse, s'aurait tu comment on trouve le nom du bloc dynamique "U5" merci.
Patrick_35 Posté(e) le 13 décembre 2010 Posté(e) le 13 décembre 2010 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Invité adri7786 Posté(e) le 13 décembre 2010 Posté(e) le 13 décembre 2010 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]
lili2006 Posté(e) le 16 décembre 2010 Posté(e) le 16 décembre 2010 Bonjour à toutes et tous, J'ai le même besoin sur un fichier de 70 profils en format A3 et lorsque je lance "impr" => Commande:Commande: (LOAD "C:/Users/Lilian/Desktop/impr.lsp") C:IMPR Commande: impr Commande: Une idée ? Merci d'avance, Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Patrick_35 Posté(e) le 16 décembre 2010 Posté(e) le 16 décembre 2010 Salut Ton fond de plan pour un folio est un Bloc ?Le nom du bloc a bien été renseigné dans la variable nom_fplan ? @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
lili2006 Posté(e) le 16 décembre 2010 Posté(e) le 16 décembre 2010 Re, Oups, Désolé, :cool: En refaisant le test je viens de me rendre compte que j'avais renommer le bloc par défaut sur ma V2008 et testé sur la V2011 Civil 3D,ça ne risquait pas de marcher,... :o Merci et désolé du dérangement,... :exclam: PS: Vraiment super cette appli Patrick, :D Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
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