VBA mit Autodesk Inventor?

  • Sonstige

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    VBA mit Autodesk Inventor?

    Hallo,
    ich habe schon vorher mit VB-6 gearbeitet und möchte nun versuchen durch Command Buttons bestimmte Bewegungen oder Animationen in Inventor abrufen/abspielen lassen.
    Habt ihr da eine Idee? Wie rufe ich die Teile im Code auf, damit er weiß welches teil er suchen muss um die Bewegung zu definieren? Vielleicht könnte man ja auch die Animationen schon vorgeben in der Animationsumgebung und diese dann eben einzeln abspielen lassen... Freue mich schon jetzt auf eure Antworten:)

    Kathleen
    "Der Visual Basic ist nur so schlau wie der, der davor sitzt" - Na schön! Dann steh ich eben auf!

    "Wenn du denkst es geht nicht mehr kommt irgendwo ein Lichtlein her"
    If Tunnel.Licht = JemandImTunnelDerVerzweifeltIst Then Licht.Aus = True
    Danke. Jetzt muss ich da nur noch durchblicken ;) Wusste nicht, dass es sowas gibt also vielen vielen Dank! Hast mir echt geholfen.

    Das heißt, wie ich das jetzt daraus erkenne, man muss den Pfad angeben: Applications.Documents. .... oder wie versteht man die Grafik?
    "Der Visual Basic ist nur so schlau wie der, der davor sitzt" - Na schön! Dann steh ich eben auf!

    "Wenn du denkst es geht nicht mehr kommt irgendwo ein Lichtlein her"
    If Tunnel.Licht = JemandImTunnelDerVerzweifeltIst Then Licht.Aus = True

    Kathleen schrieb:

    Wusste nicht, dass es sowas gibt
    Quelle: usa.autodesk.com/adsk/servlet/index?id=1079044&siteID=123112

    Kathleen schrieb:

    Applications.Documents
    Genau.
    Das ist der Einstiegspunkt.
    Am besten, du hangelst dich mit Hilfe des Objektbrowsers in VBA an die richtige Stelle.

    Ein Tutorial, wie du mit der Autodesk-VBA-Umgebung umgehst:
    download.autodesk.com/us/community/mfg/Part_1.pdf
    download.autodesk.com/us/community/mfg/Part_2.pdf
    download.autodesk.com/us/community/mfg/Part_3.pdf
    download.autodesk.com/us/community/mfg/Part_4.pdf

    Und zum Schluss noch eine Präsentation, falls du lieber auf passives Lernen stehst:
    download.autodesk.com/media/ad…_to_Inventor_Programming/
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    hm, ja... oke, wie ich das so sehe ziehmlich einfach, wenn man durchblickt... aber muss ich dem jetzt jedes mal den gaaaanzen Pfad angeben? Das heißt ihm sagen Application, Document, und so weiter und so fort, oder kann ich wie bei VB 6 zum Beispiel sagen Me.LampeAn = True oder so? Ich meine im Code dass ich dem einen kurzen Pfad gebe, damit der eine einzige bestimmte Bewegung ausführt? Beispielsweise möchte ich ihm sagen,

    Private Sub CommandButton1_Click()
    "Dreh Abhängigkeit11 entlang der drehbaren Achse"
    "Der Visual Basic ist nur so schlau wie der, der davor sitzt" - Na schön! Dann steh ich eben auf!

    "Wenn du denkst es geht nicht mehr kommt irgendwo ein Lichtlein her"
    If Tunnel.Licht = JemandImTunnelDerVerzweifeltIst Then Licht.Aus = True

    Kathleen schrieb:

    aber muss ich dem jetzt jedes mal den gaaaanzen Pfad angeben?
    Nein. Natürlich kannst du immer wieder verwendete Pfade in Objektvariablen abspeichern und diese direkt ansprechen.
    Die Techniken aus VB6 funktionieren auch in VBA.

    Visual Basic-Quellcode

    1. Dim Doc As Document
    2. Dim PS As PropertySets
    3. Dim SummaryInfo As PropertySet
    4. Set Doc = ThisApplication.ActiveDocument
    5. Set PS = Doc.PropertySets
    6. Set SummaryInfo = PS.Item("Inventor Summary Information")
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    huh. kannst du mal dahinterschreiben, was der in den speziellen zeilen macht? Ich blick nicht so ganz durch diese Deklarationen. Also du sagst ihm
    Ruf irgendein Dokument unter dem Namen Doc auf
    Ruf die PropertySets(keine Ahnung, was das sind, hab ich in Visual Basics nich so gehört, sind das vielleicht die Eigenschaften eines objekts?) unter dem Namen PS auf
    (Die nächste Zeile versteh ich garnicht...)

    Sag dem Doc, es ist das aktive Dokument(meint der damit das .iam?)
    Sag den (Eigenschaften?) sie sind die selben des aktiven Dokuments
    (Was ruft man mit SummaryInformation und PS.Item auf?) setz die Summary Info gleich der Eigenschaft Item (Ist das vielleicht der bestimmte Name des einzelbauteils?)

    - hab mal nach Eigenschaft Item gesucht:
    Item [C#, VB]

    Lese-/SchreibzugriffGets or sets the element value at the specified key index

    Was bedeutet das dann? Das mit der SummaryInformation find ich jetzt nicht im zusammenhang zu der Sache mit Item.
    "Der Visual Basic ist nur so schlau wie der, der davor sitzt" - Na schön! Dann steh ich eben auf!

    "Wenn du denkst es geht nicht mehr kommt irgendwo ein Lichtlein her"
    If Tunnel.Licht = JemandImTunnelDerVerzweifeltIst Then Licht.Aus = True

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Kathleen“ ()

    Das eine sind die sprachlichen Elemente und die Syntax.
    Das ist Standard VB6 bzw. VBA.
    Der andere Teil ist das Objektmodell der Anwendung.
    Bei VBA bekommst du das alles mit an Bord (dafür steht das "A").

    Um dein Problem zu lösen solltest du zum einen die Grundlagen der Sprache beherrschen.
    Zum anderen musst du das Objektmodell verstehen, damit du auch in die Anwendung selbst eintauchen kannst.

    Die Objekte in meinem Beispielcode sind einfach nur aus den von mir verlinkten Beispielcode entnommen und entsprechend umgesetzt.
    Da ich Inventor nicht einsetze, kann ich auch nur erahnen, was sich im einzelnen dahinter verbirgt.

    Da es dir anscheinend sehr an Grundlagen fehlt, solltest du die Links einfach mal Schritt für Schritt durchexerzieren und verstehen lernen.
    Gibt es niemand in deiner Umgebung, der sich neben dich setzt und mit dir die ersten Schritte geht?

    Das Laufen lernen besteht in der Hauptsache aus zwei Elementen:
    - immer wieder auf die Schnauze fallen und immer wieder aufstehen und neu probieren
    - jemanden zu haben, der dich an die Hand nimmt, damit das Fallen nicht so weh tut
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --