Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Late Binding Visual Basic 2008

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
Autor Thema:  Late Binding Visual Basic 2008 (1774 mal gelesen)
tobiley
Mitglied
Masterstudent


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

Beiträge: 59
Registriert: 15.02.2010

Win XP
CatiaV5 R17, R18, R19
HD2-Lizenz
VB2008

erstellt am: 06. Jun. 2011 16:31    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

Hallo,

Ich habe das Buch CATIA V5 automatisieren gelesen. Und bin gerade dabei mich in das Late Bindung einzuarbeiten. Das klappt soweit eigentlich auch ganz gut, ich stolpere hin und wieder aber über ein paar befehle die ich nicht ins Late Binding übertragen bekommen.
Kann mir jemand sagen wie der Befehl "CATIA.ActiveDocument.Product.ApplyWorkMode(CatWorkModeType.DESIGN_MODE)" im Late Binding aussehen muss. Mit

Code:

        param(0) = "CatWorkModeType.DESIGN_MODE"
        lb_methode(MyProduct, "ApplyWorkMode", param)

    Sub lb_methode(ByVal ob As Object, ByVal Befehl As String, ByVal param As Object())
        lb_result = ob.GetType().InvokeMember(Befehl, BindingFlags.InvokeMethod Or BindingFlags.OptionalParamBinding, Nothing, ob, param)
    End Sub



hats nicht geklappt. Oder habe ich prinzipiell einen Fehler im Aufbau?

Vielen Dank für eure Hilfe!

Grüße Tobi

[Diese Nachricht wurde von tobiley am 06. Jun. 2011 editiert.]

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

INLU
Mitglied
Konstrukteur Automotive


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

Beiträge: 71
Registriert: 01.03.2008

erstellt am: 07. Jun. 2011 09:16    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 tobiley 10 Unities + Antwort hilfreich

Hallo tobiley,

ich hatte das gleiche Problem.

Ich habe mich komplett von der Variante lb_get und lb_set als Prozedur getrennt. Seit VBS 2008 ist es anscheinend auch leichter Late Binding umzusetzen. Wenn ich heute Nachmittag Zuhause bin, poste ich dir ein paar Beispiele. Den Code habe ich nur Zuhause und aus dem Kopf kriege ich das nicht hin.

Mfg
    Lars

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

tobiley
Mitglied
Masterstudent


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

Beiträge: 59
Registriert: 15.02.2010

Win XP
CatiaV5 R17, R18, R19
HD2-Lizenz
VB2008

erstellt am: 07. Jun. 2011 18:55    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

Hallo Lars,

cool schon mal vielen Dank dafür!

Mfg Tobi

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

tobiley
Mitglied
Masterstudent


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

Beiträge: 59
Registriert: 15.02.2010

Win XP
CatiaV5 R17, R18, R19
HD2-Lizenz
VB2008

erstellt am: 09. Jun. 2011 14:55    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

Probleme habe ich eigentlich nur bei Befehlen bei denen ein "Parameter mit "." übergeben werden muss.

Wie oben bei "CatWorkModeType.DESIGN_MODE" oder "CatVisPropertyShow.catVisPropertyNoShowAttr".

Mit dem implizieten Late Binding komme ich da auch ncit weiter weil er dann immer meckert wenn ich die oben aufgeführten Konstanten einsetze und diese als unbekannt unterkringelt.

Wenn Lars doer irgendwer anders mir dabei helfen könnte, wäre mir sehr geholfen!

Vielen Dank euch schonmal.

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

INLU
Mitglied
Konstrukteur Automotive


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

Beiträge: 71
Registriert: 01.03.2008

erstellt am: 10. Jun. 2011 09: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 Nur für tobiley 10 Unities + Antwort hilfreich

Sorry, habe dich total vergessen!

Heute Nachmittag schaffe ich es aber.

Aber vielleicht kannst du mal ein Beispiel posten für lb_get oder lb_set mit dem Aufruft dazu. Ich habe es damals nicht hin bekommen!

mfg
  Lars

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

Tstone
Mitglied
Werkzeugkonstrukteur


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

Beiträge: 163
Registriert: 04.06.2003

Dell Precision 470
Intel Xeon CPU 3,00GHz
2GB Ram
Microsoft Windows XP
Catia V5 R18 SP6
VB2005

erstellt am: 10. Jun. 2011 09:28    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 tobiley 10 Unities + Antwort hilfreich

Hallo
da du mit LateBinding arbeitest kannst du natürlich die Konstanten nicht in dieser Form nutzen, da der Compiler, aufgrund der fehlenden Verweise, diese nicht auflösen kann. Wenn du weiterhin mit LateBinding arbeiten willst, mußt du für die entsprechende Konstante einen Integer-Wert einsetzen (zu finden in der Automation.chm)

------------------
Grüße TStone
   "Respektiere die Macht der Worte, wähle sie mit Bedacht!"

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

tobiley
Mitglied
Masterstudent


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

Beiträge: 59
Registriert: 15.02.2010

Win XP
CatiaV5 R17, R18, R19
HD2-Lizenz
VB2008

erstellt am: 10. Jun. 2011 10:18    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

Vielen Dank für eure Antworten werde gleich ein Beispiel einstellen.

Kannst du mir sagen wo ich in der Automation.chm suchen muss, finde immer nur die "normalen" Konstanten, aber nicht den Integerwert dazu.

Vielen Dank schon mal!

Grüße Tobi

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

tobiley
Mitglied
Masterstudent


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

Beiträge: 59
Registriert: 15.02.2010

Win XP
CatiaV5 R17, R18, R19
HD2-Lizenz
VB2008

erstellt am: 10. Jun. 2011 10:46    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

Soo, ich habs nun gefunden in dem Objectbrowser vom CATIA VBA Editor stehen die Integerwerte hinter der Konstanten und es funktioniert.

Vielen Dank nochmal!


Und hier das versprochene Beispiel:

Code:

'Benötigte Imports für das Late-Binding

Imports System.Runtime.InteropServices
Imports System.Reflection


    Sub lb_get(ByVal ob As Object, ByVal Befehl As String, ByVal param As Object())
        lb_result = ob.GetType().InvokeMember(Befehl, BindingFlags.GetProperty, Nothing, ob, param)
    End Sub
    Sub lb_set(ByVal ob As Object, ByVal Befehl As String, ByVal param As Object())
        lb_result = ob.GetType().InvokeMember(Befehl, BindingFlags.SetProperty, Nothing, ob, param)
    End Sub
    Sub lb_methode(ByVal ob As Object, ByVal Befehl As String, ByVal param As Object())
        lb_result = ob.GetType().InvokeMember(Befehl, BindingFlags.InvokeMethod Or BindingFlags.OptionalParamBinding, Nothing, ob, param)
    End Sub

    '-----Aufruf----------
    Dim MyCatiaDocument As Object
    lb_get(CATIA, "ActiveDocument", Nothing)
    MyCatiaDocument = lb_result
    'entspricht: MyCatiaDocument = CATIA.ActiveDocument

    lb_set(CATIA, "StatusBar", New Object() {"Testprogramm"})
    'entspricht: CATIA.StatusBar = "Testprogramm"

    lb_methode(MyProduct, "ApplyWorkMode", New Object() {2})
    'entspricht: MyProduct.ApplyWorkMode(CatWorkModeType.DESIGN_MODE)



(Const DESIGN_MODE = 2)


Gruß Tobi

[Diese Nachricht wurde von tobiley am 10. Jun. 2011 editiert.]

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

INLU
Mitglied
Konstrukteur Automotive


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

Beiträge: 71
Registriert: 01.03.2008

erstellt am: 10. Jun. 2011 18:58    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 tobiley 10 Unities + Antwort hilfreich

Hi tobiley,

das werde ich mal bei Gelegenheit so probieren.


Ich bin so vorgegangen.

Ich verwende beim Programmanfang nur folgende Zeilen:

Code:
Dim CATIA as Object
CATIA = System.Runtime.InteropServices.Marshal.GetActiveObject("CATIA.Application")

Damit kann ich alle Objekte unter dem Stamm CATIA finden und verwenden. Einzige ausnahme ist der Fall mit lb_methode. Da gehe ich wie folgt vor:
Ich möchte ein Body (aktuell) in einem Part (apart) in Bearbeitung setzen.

Code:
apart.[GetType]().InvokeMember("InWorkObject", System.Reflection.BindingFlags.SetProperty, Nothing, apart, New Object() {aktuell})

Ich habe natürlich noch nicht jeden Catia API Befehl so verwendet, aber ein Programm zum Aufbau einer Bodystruktur mit mehreren Körper und booleschen Operationen inklusive CATIA.StartCommand funktioniert Einwand frei. Ich werde aber bei meinen folgenden Projekten Deine Variante auch einmal probieren!


mfg
   Lars

[Diese Nachricht wurde von INLU am 10. Jun. 2011 editiert.]

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