Aller au contenu

macro d\'impression avec dwg to pdf


Messages recommandés

Posté(e)

bonjour à vous,

 

je suis débutant en macro vba et également en autocad. je suis en train de développer pour un collègue une macro qui fait un zoom étendu d'un plan et ensuite l'imprime en pdf...

le seul hic c'est que je n'arrive pas à configurer le code avec le pilote dwg to pdf.pc3

j'ai regardé sur le net et sur les différents forum mais je ne trouve pas ma réponse.

si quelqu'un veut bien m'aider. en vous remerciant d'avance.

 

Guillaume

 

[Edité le 17/7/2009 par GuillaumeJ]

Posté(e)

Bonjour,

 

Oui j'ai déjà fait un bout de code...

 

Pour l'instant je recherche dessus :

 

thisdrawing.SendCommand("-traceur " & "oui" & Strings.Chr(10) & Strings.Chr(10) & "DWG To PDF.pc3" & Strings.Chr(10) & etc...)

 

Le soucis, c'est que j'ai une fenetre Windows qui s'ouvre (la fenetre enregistrer sous...) ! du coup pour moi, ca me va pas car je veux que tout soit automatique (sans interaction de l'utilisateur).

 

PS : je suis en vb.net

Posté(e)

merci pour cette fonction :

 

ThisDrawing.Plot.PlotToDevice "DWG To PDF.pc3"

 

 

mon bout de code utilise deja cette fonction... quand je lance la macro, un message apparait :

"tracé et publication terminés" mais je n'ai pas de fichier PDF enregisté quelque part !!! alors si vous avez des idées, je suis preneur.... en vous remerciant d'avance et merci de m'aider

 

 

Guillaume

Posté(e)

 Dim AutoCAD As New AcadApplication
Dim thisdrawing As AcadDocument
AutoCAD.Visible = False
Dim Print1 As String                 'Variable identifiant le nom de l'imprimante
Print1 = "DWG To PDF.pc3"
thisdrawing = AutoCAD.Documents.Open(fichier_autocad, False, True)
ThisDrawing.ActiveLayout.ConfigName = Print1
               thisdrawing.ActiveLayout.StyleSheet = "Alfalaval.ctb"
               thisdrawing.ActiveLayout.PaperUnits = _ Autodesk.AutoCAD.Interop.Common.AcPlotPaperUnits.acMillimeters
               thisdrawing.ActiveLayout.StandardScale = _ Autodesk.AutoCAD.Interop.Common.AcPlotScale.acScaleToFit
               ThisDrawing.ActiveLayout.CenterPlot = True
               thisdrawing.ActiveLayout.PlotType = _ Autodesk.AutoCAD.Interop.Common.AcPlotType.acExtents
               ThisDrawing.ActiveLayout.RefreshPlotDeviceInfo()
               thisdrawing.SetVariable("BACKGROUNDPLOT", 0)         '                 thisdrawing.Plot.PlotToDevice(Print1)
               thisdrawing.SetVariable("BACKGROUNDPLOT", 2)
               ThisDrawing.ActiveLayout.RefreshPlotDeviceInfo()

thisdrawing.Save() 'je sauvegarde avant de quitter pour ne pas avoir le message "voulez-vous enregistrez avant de quitter ?'
AutoCAD.Quit()

 

Ca fonctionne chez moi et m'enregistre dans le répertoire courant du fichier

Posté(e)

Bonjour,

 

J'ai une autre question : Actuellement, j'utilise ce code pour mon format de sortie de PDF

 

Dim Paper1 As String

Paper1 = "ISO_A3_(297.00_x_420.00_MM)"

thisdrawing.ActiveLayout.CanonicalMediaName = paper1

 

Est-il possible de récupérer le format choisie par l'utilisateur pour son dessin ? Car si je ne mets rien, ca me prends le dernier format de sortie !

Posté(e)

Merci de ton code Solyrics, je m'en suis inspiré pour créer le mien...car ton code ne fonctionnait comme tel. je suis sur autocad electrical 2008.

 

ma macro ouvre un fichier, fait un zoom étendu et l'imprime en pdf.

 

 

pour ta question, je ne peux pas te répondre, je ne suis pas assez caler sur vba autocad

 

 

merci en tout cas à tout le monde de m'avoir aidé....

 

Guillaume

 

 

Dim Layout As AcadLayout

Dim fichier As String

Dim AutoCAD As New AcadApplication

Dim Print1 As String 'Variable identifiant le nom de l 'imprimante

Dim Paper1 As String 'Variable identifiant le nom du format de papier

Dim DWGName As String

Dim activeStatus As String

Dim Drawing As AcadDocument

 

Sub Zoom_etendu()

 

Paper1 = "DWG To PDF.pc3" 'déclaration de l'imprimante

fichier = "c:\testautocad\Grille de révision.dwg"

ThisDrawing.Application.Documents.Open fichier

 

 

 

'se met en espace papier

ThisDrawing.ActiveSpace = acPaperSpace

Set pspace = ThisDrawing.PaperSpace

 

 

' fait un zoom etendu dans la fenetre active

ThisDrawing.Application.ZoomExtents

 

 

'configuration de l'impression

ThisDrawing.ActiveLayout.PaperUnits = AcPlotPaperUnits.acMillimeters

ThisDrawing.ActiveLayout.StandardScale = AcPlotScale.acScaleToFit

ThisDrawing.ActiveLayout.PlotType = AcPlotType.acExtents

ThisDrawing.ActiveLayout.RefreshPlotDeviceInfo

ThisDrawing.Plot.PlotToDevice Paper1

 

End Sub

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é