Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor .NET
  Sub aus Modul aufrufen?

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Sub aus Modul aufrufen? (3107 mal gelesen)
axi92
Mitglied
Konstrukteur


Sehen Sie sich das Profil von axi92 an!   Senden Sie eine Private Message an axi92  Schreiben Sie einen Gästebucheintrag für axi92

Beiträge: 685
Registriert: 20.02.2010

erstellt am: 10. Jul. 2012 14:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ich habe mir meine Subs wie auch in VBA in Module geschrieben.

So sieht das aus:


Public Sub DWG(ByVal ThisApplication As Inventor.Application)


Wenn ich das Sub jetzt bei einem Klick auf einen Button aufrufen will funktioniert das nicht wie geplant, es fehlt ihm die Übergabe von dem in den ().
Das habe ich versucht:

        Makros.DWG()        'Versuch1
        Call Makros.DWG()  'Versuch2

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




Sehen Sie sich das Profil von rkauskh an!   Senden Sie eine Private Message an rkauskh  Schreiben Sie einen Gästebucheintrag für rkauskh

Beiträge: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 10. Jul. 2012 18:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für axi92 10 Unities + Antwort hilfreich

lesen bildet 

------------------
MfG
Ralf

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

axi92
Mitglied
Konstrukteur


Sehen Sie sich das Profil von axi92 an!   Senden Sie eine Private Message an axi92  Schreiben Sie einen Gästebucheintrag für axi92

Beiträge: 685
Registriert: 20.02.2010

erstellt am: 11. Jul. 2012 07:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Gut jetzt weiß allgemein was dort übergeben wird danke!

Jedoch in meinem Fall verstehe ich es noch nicht da, wenn ich es richtig vermute. Es nur eine "umdeklarierung" ist was in der klammer steht damit man ThisApplication verwenden kann oder?
Aber was muss ich dann mitübergeben???

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




Sehen Sie sich das Profil von rkauskh an!   Senden Sie eine Private Message an rkauskh  Schreiben Sie einen Gästebucheintrag für rkauskh

Beiträge: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 11. Jul. 2012 09:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für axi92 10 Unities + Antwort hilfreich

Moin

Einfach ausgedrückt kannst du über das in den Klammern Objekte von einer aufrufenden Sub an die aufgerufene Sub übergeben. Beispiel: Du hast ein PartDocument offen und startest eine Sub, die eine Extrusion erstellen soll. Aus dieser Sub Extrusion rufst du die Sub "SkizzeErstellen" auf. Jetzt wär's ja praktisch wenn in dem Aufruf auch gleich das Dokument mit übergeben wird in dem die Skizze erstellt werden soll oder? Also ruft man Sub "SkizzeErstellen (oPartDoc)" auf und beginnt Sub Skizze erstellen mit Private Sub SkizzeErstellen(ByVal PartDoc as PartDocument). Jetzt hast du in Sub SkizzeErstellen eine Variable PartDoc, die dein PartDocument enthält. Dann könnstest du z.B. gleich mal prüfen, ob PartDoc nicht zufällig Nothing ist (könnte ja sein) und sofort wieder aussteigen oder den drohenden Fehler abfangen.

------------------
MfG
Ralf

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

axi92
Mitglied
Konstrukteur


Sehen Sie sich das Profil von axi92 an!   Senden Sie eine Private Message an axi92  Schreiben Sie einen Gästebucheintrag für axi92

Beiträge: 685
Registriert: 20.02.2010

erstellt am: 11. Jul. 2012 10:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Dein Beispiel klingt logisch, jedoch habe ich ja kein oThisApplication? Was verwende ich in den Klammern?

[Diese Nachricht wurde von axi92 am 11. Jul. 2012 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




Sehen Sie sich das Profil von rkauskh an!   Senden Sie eine Private Message an rkauskh  Schreiben Sie einen Gästebucheintrag für rkauskh

Beiträge: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 11. Jul. 2012 11:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für axi92 10 Unities + Antwort hilfreich

Hallo

Es ist eine optionale Möglichkeit. Niemand zwingt dich dort etwas zu übergeben. Es muß nur identisch auf beiden Seiten sein. Im Klartext, rufst du deine Sub mit "Makros.DWG()" auf, muß es auch "Private Sub DWG()" heißen, sonst erwartet die Sub DWG das du ihr das was in Klammern steht auch übergibst.

------------------
MfG
Ralf

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

axi92
Mitglied
Konstrukteur


Sehen Sie sich das Profil von axi92 an!   Senden Sie eine Private Message an axi92  Schreiben Sie einen Gästebucheintrag für axi92

Beiträge: 685
Registriert: 20.02.2010

erstellt am: 11. Jul. 2012 12:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ok wenn ich das aber so mache will er das nicht.

Und das ByVal definiert ja das alle ThisApplication als Inventor.Application verwendet werden müssen oder?
Weil ThisApplication gibt es ja in VB.NET gar nicht.

Ja und hier mein Screen von den Fehlern:

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




Sehen Sie sich das Profil von rkauskh an!   Senden Sie eine Private Message an rkauskh  Schreiben Sie einen Gästebucheintrag für rkauskh

Beiträge: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 11. Jul. 2012 13:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für axi92 10 Unities + Antwort hilfreich

Hallo

Nööö, das geht so nich. Ich kann mich irren, meine aber die Subs im Modul müssen Public sein.

in deinem Modul sollte es so aussehen:

Code:
Module Test
    Public Sub DWG()
        MsgBox("test")
    End Sub
End Module

und in deiner Form so:

Code:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        DWG()
    End Sub

Außer du willst wirklich Variablen übergeben, dann müssen die in die Klammern. Aber beidseitig (s. mein letzes Post). Und schau dir nochmal an, was ByVal und ByRef bedeutet. Das hat nur mit der Art zu tun, wie übergebene Variablen behandelt werden.

------------------
MfG
Ralf

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

axi92
Mitglied
Konstrukteur


Sehen Sie sich das Profil von axi92 an!   Senden Sie eine Private Message an axi92  Schreiben Sie einen Gästebucheintrag für axi92

Beiträge: 685
Registriert: 20.02.2010

erstellt am: 11. Jul. 2012 13:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ja eh^^


Das ist im Modul:

Module Makros
    Public Sub DWG(ByVal ThisApplication As Inventor.Application)
        MsgBox("Test")
    End Sub
End Module


Und das in der Form1:


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Makros.DWG(ByVal ThisApplication As Inventor.Application)        'Versuch1
    End Sub

So funktioniert es aber nicht?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




Sehen Sie sich das Profil von rkauskh an!   Senden Sie eine Private Message an rkauskh  Schreiben Sie einen Gästebucheintrag für rkauskh

Beiträge: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 11. Jul. 2012 18:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für axi92 10 Unities + Antwort hilfreich

Hallo

Nö, tut es auch nicht. Wie lautet denn der Name deiner Variable InventorApplication? Nehmen wir mal an du hast in deiner Activate-Sub ein

Code:

Public Sub Activate(ByVal oAddInSiteObject As Inventor.ApplicationAddInSite, ByVal bFirstTime As Boolean) Implements Inventor.ApplicationAddInServer.Activate

'hier könnte noch ein bißchen anderer Code bei dir stehen

Dim MyInventor as InventorApplication
MyInventor=oAddInSiteObject.Application


stehen. Dann ist MyInventor die Variable deiner InventorApplication. Um die in deine Sub DWG zu übergeben:

Code:
Module Test
    Public Sub DWG(ByVal oInventor as Inventor.Application)
        'hier sollte aber auch Code kommen, der die Variable nutzt
        MsgBox("test")
    End Sub
End Module

Und der Aufruf in der Form:

Code:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        DWG(MyInventor)
    End Sub

------------------
MfG
Ralf

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

axi92
Mitglied
Konstrukteur


Sehen Sie sich das Profil von axi92 an!   Senden Sie eine Private Message an axi92  Schreiben Sie einen Gästebucheintrag für axi92

Beiträge: 685
Registriert: 20.02.2010

erstellt am: 12. Jul. 2012 07:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Wie der Name von Inventor.Application lautet keine Ahnung es kommt nirgends im Sub vor nur dort in der Klammer.

Bevor wir noch lange herumschreiben und ich mich erst recht nicht auskenne, hier das komplette Modul:


http://pastebin.com/1H0rFiMA

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




Sehen Sie sich das Profil von rkauskh an!   Senden Sie eine Private Message an rkauskh  Schreiben Sie einen Gästebucheintrag für rkauskh

Beiträge: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 13. Jul. 2012 18:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für axi92 10 Unities + Antwort hilfreich

Hallo

Sag mal, liest du nur jedes siebente Wort oder wie kann es sein das man meine Anleitung so beanwortet? Ihc habe gefragt wie die Variable für die Inventor Application in deiner StandardAddIn heißt?
In meinem letzten Beitrag steht haarklein drin was du wo hinschreiben sollst. Und dann ersetze bitte in deiner Sub "ThisApplication" mit "oInventor" und dann läuft das auch. Du hast hier ein Verständnisproblem. ThisApplication, bekannt aus VBA gibt es in vb nicht. Von daher rate ich auch immer von der Verwendung von Variablennamen, die Verwechslungsgefahr mit vb/vba-eigenen bietet, dringend ab.

------------------
MfG
Ralf

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz