Solidworks API: Automatisches Drucken

Hallo

Ich versuche, ein Makro zu erstellen, mit dem Sie Zeichnungen automatisch drucken können. Das heißt, ich möchte, dass das Makro die Seitengröße liest und je nach Format den richtigen Drucker mit den richtigen Einstellungen auswähle.

 

Um das Format der Blätter einer Zeichnung zu lesen, habe ich keine allzu großen Probleme, aber den richtigen Drucker mit den richtigen Einstellungen auszuwählen, halte ich mich zurück.

 

Grundsätzlich sollte das kleine bisschen Code wie folgt aussehen:

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

 

Hat das jemals jemand gemacht?

 

Vielen Dank im Voraus,

Herzliche Grüße

Gautier.

Es ist in Ordnung, dass ich es geschafft habe, mit einigen Schwierigkeiten, aber das Makro funktioniert jetzt sehr gut.

 

Für diejenigen, die interessiert sind, hier der 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 „Gefällt mir“

Ich bin wieder bei der Gebühr für das automatische Drucken.

 

Ich habe eine Option auf meinem Plotter, um das Papier so auszurichten, dass ich je nach Format so wenig Haarausfall wie möglich habe. Ich kann jedoch die Option zum Aktivieren dieser Option in VBA nicht finden.

 

Hat jemand diese Option jemals verwendet oder manipuliert?

 

Vielen Dank im Voraus

Gautier D.

Hallo

Wenn Sie die MyCad-Suite haben, können Sie PowerPrint verwenden, um all dies zu tun!