Beyond Inventor Wizard... The Community!

Autodesk Inventor en AutoCAD Forum

Inventor vba macro aanroepen vanuit template via autosave, HOT TOPIC! Solved!

Goeiemorgen,

Ik heb in mijn template een stukje vba geplaatst. Ik weet dat dit geen juiste oplossing is maar voorlopig kan ik even vooruit.

Weet iemand hoe ik vanuit mijn template via de onderstaande autosave een macro kan aanroepen die b.v. in Default.ivb staat?

Public Sub autosave()
    TimeStamp
End Sub

Die Timestamp code staat nu ook in de template maar dat is niet wat ik wil. Deze moet in Default.ivb komen te staan.

Alvast bedankt.

Vr. gr., Danny

Aantal maal bekeken: 755

Hierop reageren

Berichten in deze discussie

Hey Danny, Heb dit ooit eens gedaan vanuit excel, eerst moesten daar wat handelingen uitgevoerd worden, waarna ik een module binnen inventor moest aanspreken, hieronder de code:

Sub ExcelMain()
'----------------------------------------
'Deze sub roept inventor sub XXXNaamSpecifiekeSubXXX op
'----------------------------------------
Dim invApp As inventor.Application
Dim invVBAProject As inventor.InventorVBAProject
Dim invVBAModule As inventor.InventorVBAComponent
Dim invVBAProcedureToRun As inventor.InventorVBAMember

Set invApp = GetObject(, "Inventor.Application")

 'deze roept een VBAProject op, de 1 staat voor de volgorde van de projecten in de treeview binnen vba, zou ook een naam kunnen zijn, maar was lastig wegens het pad die kan veranderen.

Set invVBAProject = invApp.VBAProjects.Item(1)

Set invVBAModule = invVBAProject.InventorVBAComponents.Item("XXXNaamVanDeModuleWaarDeCodeInstaatXXX")
Set invVBAProcedureToRun = invVBAModule.InventorVBAMembers.Item("XXXNaamSpecifiekeSubXXX")
invVBAProcedureToRun.Execute

End Sub

Hoi Fréderic,

Bedankt. Ik ga het even proberen.

Je hoort het nog of het gelukt is.

Gr. Danny

Hoi Fréderic,

Een en ander geprobeerd maar niet gelukt helaas, de code doet niets.

zie hieronder de code zoals ik denk dat het moet zijn.

 

Sub autosave()

Dim invApp As inventor.Application
Dim invVBAProject As inventor.InventorVBAProject
Dim invVBAModule As inventor.InventorVBAComponent
Dim invVBAProcedureToRun As inventor.InventorVBAMember

Set invApp = GetObject(, "Inventor.Application")

 'deze roept een VBAProject op, de 1 staat voor de volgorde van de projecten in de treeview binnen vba, zou ook een naam kunnen zijn, maar was lastig wegens het pad die kan veranderen.

Set invVBAProject = invApp.VBAProjects.Item(1)

Set invVBAModule = invVBAProject.InventorVBAComponents.Item("Default.ivb")
Set invVBAProcedureToRun = invVBAModule.InventorVBAMembers.Item("TimeStamp")
invVBAProcedureToRun.Execute

End Sub

 

Weet je nog een andere mogelijkheid?

 

Alvast bedankt.

 

Gr. Danny

Je moet uw Default.ivb veranderen door de modulenaam (bvb Module1)

en waar jij timestamp zet, das de naam van de sub veronderstel ik.

Dan werkte dit bij mij.

Hier de volledige code:

Public Sub Autosave()


Dim invApp As Inventor.Application
Dim invVBAProject As Inventor.InventorVBAProject
Dim invVBAModule As Inventor.InventorVBAComponent
Dim invVBAProcedureToRun As Inventor.InventorVBAMember
Set invApp = GetObject(, "Inventor.Application")
Set invVBAProject = invApp.VBAProjects.Item(1)
Set invVBAModule = invVBAProject.InventorVBAComponents.Item("Module2")
Set invVBAProcedureToRun = invVBAModule.InventorVBAMembers.Item("testsub")
invVBAProcedureToRun.Execute

End Sub

Voor wat je nu aan het doen bent, zou ik toch eens denken om .net te beginnen :-)

Je hebt gelijk wat betreft .NET. Ben er ook al mee bezig maar ik ben net begonnen met een eerste Add-In en die wil nog niet lukken. Dan wordt dit mijn tweede die wellicht wel gaat werken.

In elk geval bedankt voor de info.

Gr. Danny

Gelukt met bovenstaande code?

Fréderic,

 

Ik heb precies gedaan wat je beschreef maar dat werkte bij mij niet. Daarna nog alle mogelijke combinaties geprobeerd maar helaas geen reactie.

Op dit moment laat ik het maar even voor wat het is. Komt tijd komt raad.

In elk geval bedankt voor de input.

 

Gr. Danny

Jammer want de code doet het wel bij mij, maar misschien is uw situatie net iets anders.

Gebruik dan in elk geval de tutorial waarvan je de link kunt vinden op de macro pagina!

Hoi,

 

Laadt de volgende ivb eens in invetor, door in de application options het pad aan te passen.

Copieer dan de Module met MdlAutoSave naar je part.

 

Mocht je nog vragen hebben, dan hoor ik het wel.

 

Groetjes

Bijlagen:

Heb het uitgetest door de code in MdlAutoSave te kopieren naar het ThisDocument en het werkt bij mij... Goeie Arthur!

Hoi Fréderic en Arthur,

Ik heb het ook werkend gekregen maar alleen als zowel de sub autosave als de module in één bestand staan. Maar niet wanneer de uit te voeren code in de Default.ivb (onder Application Options) staat en de sub autosave in het ThisDocument van een idw.

Ik heb Inventor 2010 onder Windows 7 64.

Maar evengoed bedankt voor jullie input.

Gr. Danny

RSS

Interessante links

Word Fan!

Inventor Wizard Cartoons

Video's

  • Video's toevoegen
  • Alles weergeven

© 2019   Gemaakt door Stefaan Boel.   Verzorgd door

Banners  |  Een probleem rapporteren?  |  Algemene voorwaarden