Solidworks API: automatisch printen

Hallo

Ik probeer een macro te maken waarmee je tekeningen automatisch kunt afdrukken. Dat wil zeggen dat ik wil dat de macro het paginaformaat leest en afhankelijk van het formaat de juiste printer met de juiste instellingen selecteert.

 

Om het formaat van de vellen van een tekening te lezen heb ik niet al te veel moeite, maar om de juiste printer met de juiste instellingen te selecteren, loop ik vast.

 

In principe zou het kleine beetje code er als volgt uit moeten zien:

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

 

Heeft iemand dit ooit gedaan?

 

Bij voorbaat dank,

Vriendelijke groeten

Gautier.

Het is oké dat het me gelukt is, met wat moeite, maar de macro werkt nu heel goed.

 

Voor degenen die geïnteresseerd zijn, hier is de 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 like

Ik ben terug bij de kosten voor automatisch afdrukken.

 

Ik heb een optie op mijn plotter om het papier zo te oriënteren dat ik zo min mogelijk verlies heb, afhankelijk van het formaat. Ik kan de optie om deze optie te activeren echter niet vinden in vba.

 

Heeft iemand deze optie ooit gebruikt of gemanipuleerd?

 

Bij voorbaat dank

Gautier D.

Hallo

Als je de MyCad-suite hebt, kun je PowerPrint gebruiken om dit allemaal te doen!