Solidworks API : Impression automatique

Bonjour,

J'essaie de créer une macro permettant d'imprimer des mises en plan en automatique. C'est à dire que je souhaite que la macro lis le format de la page et en fonction du format sélectionne la bonne imprimante avec les bons paramètres.

 

Pour lire le format des feuilles d'une mise en plan j'ai pas trop de problème mais pour sélectionner la bonne imprimante avec les bons paramètres je cale.

 

En gros le petit bout de code devrait ressembler à ça :

Select Case format
Case "A4"
Print "imprimante_par_defaut"
With quelquechose 
.Orientation = xlPortrait
.format = A4
.echelle = 100
.feuille_en_cours = true

Case "A3"
Print "imprimante_par_defaut"
With quelquechose 
.Orientation = xlLandscape
.format = A3
.echelle = 100
.feuille_en_cours = true

Case "A2"
Print "traceur"
With quelquechose 
.Orientation = xlLandscape
.format = A2
.echelle = 100
.feuille_en_cours = true

 

Quelqu'un a déjà fait ça ?

 

D'avance merci,

Cordialement,

Gautier.

C'est bon j'ai réussi, avec quelques difficultés mais la macro marche très bien maintenant.

 

Pour ceux qui sont intéressés voici le code :

Sub main()

    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swDraw = swModel
    
    Set swModelDocExt = swModel.Extension
    swModelDocExt.UsePageSetup = swPageSetupInUse_e.swPageSetupInUse_Document
    Set swPageSetup = swDraw.PageSetup
    
    vSheetNames = swDraw.GetSheetNames
    
    For i = 0 To UBound(vSheetNames)

        swDraw.ActivateSheet (vSheetNames(i))
        Set swSheet = swDraw.GetCurrentSheet
        vProps = swSheet.GetProperties
        FormatPapier = vProps(0)
        Echelle_1 = vProps(2)
        Echelle_2 = vProps(3)
        
        Select Case FormatPapier
            Case 7  'A4
                swPageSetup.Orientation = 1
                swPageSetup.PrinterPaperSize = 9
                Set printSpec = swModelDocExt.GetPrintSpecification
                printSpec.ConvertToHighQuality = True
                printSpec.AddPrintRange 1, 1
                printSpec.FromScale = Echelle_1
                printSpec.ToScale = Echelle_2
                printSpec.ScaleMethod = 1
                printSpec.PrinterQueue = "Charges_Affaires"
                printSpec.PrintToFile = False
                swModelDocExt.PrintOut4 "", "", printSpec
                
            Case 8  'A3
                swPageSetup.Orientation = 2
                swPageSetup.PrinterPaperSize = 8
                Set printSpec = swModelDocExt.GetPrintSpecification
                printSpec.ConvertToHighQuality = True
                printSpec.AddPrintRange 1, 1
                printSpec.FromScale = Echelle_1
                printSpec.ToScale = Echelle_2
                printSpec.ScaleMethod = 1
                printSpec.PrinterQueue = "Charges_Affaires"
                printSpec.PrintToFile = False
                swModelDocExt.PrintOut4 "", "", printSpec
            Case 9  'A2
                swPageSetup.Orientation = 2
                swPageSetup.PrinterPaperSize = 66
                Set printSpec = swModelDocExt.GetPrintSpecification
                printSpec.ConvertToHighQuality = True
                printSpec.AddPrintRange 1, 1
                printSpec.FromScale = Echelle_1
                printSpec.ToScale = Echelle_2
                printSpec.ScaleMethod = 1
                printSpec.PrinterQueue = "Traceur_Canon"
                printSpec.PrintToFile = False
                swModelDocExt.PrintOut4 "", "", printSpec
            Case 10 'A1
                swPageSetup.Orientation = 2
                swPageSetup.PrinterPaperSize = 4403
                Set printSpec = swModelDocExt.GetPrintSpecification
                printSpec.ConvertToHighQuality = True
                printSpec.AddPrintRange 1, 1
                printSpec.FromScale = Echelle_1
                printSpec.ToScale = Echelle_2
                printSpec.ScaleMethod = 1
                printSpec.PrinterQueue = "Traceur_Canon"
                printSpec.PrintToFile = False
                swModelDocExt.PrintOut4 "", "", printSpec
            Case 11 'A0
                swPageSetup.Orientation = 2
                swPageSetup.PrinterPaperSize = 4401
                Set printSpec = swModelDocExt.GetPrintSpecification
                printSpec.ConvertToHighQuality = True
                printSpec.AddPrintRange 1, 1
                printSpec.FromScale = Echelle_1
                printSpec.ToScale = Echelle_2
                printSpec.ScaleMethod = 1
                printSpec.PrinterQueue = "Traceur_Canon"
                printSpec.PrintToFile = False
                swModelDocExt.PrintOut4 "", "", printSpec
        End Select
        
    Next i
          
    MsgBox ("Impression terminée!")
    
    printSpec.RestoreDefaults
    printSpec.ResetPrintRange
End Sub

 

1 « J'aime »

Je reviens à la charge pour l'impression automatique.

 

J'ai une option sur mon traceur pour orienter le papier afin d'avoir le moins de chute possible en fonction du format. Cependant je ne trouve pas l'option pour activer cette option en vba.

 

Quelqu'un a déjà utilisé ou manipuler cette option ?

 

D'avance merci

Gautier D.

Bonjour,

Si vous avez la suite MyCad, vous pouvez utiliser PowerPrint pour faire tout cela!