Risultati da 1 a 4 di 4
  1. #1
    Utente Junior L'avatar di gabriele bordin
    Iscritto dal
    2010
    Messaggi
    20
    Professione
    disegnatore cad
    Regione
    Veneto
    Software
    Inventor 2017, Autocad 2017, Vault Professional 2017

    Predefinito Macro VBA per stampa automatica

    Buongiorno a tutti.

    Lavoro con Inventor 2011;
    sono in possesso di una macro VBA, presa da una discussione in questo forum e leggermente modificata, per la stampa automatica delle tavole dei sottogruppi .iam e delle loro singole parti .ipt, che compongono un file .iam.
    Ho adesso l'esigenza di stampare esclusivamente le tavole associate ai sottogruppi .iam che appaiono in distinta componenti, escludendo quelle associate ai file .ipt e ai file .iam messi in riferimento.
    Qualcuno sa suggerirmi se è possibile, e come, modificare la macro?

    Copio e incollo:

    Codice:
    Function fileExists(fname) As Boolean
        If Dir(fname) <> "" Then fileExists = True Else fileExists = False
    End Function
    
    Public Sub Stampa_tutte_le_tavole_in_A4()
    
        Dim oAsmDoc As AssemblyDocument
        Set oAsmDoc = ThisApplication.ActiveDocument
        If ThisApplication.ActiveDocument.DocumentType <> kAssemblyDocumentObject Then
            MsgBox "This is NOT an assembly document!", vbExclamation
            Exit Sub
        End If
    
        Dim oPrintMgr As PrintManager
        Set oPrintMgr = ThisApplication.ActiveDocument.PrintManager
        If MsgBox("Usare la stampante di default """ & oPrintMgr.Printer & """  Vuoi continuare?", vbYesNo + vbQuestion) = vbNo Then
            Exit Sub
        End If
    
        Dim oDrgPrintMgr As DrawingPrintManager
    
        MsgBox "Stampante selezionata " & oPrintMgr.Printer & ", Stampare 1 copia, formato A4."
    
        dirpath = Left(oAsmDoc.FullFileName, Len(oAsmDoc.FullFileName) - Len(oAsmDoc.DisplayName))
    
        Dim oRefDocs As DocumentsEnumerator
        Set oRefDocs = oAsmDoc.AllReferencedDocuments
        Dim oRefDoc As Document
        numFiles = 0
    
        For Each oRefDoc In oRefDocs
            idwpathname = Left(oRefDoc.FullDocumentName, Len(oRefDoc.FullDocumentName) - 3) & "idw"
            If fileExists(idwpathname) Then
                numFiles = numFiles + 1
                'If numFiles = 10 Then Exit Sub
                Dim oDrawDoc As DrawingDocument
                Set oDrawDoc = ThisApplication.Documents.Open(idwpathname, True)
                oDrawDoc.Activate
                Set oDrawDoc = ThisApplication.ActiveDocument
                Set oDrgPrintMgr = oDrawDoc.PrintManager
    
                oDrgPrintMgr.AllColorsAsBlack = True
                oDrgPrintMgr.ScaleMode = kPrintBestFitScale
                Set oPrintMgr = ThisApplication.ActiveDocument.PrintManager
    
                ' Printer setup, default printer
                oPrintMgr.ColorMode = kPrintDefaultColorMode ' Set to default
                oPrintMgr.NumberOfCopies = 1 ' Set to print one copies.
                oPrintMgr.PaperSize = kPaperSizeA4 'Set the paper size.
                oPrintMgr.SubmitPrint ' Submit the print.
                oDrawDoc.Close (True)
            End If
        Next
        MsgBox numFiles & " file sono stati inviati alla stampante."

  2. #2
    Utente Standard L'avatar di Catafratto
    Iscritto dal
    2011
    Messaggi
    756
    Professione
    Disegnatore/progettista
    Regione
    Veneto
    Software
    Inventor 2016

    Predefinito

    Alcune domande:
    1) ad ogni tavola è collegato un solo assieme/parte?
    2) l'assieme/parte viene impostata come a: riferimento nell'assieme dove viene inserita o b: in modo "assoluto", da Impostazioni Documento > Distinta componenti? O come mix delle due soluzioni?

    Nel caso in cui 1) = vero e 2) = b: allora

    dim oDoc as Document
    ' Si collega al primo documento in tavola (non controlla se la tavola è vuota)
    Set oDoc = oDrawDoc.AllReferencedDocuments.Item(1)

    if odoc.ComponentDefinition.BOMStructure <> kReferenceBOMStructure then
    oPrintMgr.SubmitPrint ' Submit the print.
    end if


    Tutto questo sostituisce la riga
    oPrintMgr.SubmitPrint ' Submit the print.

    e dovrebbe andare (buttate giù le righe al volo senza testarle, tutto da migliorare ma per vedere se funziona è ok)

    Se le condizioni di cui sopra non si verificano è un'altra storia, una di quelle che non si raccontano dopo le 16.30 del Venerdì...

    Ciao!
    Spesso astuzia ed intelligenza sono molto più efficaci dell'ottusa forza bruta: ma non ho proprio tempo di cercare qualcun alltro...

  3. #3
    Utente Junior L'avatar di gabriele bordin
    Iscritto dal
    2010
    Messaggi
    20
    Professione
    disegnatore cad
    Regione
    Veneto
    Software
    Inventor 2017, Autocad 2017, Vault Professional 2017

    Predefinito

    Alcune domande:
    1) ad ogni tavola è collegato un solo assieme/parte?
    2) l'assieme/parte viene impostata come a: riferimento nell'assieme dove viene inserita o b: in modo "assoluto", da Impostazioni Documento > Distinta componenti? O come mix delle due soluzioni?
    1) si un solo collegamento
    2) faccio tasto destro sulla parte nell'assieme generale; struttura distinta distinta componenti, riferimento.

    Stasera non faccio a tempo, ma domani mattina faccio un tentativo con il tuo codice.
    Grazie mille!

  4. #4
    Utente Standard L'avatar di Catafratto
    Iscritto dal
    2011
    Messaggi
    756
    Professione
    Disegnatore/progettista
    Regione
    Veneto
    Software
    Inventor 2016

    Predefinito

    Citazione Originariamente Scritto da gabriele bordin Visualizza Messaggio
    1) si un solo collegamento
    2) faccio tasto destro sulla parte nell'assieme generale; struttura distinta distinta componenti, riferimento.

    Stasera non faccio a tempo, ma domani mattina faccio un tentativo con il tuo codice.
    Grazie mille!
    Nel caso 2) purtroppo sono sicuro al 99% che non funziona... La macro che fa quello che chiedi è più complessa.
    Spesso astuzia ed intelligenza sono molto più efficaci dell'ottusa forza bruta: ma non ho proprio tempo di cercare qualcun alltro...


  • Discussioni Simili

    1. Stampa automatica drw
      Di lollone nel forum Creo Parametric - Messa in tavola
      Risposte: 23
      Ultimo Messaggio: 08-07-2015, 18: 40
    2. Esecuzione automatica di macro VBA
      Di Catafratto nel forum Inventor
      Risposte: 16
      Ultimo Messaggio: 12-12-2014, 17: 25
    3. Compilazione automatica dei disegni e stampa
      Di Looz nel forum Solid Edge
      Risposte: 14
      Ultimo Messaggio: 30-07-2014, 10: 31
    4. Macro - Messa in tavola automatica
      Di simobig nel forum Solidworks
      Risposte: 4
      Ultimo Messaggio: 31-03-2013, 11: 50
    5. STAMPA AUTOMATICA
      Di TECNOMECH nel forum Solid Edge
      Risposte: 17
      Ultimo Messaggio: 29-02-2008, 14: 35

    Segnalibri

    Segnalibri

    Permessi di Scrittura

    • Tu non puoi inviare nuove discussioni
    • Tu non puoi inviare risposte
    • Tu non puoi inviare allegati
    • Tu non puoi modificare i tuoi messaggi
    •  




    CAD3D.it - la community dei progettisti