Pagina 1 di 2 12 UltimaUltima
Risultati da 1 a 10 di 14
  1. #1
    Utente Standard
    Iscritto dal
    2008
    Messaggi
    261
    Professione
    Perditempo
    Regione
    Veneto
    Software
    Inventor2015 ANSYS Fluent Gambit SolidWorks Algor

    Predefinito Pulsante per esportare tavola in dxf

    La mia esigenza era di avere un pulsante da cliccare per generare un file dxf da un file idw. Inoltre non volevo che il dxf fosse salvato nella stessa cartella del file idw ma in un'altra cartella uguale per tutti i file dxf.
    Il tutto si potrebbe fare anche con iLogic e sarebbe tutto più semplice, però, ad oggi, non sono ancora riuscito a creare un pulsante esterno al browser di iLogic.

    Facendo un po' di copia incolla dalla rete e aggiungendo un po' del mio sono riuscito a fare il tutto. Ho testato il codice su Inventor 2013

    Codice:
    Public Sub PubblicaDxf()
        
        ' Obtain reference to drawing
        Dim oDoc As Document
        Set oDoc = ThisApplication.ActiveDocument
        
        If oDoc.DocumentType <> kDrawingDocumentObject Then
            MsgBox ("Deve essere aperta una tavola")
            Exit Sub
        End If
        
        
        Dim oDrw As DrawingDocument
        Set oDrw = oDoc
        ' Get the Dxf translator Add-In.
        Dim DxfAddIn As TranslatorAddIn
        Set DxfAddIn = ThisApplication.ApplicationAddIns.ItemById("{C24E3AC4-122E-11D5-8E91-0010B541CD80}")
    
    
        Dim oContext As TranslationContext
        Set oContext = ThisApplication.TransientObjects.CreateTranslationContext
        oContext.Type = kFileBrowseIOMechanism
        
      
        ' Create a NameValueMap object
        Dim oOptions As NameValueMap
        Set oOptions = ThisApplication.TransientObjects.CreateNameValueMap
    
        ' Create a DataMedium object
        Dim oDataMedium As DataMedium
        Set oDataMedium = ThisApplication.TransientObjects.CreateDataMedium
    
        ' Check whether the translator has 'SaveCopyAs' options
        If DxfAddIn.HasSaveCopyAsOptions(oDrw, oContext, oOptions) Then
    
            Dim strIniFile As String
            strIniFile = "tuofile.ini"
            ' Create the name-value that specifies the ini file to use.
            oOptions.Value("Export_Acad_IniFile") = strIniFile
        End If
    
       ' Sets directory for file save
         Dim DXFDirectory As String
         DXFDirectory = "percorso cartella di destinazione"
    
        'Set the destination file name
        Dim fn As String
        Dim fna As String
        fna = oDrw.DisplayName
        fna = Strings.Left(fna, Len(fna) - 4) & ".dxf"
        fn = DXFDirectory & fna
        oDataMedium.FileName = fn
        
        'Publish document.
        Call DxfAddIn.SaveCopyAs(oDrw, oContext, oOptions, oDataMedium)
    End Sub
    Per vedere come copiare il codice VB, come aggiungere e personalizzare un bottone leggete questa discussione

    Se la vostra esigenza è salvare il file dxf in automatico o salvarlo nella stessa cartella del file idw o che vi chieda ogni volta in che cartella salvarlo dovete lavorare sulle ultime righe di codice e in rete potete trovare tutto

    Ciao
    Filippo
    Stai cercando una ricetta? Segui il blog di Zia Ivana

  2. #2
    Utente Standard
    Iscritto dal
    2008
    Messaggi
    261
    Professione
    Perditempo
    Regione
    Veneto
    Software
    Inventor2015 ANSYS Fluent Gambit SolidWorks Algor

    Predefinito

    Lo script scritto sopra ha un baco alle linee di codice
    Codice:
        'Set the destination file name
        Dim fn As String
        Dim fna As String
        fna = oDrw.DisplayName
        fna = Strings.Left(fna, Len(fna) - 4) & ".dxf"
        fn = DXFDirectory & fna
        oDataMedium.FileName = fn
    Perché se nel nome del file ci sono caratteri speciali tipo "_" "-" "#" ecc.. il comando "Strings" prende questo carattere come riferimento e non il punto per "estrarre" il nome del file

    Tutto il nuovo codice corretto, sperando che non ci siano altri errori, lo strovate di seguito
    Codice:
        
    Public Sub PubblicaDxf()
        
        ' Obtain reference to drawing
        Dim oDoc As Document
        Set oDoc = ThisApplication.ActiveDocument
        
        If oDoc.DocumentType <> kDrawingDocumentObject Then
            MsgBox ("Deve essere aperta una tavola")
            Exit Sub
        End If
        
        
        Dim oDrw As DrawingDocument
        Set oDrw = oDoc
        ' Get the Dxf translator Add-In.
        Dim DxfAddIn As TranslatorAddIn
        Set DxfAddIn = ThisApplication.ApplicationAddIns.ItemById("{C24E3AC4-122E-11D5-8E91-0010B541CD80}")
    
    
        Dim oContext As TranslationContext
        Set oContext = ThisApplication.TransientObjects.CreateTranslationContext
        oContext.Type = kFileBrowseIOMechanism
        
      
        ' Create a NameValueMap object
        Dim oOptions As NameValueMap
        Set oOptions = ThisApplication.TransientObjects.CreateNameValueMap
    
        ' Create a DataMedium object
        Dim oDataMedium As DataMedium
        Set oDataMedium = ThisApplication.TransientObjects.CreateDataMedium
    
        ' Check whether the translator has 'SaveCopyAs' options
        If DxfAddIn.HasSaveCopyAsOptions(oDrw, oContext, oOptions) Then
    
            Dim strIniFile As String
            strIniFile = "C:\Users\FMantovani\Documents\dxf.ini"
            ' Create the name-value that specifies the ini file to use.
            oOptions.Value("Export_Acad_IniFile") = strIniFile
        End If
    
       ' Sets directory for file save
         Dim DXFDirectory As String
         DXFDirectory = "C:\Users\FMantovani\Desktop\"
    
        'Set the destination file name
        Dim fn As String
        Dim fna As String
        Dim fnb As String
        
        fna = oDrw.DisplayName
        fnb = Left(fna, InStr(fna, ".") - 1)
        fnb = fnb & ".dxf"
        fn = DXFDirectory & fnb
        oDataMedium.FileName = fn
        
        'Publish document.
        Call DxfAddIn.SaveCopyAs(oDrw, oContext, oOptions, oDataMedium)
    End Sub
    Lo stesso problema si verifica anche con lo script per pubblicare i pdf postato da Catafratto qui

    Ciao Filippo
    Stai cercando una ricetta? Segui il blog di Zia Ivana

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

    Predefinito

    Citazione Originariamente Scritto da Filo Visualizza Messaggio
    Lo script scritto sopra ha un baco alle linee di codice
    Codice:
        'Set the destination file name
        Dim fn As String
        Dim fna As String
        fna = oDrw.DisplayName
        fna = Strings.Left(fna, Len(fna) - 4) & ".dxf"
        fn = DXFDirectory & fna
        oDataMedium.FileName = fn
    Perché se nel nome del file ci sono caratteri speciali tipo "_" "-" "#" ecc.. il comando "Strings" prende questo carattere come riferimento e non il punto per "estrarre" il nome del file

    Tutto il nuovo codice corretto, sperando che non ci siano altri errori, lo strovate di seguito

    Lo stesso problema si verifica anche con lo script per pubblicare i pdf postato da Catafratto qui

    Ciao Filippo
    A me non succede (appena provato), usi la 2013 o sei alla 2014 (devo ancora iniziare a usarla...)? Forse una differenza nella versione VBA, la mia 6.3 (per esempio Left a me non funziona, solo String.Left) ?
    A parte questo, la tua variazione tronca al primo "." che trova partendo da Sinistra verso destra: se il nome file come carattere speciale include il ".", come nei miei tanto per capirci il nome in uscita risulterà troncato.
    Boh, son curioso di capire il malfunzionamento!
    Ciao!
    Spesso astuzia ed intelligenza sono molto più efficaci dell'ottusa forza bruta: ma non ho proprio tempo di cercare qualcun alltro...

  4. #4
    Utente Standard
    Iscritto dal
    2008
    Messaggi
    261
    Professione
    Perditempo
    Regione
    Veneto
    Software
    Inventor2015 ANSYS Fluent Gambit SolidWorks Algor

    Predefinito

    Giustamente se nel nome c'è un "." oltre a quello dell'estensione non funziona...

    Ho ancora il 2013 e la versione di VB è anche la mia 6.3. Per i nomi dei file tipo "ab__cde.idw" in uscita mi dava "ab_.idw", ovvero prendeva il secondo "_" come riferimento.

    Ciao
    Stai cercando una ricetta? Segui il blog di Zia Ivana

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

    Predefinito

    Citazione Originariamente Scritto da Filo Visualizza Messaggio
    Giustamente se nel nome c'è un "." oltre a quello dell'estensione non funziona...

    Ho ancora il 2013 e la versione di VB è anche la mia 6.3. Per i nomi dei file tipo "ab__cde.idw" in uscita mi dava "ab_.idw", ovvero prendeva il secondo "_" come riferimento.

    Ciao
    Riprovato, a me funziona bene quanto ho postato... BOH! Per curiosità, c'è una "terza parte" che fa una prova per noi?
    Grazie!
    Ciao a tutti!
    Spesso astuzia ed intelligenza sono molto più efficaci dell'ottusa forza bruta: ma non ho proprio tempo di cercare qualcun alltro...

  6. #6
    Utente Standard
    Iscritto dal
    2008
    Messaggi
    261
    Professione
    Perditempo
    Regione
    Veneto
    Software
    Inventor2015 ANSYS Fluent Gambit SolidWorks Algor

    Predefinito

    Citazione Originariamente Scritto da Filo Visualizza Messaggio
    ... in uscita mi dava "ab_.idw"...
    Logicamente ho sbagliato a scrivere, in uscida mi dava "ab_.dxf"

    Ciao
    Stai cercando una ricetta? Segui il blog di Zia Ivana

  7. #7
    Utente Standard
    Iscritto dal
    2008
    Messaggi
    261
    Professione
    Perditempo
    Regione
    Veneto
    Software
    Inventor2015 ANSYS Fluent Gambit SolidWorks Algor

    Predefinito

    Oggi ho riguardato il tutto.
    Ora funziona correttamente anche a me, non riesco a capire il perché, forse avevo fatto qualche altro pasticcio senza accorgermene.

    Ciao
    Stai cercando una ricetta? Segui il blog di Zia Ivana

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

    Predefinito

    Citazione Originariamente Scritto da Filo Visualizza Messaggio
    Oggi ho riguardato il tutto.
    Ora funziona correttamente anche a me, non riesco a capire il perché, forse avevo fatto qualche altro pasticcio senza accorgermene.

    Ciao
    Nel dubbio, riavvia... Windows è sempre Windows
    Spesso astuzia ed intelligenza sono molto più efficaci dell'ottusa forza bruta: ma non ho proprio tempo di cercare qualcun alltro...

  9. #9
    Utente Standard
    Iscritto dal
    2008
    Messaggi
    261
    Professione
    Perditempo
    Regione
    Veneto
    Software
    Inventor2015 ANSYS Fluent Gambit SolidWorks Algor

    Predefinito

    La tua frase
    Citazione Originariamente Scritto da Catafratto Visualizza Messaggio
    Windows è sempre Windows
    Mi ha messo la pulce nell'orecchio, infatti alcune prove le ho fatte con Seven e altre con Vista...

    Devo ancora approfondire bene, ma per ora mi sono accorto che "oDrw.DisplayName" in Seven restituisce "nomefile.idw" mentre in Vista "nomefile"...

    Cosa che mi fa girare e non poco le scatole!

    Se ho news vi tengo aggiornati

    Ciao
    Stai cercando una ricetta? Segui il blog di Zia Ivana

  10. #10
    Utente poco attivo
    Iscritto dal
    2009
    Messaggi
    9
    Professione
    Tecnico industrializzazione
    Regione
    Veneto
    Software
    Inventor, Libellula 3D

    Predefinito

    Quello che è stato fatto è molto interessante, dato che ne avevo più volte sentito il bisogno durante l'attività lavorativa. Purtroppo io non me ne intendo poi tanto di VBA pertanto resterò con il desiderio dell'esportazione dxf automatica. Ma gradirei suggerire, se lo riteneste interessante (io lo uso spessissimo al lavoro), di integrare l'esportazione automatica non solo al file idw, ma anche in qualche modo alla vista in pianta del modello piatto dello sviluppo lamiera in una serie di file ipt.
    Congratulazioni ancora per il lavoro fatto.

    M.


  • Pagina 1 di 2 12 UltimaUltima

    Discussioni Simili

    1. Esportare tavola in pdf in automatico
      Di Filo nel forum Inventor
      Risposte: 24
      Ultimo Messaggio: 18-09-2015, 17: 31
    2. Esportare dati in Excel con un pulsante di comando
      Di Dave1978 nel forum VBA per Autocad
      Risposte: 11
      Ultimo Messaggio: 03-02-2014, 09: 33
    3. Esportare tavola in formato dwg
      Di fagioli.com nel forum Revit
      Risposte: 1
      Ultimo Messaggio: 19-07-2013, 17: 27
    4. Esportare tavola multicorpo su piu layer
      Di Stefano-81 nel forum Solidworks
      Risposte: 5
      Ultimo Messaggio: 29-02-2012, 09: 07
    5. Esportare una tavola 2D in DWG con NX3
      Di superzeus3 nel forum NX (Unigraphics)
      Risposte: 4
      Ultimo Messaggio: 17-10-2011, 15: 03

    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