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

Esecuzione automatica di macro VBA

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2016
Regione: Veneto
#1
Voglio condividere la soperta che ho fatto oggi: come far eseguire le macro VBA automaticamente.
In passato, si poteva farlo, ma nelle ultime versioni di Inventor la possibilità era stata rimossa (in vecchi post la cosa è stata ampiamente trattata) ed introdotto iLogic che offre molte possibilità ma per il quale sostanzialmente bisogna riscrivere quello che prima funzionava perfettamente. Non mi ero però mai accorto di questo comando:

InventorVb.RunMacro("ProgettoApplicazione", "Modulo1", "TestAutoRun")

che permette a iLogic di far "partire" la macro "TestAutoRun" (nome della macro preferita) contenuta nel "Modulo1" di "ProgettoApplicazione" (ALT-F11 per andare all'editor VBA)

In pratica si può creare una regola iLogic, attivata dal trigger di evento preferito (es. prima del salvataggio), che fa partire una o più macro, come quella che esportava PDF/DXF/DWG o quella delle scale in cartiglio tanto per capirsi.

La cosa può essere davvero utile per recuperare vecchie utility che erano automatiche e non lo sono più, senza bisogno di rifare tutto.

Spero la cosa sia utile a qualcuno e se la cosa era già nota... ignorate il post!
Buon Venerdì a tutti!
 

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2016
Regione: Veneto
#4
E' un artificio per attivare una qualunque macro VBA in seguito ad un evento, la cosa migliore è fare un test
 

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2016
Regione: Veneto
#6
Istruzione "veloce":
Gestione>Aggiungi Regola
Metti il nome che vuoi, si apre la finestra dove copi la riga (con le modifiche che servono in base al modulo e nome macro) postata all'inizio

Trigger di evento > scegli quali eventi attivano la regola

Per descrizioni più dettagliate serve più tempo

La regola purtroppo è legata al file, quindi se il test fa quello che vuoi si può mettere nei template per i pezzi nuovi ma per la roba vecchia è più un problema
 

dicifa

Utente Standard
Professione: Progettista
Software: inventor - AutoCad
Regione: lombardia
#8
Catrafatto, ho un problema!

ho creato la regola e funziona tutto bene però mi da un errore.

creodelle lamiere, a ogni modifica lo sviluppo si modifica da solo nelle ipropietes grazie alla regola...e fin qui tutto bene!...il problema nasce quando sono in un assieme, inserisco le mie lamiere, salvo, chiudo e mi esce l'errore!

esce l'errore "run-time, faccio "Debug" e mi manda alla macro dello sviluppo con evidenziate le righe che sarebbero sbagliate (penso)...cosa può essere?

allego degli screenshot.

grazie

errore.JPG
run time.JPG errore FlatPattern.JPG
 

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2016
Regione: Veneto
#9
MAH!
Chi può dirlo... :redface:

La segnalazione di errore che ricevi mi pare indichi che la macro sia attivata quando non c'è niente di aperto...

A che evento/i hai legato l'esecuzione della regola iLogic? Forse a "Chiudi il documento" (potrebbe spiegare il problema)
La regola iLogic è presente solo nelle lamiere?
 

dicifa

Utente Standard
Professione: Progettista
Software: inventor - AutoCad
Regione: lombardia
#10
si, l'ho fatto solo nella lamiera e ho anche impostato "chiudi il documento"

pensi che vada fatto in tutte le tipologie di file? lamiera, parti, assieme, ecc...
 

dicifa

Utente Standard
Professione: Progettista
Software: inventor - AutoCad
Regione: lombardia
#11
ma la regola non si può esportare e importare dove mi serve? al momento la creo ogni volta....
 

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2016
Regione: Veneto
#12
Io la imposterei su "Prima di salvare il documento", così fa il suo lavoro al salvataggio: con chiudi può trovarsi appunto la parte chiusa e non sapere che fare

- La cosa dello sviluppo lo lascierei sulle sole lamiere.
- Si possono creare regole "esterne" (guarda bene i tab delle regole) che scrivi una volta ma poi devi comunque collegare in ogni file, con il vantaggio però che ogni modifica sarà fatta una volta per tutte, altrimenti ogni parte ha la sua regola locale. Certe regole le imposterei nel template.
 

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2016
Regione: Veneto
#13
Incuriosito dall'argomento ho guardato meglio iLogic: in realtà la soluzione più diretta è usare questa regola al posto della macro:

Codice:
Dim sviluppo As String
Dim lungh As Integer
Dim largh As Integer

lungh = Ceil(SheetMetal.FlatExtentsLength)
largh = Ceil(SheetMetal.FlatExtentsWidth)
sviluppo = lungh & " x " & largh


iProperties.Value("Custom", "Sviluppo") = sviluppo
Fa la stessa cosa usando gli automatismi di iLogic
 

dicifa

Utente Standard
Professione: Progettista
Software: inventor - AutoCad
Regione: lombardia
#14
sei un genio! :4425:

questa è meglio e non crea nessun problema!!!

ho visto però che arrotonda in eccesso...ad esempio se faccio 20,1 lo sviluppo lo fa 21....
 

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2016
Regione: Veneto
#15
Round(n, 1) arrotonda n a un decimale
Ceil sempre all'intero superiore
Floor sempre all'intero inferiore
Scegliti ciò che più ti garba :tongue:

Se vuoi i decimali nelle prime righe Dim... al posto di integer metti double