Solidworks API: Drukowanie automatyczne

Witam

Próbuję stworzyć makro, które pozwoli na automatyczne drukowanie rysunków. Oznacza to, że chcę, aby makro odczytywało rozmiar strony i w zależności od formatu wybierało odpowiednią drukarkę z odpowiednimi ustawieniami.

 

Z odczytaniem formatu arkuszy rysunku nie mam większego problemu, ale z wyborem odpowiedniej drukarki z odpowiednimi ustawieniami utknęłem w martwym punkcie.

 

Zasadniczo mały fragment kodu powinien wyglądać tak:

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

 

Czy ktoś kiedykolwiek to robił?

 

Z góry dziękujemy,

Pozdrowienia

Gautier.

W porządku, udało mi się, z pewnymi trudnościami, ale makro działa teraz bardzo dobrze.

 

Dla zainteresowanych oto kod:

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 polubienie

Wracam do opłaty za drukowanie automatyczne.

 

W moim ploterze mam możliwość zorientowania papieru tak, aby mieć jak najmniej zrzucania w zależności od formatu. Nie mogę jednak znaleźć opcji aktywacji tej opcji w vba.

 

Czy ktoś kiedykolwiek używał lub manipulował tą opcją?

 

Z góry dziękuję

Gautier D.

Witam

Jeśli masz pakiet MyCad, możesz użyć PowerPrint, aby to wszystko zrobić!