creare parametri con vba

MARCOC

Utente Standard
Professione: disegnatore
Software: autocad-inv2018-solid2017
Regione: piemonte
Buongiorno a tutti

ho trovato su intrenet queste righe di vba che dovrebbero creare un parametro "NewParam1" al'interno di in file parte assieme??? non so di inventor

il tutto non funziona, qualcuno mi sa dare un amano e dirmi cos ace che non va???

Sicuramente manca qualche pezzo ma non so cosa e dove


Sub prova()
Dim oUserParams As UserParameters
Set oUserParams = oCompDef.Parameters.UserParameters
Dim oParam As Parameter
Set oParam = oUserParams.AddByExpression("NewParam1", "3", _
kInchLengthUnits)

End Sub

grazie mille
 

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2020
Regione: Veneto
Visto che la defininizione di "parte assieme" è per me particolarmente fumosa ho aggiornato l'esempio che si rova nell'help di Inventor (? in alto a destra> ? > Guida di programmazione/API>Sample programs>General>Parameters) da cui credo siano state state estratte alla membro di levriero le righe che hai trovato in rete. L'esempio originale funzionava solo con i file parte; questo anche con i file assieme. Il codice che hai trovato era privo delle righe di codice dove si dice al programma su cosa agire, ovvero nel nostro caso l'"activeEditDocument" ovvero il documento che stai editando al momento del lancio della macro.

Codice:
Public Sub CreateParameters()
    ' Get the active document.
    Dim oDoc As Document
    Set oDoc = ThisApplication.ActiveEditDocument
    
    ' Get the UserParameters collection
    Dim userParams As UserParameters
    

    Select Case oDoc.DocumentType
        Case kAssemblyDocumentObject
            Dim oAssy As AssemblyDocument
            Set oAssy = oDoc
            Set userParams = oAssy.ComponentDefinition.Parameters.UserParameters
        
        Case kPartDocumentObject
            Dim oPart As PartDocument
            Set oPart = oDoc
            Set userParams = oPart.ComponentDefinition.Parameters.UserParameters
        
        Case Else
            MsgBox ("Errore")
            Exit Sub
    End Select
    
    
    
    ' Create a parameter using an expression.  The parameters unit is specified
    ' as millimeters, but the value of the parameter will be 3 inches because
    ' the unit is specified as part of the expression.
    Dim param As Parameter
    Set param = userParams.AddByExpression("NewParam1", "3 in", kMillimeterLengthUnits)
    
    ' Create a parameter using a value.  When setting by value, the value is always
    ' in database units.  In this case it is a length so it will always be in
    ' centimeters.  The units used for the parameter will be the current length units
    ' of the document because it's defined to use the default display length units.
    Set param = userParams.AddByValue("NewParam2", 3 * 2.54, kDefaultDisplayLengthUnits)
End Sub
 

MARCOC

Utente Standard
Professione: disegnatore
Software: autocad-inv2018-solid2017
Regione: piemonte
grazie mille catafratto ..ora funziona...
ti presento un altro problema... questa macro dovrebbe cambiarmi il fattore k al componente in lamiera...sempre trovata su internet...questa parte e poi si pianta dove vedi la scritta in giallo...mi sai dire perché??? io ho inv 2015 ho provato a cercare nella libreria oggetti ma il "activeUnfoldMethod" non lo trova...e per quello che si pianta??? e se si come si risolve???
solo tu catafratto che sei molto ferrato su vba mi puoi dare una mano

grazie ancora

fattore k.PNG
 

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2020
Regione: Veneto
Prova con ... = oSheetMetalStyle.UnfoldMethod

Quando non trovi qualcosa prova a cercare ... un punto prima, ovvero se non trovi UnfoldMethod cerca sheetMetalStyle.

E soprattutto dai un'occhiata agli esempi nel posto dove ho indicato prima che c'è l'esempio che mostra come accedere alle caratteristiche dello sheetmetal (insieme ad un altra decina di esempi vari sull'argomento)
 

MARCOC

Utente Standard
Professione: disegnatore
Software: autocad-inv2018-solid2017
Regione: piemonte
ok.catafratto...pero oltre a quello come mai ActivUnfoldMethod nella libreria degli oggetti che ho io no lo trovo???...questi possono cambiare da versione a versione di inventor???

ho provato a sostituirlo con quello che hai scritto tu...adesso la macro si pianta più avanti e non so cosa fare


Cattura3.PNG

perché li dopo il punto il value non me lo trova???
 

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2020
Regione: Veneto
ActiveUnfolMethod non lo trovi perché non c'é
UnfoldMethod.Value dà errore perchè non c'é
UnfoldMethod.kFactor c'è e ti compare tra le scelte dopo la digitazione del '.' di "oUnfoldMethod."

Usa l'help: devi averlo sempre aperto, mica è roba che impari a memoria ma roba che impari a cercare. Fa prove. Fa ca££ate e vedi che succede. Cambia sito dove trovi il codice (o assicurati che non sia postato da qualcuno che chiede come mai non funziona :tongue:)
 

MARCOC

Utente Standard
Professione: disegnatore
Software: autocad-inv2018-solid2017
Regione: piemonte
Ciao catafratto...innanzitutto grazie...adesso funziona...pero io quella macro la scritta Brian Ekins che e uno sviluppatore autodesk...scrive un sacco di forum e molti tutorial...mi sembra strano che scriva delle stringhe che non esistono...sai dirmi qualcosa di piu???..
 

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2020
Regione: Veneto
Che ha fatto un errore, visto che non funziona :)
So chi è Ekins, leggo sempre il suo blog ed è bravissimo ma è un essere umano e qualcosa può scappargli. Oppure il codice è vecchio e qualcosa è cambiato nel frattempo. Oppure ci sono dei pezzi che mancano. Oppure mille altre cose che dipendono dal contesto in cui è stata scritta la cosa (posta il link se vuoi). Comunque vedi anche tu, no? con .Value non va, con .kFactor va. Nell'help UnfoldMethod.Value non c'è, UnfoldMethod.kFactor c'è.
 

MARCOC

Utente Standard
Professione: disegnatore
Software: autocad-inv2018-solid2017
Regione: piemonte

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2020
Regione: Veneto
Incuriosito ho fatto una ricerca, credo di aver trovato il post ed è del 2006, tante cose sono cambiate da allora. Stando all'help il .kFactor è stato introdotto nel 2009. Grossi aggiornamenti nella struttura di Inventor si ripercuotono sulle API (mi pare gli stili lamiera non fossero in libreria una volta).
 

Adahm

Utente standard
Professione: Consulente di Processo
Software: CatiaV5 / Inventor21
Regione: Lombardia
Ciao a tutti,

in merito alla creazione di parametri utente tramite il comando
.UserParameters.AddByValue(Name As String, Value, Units)
Qualcuno mi sa dire se esiste il modo di verificare se un parametro esiste per poterlo creare solo nel caso non esista?

Grazie
 

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2020
Regione: Veneto
Non mi pare, io faccio un ciclo tra tutti i parametri utente e vedo se c'è.
 

Adahm

Utente standard
Professione: Consulente di Processo
Software: CatiaV5 / Inventor21
Regione: Lombardia
Eheh... il punto sta proprio lì, come fai a vedere se c'è? :D
Trovato!
Ciclo con un for i Parametri utente, ne leggo il nome e lo confronto con il mio.
Grazie per la dritta!!!
 

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2020
Regione: Veneto
tipo:
Esiste = false
For Each oParam In oUserParameters
If oParam.Name = IlMioParametro Then
Esiste = true
End If
Next
 

Adahm

Utente standard
Professione: Consulente di Processo
Software: CatiaV5 / Inventor21
Regione: Lombardia
Ciao,

nella lettura dei parametri con Units = "mm", non capisco come mai mi legge il valore in "cm".
Mentre valori angolari vengono letti in Radianti anche se l'unità di misura è "gr".

Qualcuno sa dirmi come trasformarli in gradi?
La formula dovrebbe essere Angolo*180/Pi.Greco, ma non trovo la costante Pi.Greco
 

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2020
Regione: Veneto
I parametri sono memorizzati in cm indipendente dall'unità impostata (meno male che non usa i pollici!)

In iLogic la costante è PI

In VBA:
Esempio di funzione Atn
Dim pi
pi = 4 * Atn(1)

(dall'help VBA)
 

Adahm

Utente standard
Professione: Consulente di Processo
Software: CatiaV5 / Inventor21
Regione: Lombardia
Grande!
Grazie Catafratto!
Lo so che tu trovi tutto sull'Help VBA, ma non è così facile scovare le cose :sneaky:
 

MARCOC

Utente Standard
Professione: disegnatore
Software: autocad-inv2018-solid2017
Regione: piemonte
ciao a tutti, riprendo questa mia vecchione , in quanto ho provato la regola che funzionava su inventor 2015 sulla 2018 e mi da errore sulla prima riga
1615144902529.png
mi segna in giallo la prima riga

qualche aiuto???
 

Adahm

Utente standard
Professione: Consulente di Processo
Software: CatiaV5 / Inventor21
Regione: Lombardia
ciao a tutti, riprendo questa mia vecchione , in quanto ho provato la regola che funzionava su inventor 2015 sulla 2018 e mi da errore sulla prima riga
Vedi l'allegato 61201
mi segna in giallo la prima riga

qualche aiuto???
La riga di colore giallo indica il punto in cui è arrivato il programma nel suo svolgimento.
L'errore potrebbe essere più in basso.
Puoi mostrare l'errore che ti compare?