• This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Leggi altro.

creare parametri con vba

MARCOC

Utente Standard
Professione: disegnatore
Software: autocad-inv2015-solid2015
Regione: piemonte
#1
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 2016
Regione: Veneto
#2
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-inv2015-solid2015
Regione: piemonte
#3
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 2016
Regione: Veneto
#4
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-inv2015-solid2015
Regione: piemonte
#5
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 2016
Regione: Veneto
#6
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-inv2015-solid2015
Regione: piemonte
#7
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 2016
Regione: Veneto
#8
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-inv2015-solid2015
Regione: piemonte
#9

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2016
Regione: Veneto
#10
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).