Domanda su iLogic

Gian704

Utente poco attivo
Professione: Disegnatore
Software: Inventor
Regione: Lombardia
Lavoro con inventor 2021, prima con la 2014 riuscivo a creare i file in pdf e dwg con la macro visual basic che avete postato qui, ora con la 2021 non è più possibile utilizzare visual basic, vorrei sapere se qualcuno sà se è possibile fare lo stesso con iLogic, ho scopiazzato la vecchia macro, funziona ma non mi crea i file con la revisione che imposto, incollo qui quello che ho combinato, qualcuno sà dirmi dov'è l'errore?
grazie a chi vorrà rispondermi.

SyntaxEditor Code Snippet
strFolder = "C:\Users\Acer\Desktop\DWG-DXF-PDF\" & ThisDoc.FileName(False) 'without extension

ThisDoc.Document.SaveAs(strFolder & (".pdf"), True)

'oOptions.Value("All_Color_AS_Black") = 0
'oOptions.Value("Remove_Line_Weights") = 0
'oOptions.Value("Vector_Resolution") = 600
'oOptions.Value("Sheet_Range") = kPrintAllSheets
'oOptions.Value("Custom_Begin_Sheet") = 1
'oOptions.Value("Custom_End_Sheet") = 5

' Numero di revisione
Dim sRev As String
Rev = InputBox("Revisione:? ", "Inserimento numero di revisione", "00")

oCustomPropSet = ("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}")

On Error Resume Next
Dim sCod As String

' SOSTITUIRE "CODICE" CON IL NOME CHE SI USA PER L'IPROPERTY CHE INTERESSA
sCod = oCustomPropSet.Item("Codice").Value

FileName = FileName & " REV. " & Rev & ""

' Get the PDF translator Add-In.
Dim PDFAddIn As TranslatorAddIn
PDFAddIn = ThisApplication.ApplicationAddIns.ItemById("{0AC6FD96-2F4D-42CE-8BE0-8AEA580399E4}")

Dim strIniFile As String

' Common init
' Create a Context object
Dim oContext As TranslationContext
oContext = ThisApplication.TransientObjects.CreateTranslationContext
oContext.Type = kFileBrowseIOMechanism

' Create a NameValueMap object
Dim oOptions As NameValueMap
oOptions = ThisApplication.TransientObjects.CreateNameValueMap

' Create a DataMedium object
Dim oDataMedium As DataMedium
oDataMedium = ThisApplication.TransientObjects.CreateDataMedium

'Funzione che restituisce il nome del file togliendo il path ed il suffisso

'toglie il .ipt
If Trunc = True Then
NomeFile = Strings.Left(NomeFile, Len(NomeFile) - 4)
End If

Dim pos As Integer
'Ciclo che rimuove il path: trova "\" e tiene tutto a dx
Do
pos = InStr(NomeFile, "\")
NomeFile = Strings.Right(NomeFile, Len(NomeFile) - pos)
Loop Until pos = 0
IsolaNome = NomeFile
 
Ultima modifica:

GiGa

Moderatore
Staff Forum
Professione: Progettista/Disegnatore
Software: Mechanical, Inventor, 3DS Max
Regione: Roma
' Numero di revisione
Dim sRev As String
sRev = InputBox("Revisione:? ", "Inserimento numero di revisione", "00")

Sono un po' arruginito in iLogic, ma mi sa che manca una s...
 

Andrea Scarnecchia

Autodesk CAD & PDM expert, SymbioTech founder
Professione: Esperto CAD e PDM Autodesk, Founder della SymbioTech
Software: Autodesk Inventor, AutoCAD, Autodesk Vault, ST-Publisher, ST-Boosters
Regione: Piemonte
Salve,
in realtà la "s" è nel nome di una variabile dichiarata ma che poi non viene utilizzata, quindi non è lì l'errore (per quanto sia una imprecisione, ma piuttosto che aggiungere la "s" in tutti gli utilizzi preferirei toglierla dalla variabile dichiarata per non compromettere il funzionamento della regola).
La variabile utilizzata infatti è "Rev", non "sRev" e in i-Logic se si valorizza una variabile funziona anche senza dichiararla.
Credo che il problema potrebbe essere nel nome che viene poi assegnato al PDF in uscita:
Se sta usando "NomeFile" o "IsolaNome" allora verrà fuori solo il nome del file originale senza estensione, ma la revisione che lei scrive in input qui: " Rev = InputBox("Revisione:? ", "Inserimento numero di revisione", "00") " viene utilizzata per scrivere la stringa "FileName", non "NomeFile" --> FileName = FileName & " REV. " & Rev & ""
 

Gian704

Utente poco attivo
Professione: Disegnatore
Software: Inventor
Regione: Lombardia
Salve,
in realtà la "s" è nel nome di una variabile dichiarata ma che poi non viene utilizzata, quindi non è lì l'errore (per quanto sia una imprecisione, ma piuttosto che aggiungere la "s" in tutti gli utilizzi preferirei toglierla dalla variabile dichiarata per non compromettere il funzionamento della regola).
La variabile utilizzata infatti è "Rev", non "sRev" e in i-Logic se si valorizza una variabile funziona anche senza dichiararla.
Credo che il problema potrebbe essere nel nome che viene poi assegnato al PDF in uscita:
Se sta usando "NomeFile" o "IsolaNome" allora verrà fuori solo il nome del file originale senza estensione, ma la revisione che lei scrive in input qui: " Rev = InputBox("Revisione:? ", "Inserimento numero di revisione", "00") " viene utilizzata per scrivere la stringa "FileName", non "NomeFile" --> FileName = FileName & " REV. " & Rev & ""

Grazi ad entrambi ma sia togliendo la "s" sia cambiando NomeFile in FileName, il risultato non cambia, non sò dove potebbe essere l'errore.
Grazie comunque. (y)
 

GiGa

Moderatore
Staff Forum
Professione: Progettista/Disegnatore
Software: Mechanical, Inventor, 3DS Max
Regione: Roma
...
La variabile utilizzata infatti è "Rev", non "sRev" e in i-Logic se si valorizza una variabile funziona anche senza dichiararla.
...
Eh... l'ho detto che sono arrugginito... ;)
Ma, giusto per togliere un po' di ossido... nella riga
FileName = FileName & " REV. " & Rev & ""
perchè FileName è "ricorsivo"? Di solito usavo questo modo di valorizzare le variabili in caso di ripetizione della macro, ma in questo caso un valore di "Rev" verrebbe sempre aggiunto a quello già presente nel ciclo precedente (non trovando, nelle righe precedenti, un'altra valorizzazione, o "azzeramento", della varibile FileName)...
Scrivendola così
FileName = ThisDoc.FileName(False) & " REV. " & Rev & ""
si risolverebbe qualcosa?
 

Gian704

Utente poco attivo
Professione: Disegnatore
Software: Inventor
Regione: Lombardia
non cambia niente...
fa niente, grazie lo stesso. (y)👋
 

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2020
Regione: Veneto
Vuoi salvare in pdf aggiungendo la revisione?

Codice:
Dim myPath As String
Dim myFileName As String
Dim myRev As String
Dim newFileName As String


myPath = "C:\DoveVoglioSalvare\"                    'Percorso salvataggio
myFileName = ThisDoc.FileName(False)                'Nome del file senza percorso e senza estensioen
myRev = InputBox("Rev.:", "Revisione","00")            'Rischiesta inserimento revisione

newFileName = myPath & myFileName & myRev & ".pdf"    'Creazione del nome

'MessageBox.Show(newFileName, "Nome del file")

ThisDoc.Document.SaveAs(newFileName , True)            'Salvataggio del Documento
 

Adahm

Utente standard
Professione: Consulente di Processo
Software: CatiaV5 / Inventor21
Regione: Lombardia
Io in vba farei così

Codice:
Sub EsportaPDF()

    ' Definisce il documento attivo
    Dim oDoc As Document
    Set oDoc = ThisApplication.ActiveDocument
    
    Dim sPercorso As String       ' Percorso
    Dim sNomeFile As String       ' Nome file senza estensione
    Dim sFileCompleto As String   ' Nome del file completo di percorso ed estensione
    
    ' Definisce il percorso in cui si trova il file corrente
    sPercorso = Left(oDoc.File.fullFilename, InStrRev(oDoc.File.fullFilename, "\"))
    sNomeFile = Left(oDoc.DisplayName, InStrRev(oDoc.DisplayName, ".") - 1)
    
    ' Definisce il nome completo del file
    sFileCompleto = sPercorso & sNomeFile & ".pdf"
    
    oDoc.SaveAs sFileCompleto, True     'Salva il file
    
End Sub
 

Gian704

Utente poco attivo
Professione: Disegnatore
Software: Inventor
Regione: Lombardia
Grazie mille, funziona, così è abbastanza semplice. 👍
 

batleo

Utente Junior
Professione: disegnatore
Software: inventor
Regione: Piemonte
Ciao a tutti io uso questa regola portata dalla 2013 alla 2021 e funziona
prende i valori dal modello (ad esempio codice , Revisione , descrizione) e salva in pdf in altra cartella
Codice:
modelName = IO.Path.GetFileName(ThisDrawing.ModelDocument.FullFileName)


iProperties.Value("Project", "Part Number") = iProperties.Value(modelName,"Project", "Part Number")
iProperties.Value("Project", "Description") = iProperties.Value(modelName,"Project", "Description")
iProperties.Value("Project", "Revision Number") = iProperties.Value(modelName,"Project", "Revision Number")
iProperties.Value("Status", "Status") = iProperties.Value(modelName,"Status", "Status")


If Not iProperties.Value(modelName,"Project", "Revision Number")="" Then
strFolder = "M:\Documenti Condivisi\xxx\" & ThisDoc.FileName(False) 'without extension
ThisDoc.Document.SaveAs(strFolder & ("-") & ("- Rev. ") & iProperties.Value(modelName,"Project", "Revision Number") & (".pdf") , True)

End If

If  iProperties.Value(modelName,"Project", "Revision Number")="" Then
'ThisDoc.Document.SaveAs(ThisDoc.ChangeExtension(".pdf"), True)
strFolder = "M:\Documenti Condivisi\xxxx\" & ThisDoc.FileName(False) 'without extension
ThisDoc.Document.SaveAs(strFolder & ("-") &  (".pdf") , True)

End If
Codice:
 

windreef

Utente Junior
Professione: Progettista meccanico
Software: Inventor 2022
Regione: Toscana
Vuoi salvare in pdf aggiungendo la revisione?

Codice:
Dim myPath As String
Dim myFileName As String
Dim myRev As String
Dim newFileName As String


myPath = "C:\DoveVoglioSalvare\"                    'Percorso salvataggio
myFileName = ThisDoc.FileName(False)                'Nome del file senza percorso e senza estensioen
myRev = InputBox("Rev.:", "Revisione","00")            'Rischiesta inserimento revisione

newFileName = myPath & myFileName & myRev & ".pdf"    'Creazione del nome

'MessageBox.Show(newFileName, "Nome del file")

ThisDoc.Document.SaveAs(newFileName , True)            'Salvataggio del Documento
Ciao, grazie mille funziona perfettamente.
Una domanda è complicato , invece di inserire manualmente il numero di revisione , farlo leggere direttamente dalle iproperties del disegno?
Altra cosa ma questa solo per curiosità , si può far salvare i file nella directory di origine del file idw?

grazie mille
ciao
 

batleo

Utente Junior
Professione: disegnatore
Software: inventor
Regione: Piemonte
Ciao la regola che ho postato sopra prende il valore della revisione dal modello , lo copia nelle iproperties del disegno e lo inserisce nel nome file.
 

windreef

Utente Junior
Professione: Progettista meccanico
Software: Inventor 2022
Regione: Toscana
Ciao la regola che ho postato sopra prende il valore della revisione dal modello , lo copia nelle iproperties del disegno e lo inserisce nel nome file.
Ciao,
avevo provato anche la tua ma mi dava un errore , perchè avevo fatto una caxxata io, e non ho approfondito , ora ho risolto. funziona allagrande è quello che cercavo, grazie.
P.s. stessa domanda sulla directory di salvataggio ma è proprio una cosa non indispensabile (tipo ciliegina sulla torta) . Sarebbe possibile salvare i pdf nella stessa cartella di origine del file idw?
grazie mille
ciao
 

windreef

Utente Junior
Professione: Progettista meccanico
Software: Inventor 2022
Regione: Toscana
Ciao la regola che ho postato sopra prende il valore della revisione dal modello , lo copia nelle iproperties del disegno e lo inserisce nel nome file.
Ho fatto cosi e sembra funzionare :

modelName = IO.Path.GetFileName(ThisDrawing.ModelDocument.FullFileName)


iProperties.Value("Project", "Part Number") = iProperties.Value(modelName,"Project", "Part Number")
iProperties.Value("Project", "Description") = iProperties.Value(modelName,"Project", "Description")
iProperties.Value("Project", "Revision Number") = iProperties.Value(modelName,"Project", "Revision Number")
iProperties.Value("Status", "Status") = iProperties.Value(modelName,"Status", "Status")


If Not iProperties.Value(modelName,"Project", "Revision Number")="" Then

ThisDoc.Document.SaveAs(ThisDoc.ChangeExtension("_") & iProperties.Value(modelName,"Project", "Revision Number") & (".pdf") , True)
ThisDoc.Document.SaveAs(ThisDoc.ChangeExtension("_") & iProperties.Value(modelName, "Project", "Revision Number") & (".dxf"), True)
ThisDoc.Document.SaveAs(ThisDoc.ChangeExtension("_") & iProperties.Value(modelName,"Project", "Revision Number") & (".dwg") , True)
End If

If iProperties.Value(modelName,"Project", "Revision Number")="" Then

ThisDoc.Document.SaveAs(ThisDoc.ChangeExtension (".pdf") , True)
ThisDoc.Document.SaveAs(ThisDoc.ChangeExtension (".dxf"), True)
ThisDoc.Document.SaveAs(ThisDoc.ChangeExtension (".dwg") , True)
End If
 

Andrea Scarnecchia

Autodesk CAD & PDM expert, SymbioTech founder
Professione: Esperto CAD e PDM Autodesk, Founder della SymbioTech
Software: Autodesk Inventor, AutoCAD, Autodesk Vault, ST-Publisher, ST-Boosters
Regione: Piemonte
Utilissima, ma non gira sulla 2021. Qualcuno sa se c'è un'alternativa?
Questo si può provare gratis ed esporta DWG e PDF, oltre ai DXF delle lamiere e ad avere altri comandi interessanti: