rlapt Posté(e) le 5 juin 2006 Posté(e) le 5 juin 2006 Bonjour, Je souhaite imprimer des dessins en batch en VBA. Pour cela j'ai fait une procédure qui me charge les dessins les uns après les autres suivant des critères qui me sont propre. Mon problème est que je n'arrive pas à trouver l'instruction et le paramétrage des variables sûrement indispensable pour que cela fonctionne. Actuellement avec la procédure ci-dessous, je sorts une page blanche à chaque dessin alors que le dessin s'affiche correctement dans l'onglet objet d'AutoCAD. Quelqu'un peut-il m'aider ? Ca fait quelque temps que je planche sur le sujet sans solution. Merci d'avance Private Sub subPrint() Dim varExtMax As Variant Dim varExtMin As Variant 'Recherche des limites du dessin varExtMax = ThisDrawing.GetVariable("extmax") varExtMin = ThisDrawing.GetVariable("extmin")'impression en mode étendu du dessin ThisDrawing.Plot.PlotToDevice "Canon MP750 Series Printer.pc3"End Sub
Chrisfs Posté(e) le 13 juin 2006 Posté(e) le 13 juin 2006 Salut, Pour ta routine VBA, le mieux est de redefinir de A à Z l'impression . Voici un bout de ma routine d'impression de carnet de détails, pour que tu puisse comprendre comment fonctionne l'impression en VBA : *** ThisDrawing.Activelayout.ConfigName = "PDF995.PC3" ThisDrawing.ActiveLayout.CanonicalMediaName= "A3" ThisDrawing.ActiveLayout.PaperUnits= acMillimeters ThisDrawing.Regen acAllViewports ptz1(0) = pt1(0) ptz1(1) = pt1(1) ptz2(0) = pt2(0) ptz2(1) = pt2(1) ZoomWindow ptz1, ptz2 ThisDrawing.ActiveLayout.SetWindowToPlot pt1, pt2 ThisDrawing.ActiveLayout.PlotType = acWindow plotech = ScaleCart(numerocart) * blkscale * Scale01 ThisDrawing.ActiveLayout.SetCustomScale 1, plotech ThisDrawing.ActiveLayout.PlotRotation = AngCart(numerocart) ThisDrawing.ActiveLayout.CenterPlot = True On Error Resume Next Select Case StrAcadVer Case "ACAD2002", "ACAD2004" ThisDrawing.Plot.PlotToDevice Case "ACAD2006" ThisDrawing.SetVariable "BACKGROUNDPLOT", 0 ThisDrawing.Plot.PlotToDevice ThisDrawing.SetVariable "BACKGROUNDPLOT", 1 Case Else End Select*** Explication : Je définis l'imprimante, le papier, et en millimetres Pt1 et Pt2 sont les 2 points limites d'un cartouche de dessin. J'en récupere les coordonnées x,y de chaque points (cela devient Ptz1 et Ptz2). Je fais un zoom sur la zone à imprimer. Je définis une impression de type fenêtre, avec les points Pt1 et Pt2 Je regle l'echelle d'impression suivant l'echelle du cartouche (suivant les projets, je change l'echelle d'un cartouche pour faire rentrer completement mon dessin). Je centre le dessin sur le papier. Je verifie la version d'autocad et je lances l'impression. En effet, suivant les dernieres versions d'autocad, il y a la fonction impression en arrière-plan. avec la variable BACKGROUNDPLOT, je la desactive. *** Cette routine fonctionne parfaitement (ça fait + 6 mois qu'elle tourne sans problème sur les 2 postes de dessinateur de l'agence où je suis). Cette routine couplée à une autre qui scanne le dessin complet à la recherche de blocs "Cartouches", et je passe au maximum 2mn pour imprimer un carnet de détails de 25 pages :D Voila, si besoin de plus de conseil, n'hesite pas... Christophe Rosé,Dessinateur-metreur Etanchéité bon, je retourne à ma p'tite routine de nettoyage de fichier DA
tyrese69_ Posté(e) le 19 juin 2006 Posté(e) le 19 juin 2006 Bonsoir à tous, J'ai un problème avec la méthode : CanonicalMediaName il semble que celà ne fonctionne pas avec AutoCAD 2006, ou bien je m' y prend mal. Si je lis ces valeur stockées dansd le dessin, elles sont dela forme : "User268", "User1211" etc... et non pas "A3" , "A0" ou autre chaine de carractèresascii. Quelqu'un a t'il plus d'infos ? Daniel OLIVESLyon
tyrese69_ Posté(e) le 20 juin 2006 Posté(e) le 20 juin 2006 Bonjour, ce lien donne une routine qui permet d'avoir tous les formats et traceurs installés ! http://discussion.autodesk.com/thread.jspa?messageID=5102204 Daniel OLIVES
Patrick_35 Posté(e) le 20 juin 2006 Posté(e) le 20 juin 2006 SalutJ'allais te dire qui fallait regarder dans GetLocaleMediaName pour traduire le user, mais si tu as trouvé... @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
docnet Posté(e) le 22 octobre 2014 Posté(e) le 22 octobre 2014 BonjourMerci, j'ai redemarré Autocad et c'est ok ????? :blink:
LrDb Posté(e) le 22 octobre 2014 Posté(e) le 22 octobre 2014 (modifié) Bonjour,Je ne connais que le vba microstation mais:en jetant un oeil ici:http://help.autodesk.com/view/ACD/2015/ENU/?guid=GUID-9F4784EE-3203-4C7C-A27E-720B25BB1BD9on peut voir:"ReDim Preserve point2(0 To 1) ' Change this to a 2D array by removing the Z position"Tu rentres un Z dans "Pt2(2) = 0"La fonction n'accepte que les XY:------------------------------- LowerLeft Access: Input-only Type: Variant (two-element array of doubles) The X and Y values for the lower-left window.UpperRight Access: Input-only Type: Variant (two-element array of doubles) The X and Y values for the upper-right window.-------------------------------Si ça peut faire avancer le schmi..LrDb Me suis gouré!!! tu passes par Plot_p1() désolé... Modifié le 22 octobre 2014 par LrDb Write a book about what ??
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