| |
 | CATIA V5 Grundkurs | Einsteiger - 5 Std. 15 Min |
| |
 | KISTERS 3DViewStation optimiert die Lizenzverwaltung für ihre Kunden, eine Pressemitteilung
|
Autor
|
Thema: Late Binding mit Visual Basic 2008 Express Edition (5221 mal gelesen)
|
INLU Mitglied Konstrukteur Automotive

 Beiträge: 71 Registriert: 01.03.2008
|
erstellt am: 30. Jan. 2009 23:57 <-- editieren / zitieren --> Unities abgeben:         
Hallo Mitstreiter, Ich habe mal eine grundsätzliche Frage zum Late Binding mit Visual Basic 2008 Express Edition. Ich habe versucht das Late Binding wie in Jens Hansen's Buch "Kochbuch- Catia V5 automatisieren" mit Visual Basic Express umzusetzen. Dort ist beschrieben, das man Objekte über lb_result = ob.GetType().InvokeMember(Befehl, Reflection.BindingFlags.GetProperty, Nothing, ob, param) ansprechen kann( Syntax müsste für Visual Express richtig sein, da im Buch ja C# beschrieben ist). Nun scheint es bei VB Express 2008 aber so zu sein, dass nach dem Befehl CATIA = System.Runtime.InteropServices.Marshal.GetActiveObject("CATIA.Application") Der Com-Verweis von Catia angezogen wird, und man die Objekte fast wie im Early Binding ansprechen kann. Hat jemand da schon Erfahrung gemacht? MfG Lars Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens Hansen Mitglied CAx-Spezialist
   
 Beiträge: 1056 Registriert: 05.08.2000 CATIA V5 R32 VB.Net C# WPF
|
erstellt am: 31. Jan. 2009 12:52 <-- editieren / zitieren --> Unities abgeben:          Nur für INLU
|
INLU Mitglied Konstrukteur Automotive

 Beiträge: 71 Registriert: 01.03.2008
|
erstellt am: 31. Jan. 2009 18:07 <-- editieren / zitieren --> Unities abgeben:         
Hallo Jens, Ja, kann ich. In Deinem Buch beschreibst du, dass man beim Late Binding in C# keine Verschachtelung von V5-Anweisungen gemacht werden können z.b. Part1.Bodies.Count . Kann es sein, dass das nicht für VB Express 2008 gilt ? Ich möchte über ein Macro Veröffentlichte Körper von einem Part in das andere Kopieren. Da ich aber eine Checklistbox für das auswählen der einzelnen Körper verwenden möchte, hab ich mich für VB Express 2008 entschieden. Im VBA-Editor von V5 ist das Element ja so ohne weiteres nicht zu verwenden. Also habe ich den ersten Code im VBA-Editor erzeugt (wegen der Syntax) und ihn ins VB Express kopiert. Und siehe da, es funktioniert. Auch ohne Com-Verweis. In dem Moment, in dem die Zeile :CATIA = System.Runtime.InteropServices.Marshal.GetActiveObject("CATIA.Application") ausgeführt wird, kann man in den Verweisen unter Eigenschaften sehen, das VBE wohl aus der offenen Catiaversion sich die passenden COM Bibiotheken (MecmodInterface und GSMInterface)angezogen hat. Ist meine Annahme richtig? Anscheinend kann ich dann Ohne die Unterprogramme lg_get, lb_set und lb_methode arbeiten! Oder habe ich einen Denkfehler? hier mein kopierter Code: ------------------------------ Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load On Error Resume Next CATIA = System.Runtime.InteropServices.Marshal.GetActiveObject("CATIA.Application") Version = "0.1" makroname = "Körper Kopieren" Me.Text = makroname + " " + Version Document = CATIA.ActiveDocument If Err.Number <> 0 Then MsgBox("Es ist kein Dokument geöffnet", 16, makroname + " " + Version) End End If txt = Split(Document.Name, ".") If Not txt(1) = "CATProduct" Then MsgBox("Aktives Dokument ist keine Baugruppe", 16) End End If 'Selektion einbau Sel = Document.Selection InputObject(0) = "Part" Usersel = Sel.SelectElement2(InputObject, "Part in das verbaut werden soll selektieren", False) If Usersel = ("Cancel") Then End End If oSendepart = Sel.Item(1).Value.Parent bodylist = GetPublications(oSendepart) If UBound(bodylist) = 0 Then Call MsgBox("Es ist keine Veröffentlichung im Part vorhanden" _ & vbCrLf & "Makro wird abgebrochen!" _ , vbCritical, "Keine Veröffentlichung vorhanden") End End If Dim I I = 1 For I = 1 To (UBound(bodylist) + 1) Splits = Split((bodylist(I - 1).Valuation.Displayname), "/!") Me.Publiclist1.Items.Add(Splits(UBound(Splits))) Next Usersel = Sel.SelectElement2(InputObject, "Part das verbaut werden soll selektieren", False) If Usersel = ("Cancel") Then End End If oEmpfangspart = Sel.Item(1).Value.Parent End Sub Function GetPublications(ByVal MyPart) 'Gibt ein Array mit allen Publications als Objekte zurück Dim MyPubarr() For I = 1 To (MyPart.Product.Publications.Count) ReDim Preserve MyPubarr(I - 1) MyPubarr(I - 1) = MyPart.Product.Publications.Item(I) Next GetPublications = MyPubarr End Function -------------------------------------------- mfg Lars P.S.: Dein Buch ist mir eine sehr grosse Hilfe Jens!!! Danke, weiter so!!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens Hansen Mitglied CAx-Spezialist
   
 Beiträge: 1056 Registriert: 05.08.2000 CATIA V5 R32 VB.Net C# WPF
|
erstellt am: 31. Jan. 2009 22:15 <-- editieren / zitieren --> Unities abgeben:          Nur für INLU
|
INLU Mitglied Konstrukteur Automotive

 Beiträge: 71 Registriert: 01.03.2008
|
erstellt am: 01. Feb. 2009 13:03 <-- editieren / zitieren --> Unities abgeben:         
Hallo Jens. Ich hoffe Du meinst die Einstellungen in meinem Visual Basic Express Projekt (Ich mach es ja nicht in C#). Ich habe keine besondere Einstellung vorgenommen, also auch keinen Com-Verweis auf die Catia Bibliotheken. Allerdings habe ich für ein anderes Projekt die Com-Verweise für Mecmod und GSMInterface gesetzt. Komischerweise tauchen diese auch auf, wenn ich VBE frisch starte und mir über Projekte->Verweis Hinzufügen->Aktuell die Bibliotheken anschau. Heißt das, dass der Com Verweis doch existiert? Leider habe ich nur R16 installiert, also kann ich das nicht ausprobieren. Oder werden die Bibliotheken automatisch von XP geladen? Unter den Projektverweisen sind sie aber nicht vorhanden. Mfg Lars
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
INLU Mitglied Konstrukteur Automotive

 Beiträge: 71 Registriert: 01.03.2008
|
erstellt am: 19. Sep. 2010 17:50 <-- editieren / zitieren --> Unities abgeben:         
Hallo nochmal Jens, der Thead ist zwar schon alt, aber ich habe immer noch keine Lösung für mein Problem über Visual Basic das late binding zu realisieren. Vielleicht kannst Du oder Jemand anderes mir da doch auf Pferd helfen. Ich Versuche also über Visual Basic Express das Late Binding auf die laufende Catia-Instanz. Weis Jemand wie das umzusetzen ist? mfg Lars Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tstone Mitglied Werkzeugkonstrukteur
 
 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: 20. Sep. 2010 09:21 <-- editieren / zitieren --> Unities abgeben:          Nur für INLU
Hallo INLU, sicher kannst du bei VisualBasic.Net "verschachtelte Anweisungen" trotz LateBinding nutzen. (wie es bei C# aussieht weiß ich nicht). Bei LateBinding steht dir aber definitiv kein Intellisence zur Verfügung. Wenn du aber die Programmausführung nach dem .GETACTIVEOBJECT...(z.B. durch einen Haltepunkt) anhälst, werden die Objekte aufgelöst und die entsprechenden Eigenschaftenwerte angezeigt. Wenn dir allerdings Intellisence zur Verfügung steht, solltest du deine Projektverweise nochmals checken. ------------------ 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 |
INLU Mitglied Konstrukteur Automotive

 Beiträge: 71 Registriert: 01.03.2008
|
erstellt am: 20. Sep. 2010 10:49 <-- editieren / zitieren --> Unities abgeben:         
Hallo TStone, das ist ja schon mal gut zu wissen. Mein größtes Problem ist allerdings, dass ich nicht genau weiß, wie ich die Verbindung zu Catia im Late Binding umsetzen muss. Im Buch von Jens Hansen ist das Late Binding mit C# erklärt. Ich bekomme das aber nicht auf VB umgemünzt. Ich habe anscheinend Probleme mit der Syntax. Hast du so etwas schon umgesetzt? mfg Lars Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Ehrenmitglied V.I.P. h.c. Manager
     
 Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 20. Sep. 2010 11:51 <-- editieren / zitieren --> Unities abgeben:          Nur für INLU
Hallo  , der Syntax bleibt der selbe. Beim Early Binding werden die Com-Verweise zu den CATIA-Klassen explizit angegeben. Somit ist es Möglich ein Objekt auch den CATIA spezifischen Datentyp über die Dim Anweisung zuzuordnen (z.B. Dim oPart as Part). Beim Late Binding hingegegen gibt es keine Verweise auf die Com-Klassen. D.h. du kannst auch keinen CATIA spezifischen Datentyp deklarieren. In diesem Fall werden alle Variablen die von einem CATIA Objekt vererbt sind einfach als Objekte deklariert. Beispiel: EARLY BINDING Dim oDoc as PartDocument Dim oPart as Part Dim oName as String Set oDoc = CATIA.ActiveDocument Set oPart = oDoc.Part oName = oPart.Name LATE BINDING Dim oDoc as Object Dim oPart as Object Dim oName as String
Set oDoc = CATIA.ActiveDocument Set oPart = oDoc.Part oName = oPart.Name ------------------ MFG Daniel Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
INLU Mitglied Konstrukteur Automotive

 Beiträge: 71 Registriert: 01.03.2008
|
erstellt am: 20. Sep. 2010 12:43 <-- editieren / zitieren --> Unities abgeben:         
Hallo Daniel, AHA! Das habe ich verstanden. Kann man trotzdem alle Methoden der Catiatypen verwenden? Problematisch ist für mich aber das Verbinden mit dem Catia-Objekt. Im Buch von Jens wird das ja dann über die Funktionen lb_get u.s.w. gelöst. Wie setzte ich das in VB um? Und reicht es im Programm den Aufruf CATIA = System.Runtime.InteropServices.Marshal.GetActiveObject("CATIA.Application") zu haben, oder muss noch etwas programmiert werden? mfg Lars Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Ehrenmitglied V.I.P. h.c. Manager
     
 Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 20. Sep. 2010 13:22 <-- editieren / zitieren --> Unities abgeben:          Nur für INLU
Hallo  , das wird einfach über die Methode GetObject in VB.NET realisiert. Du kannst alle Methoden und Eigenschaften genauso wie mit einem early Binding verwendet, hast aber keine intelliSense Unterstützung! Des weiteren kannst du nicht über den Objekt-Brwoser auf die Objekte, Methoden und Klassen zugreifen. D.h. während der Entwicklung eines komplexen Programms ist es für den Workflow (der Programmierung) sicherlich einfacher ein early Binding einzusetzen. Wenn du das Programm dann final veröffentlichst dann ersetzt du alle CATIA-Dateityp-Objekte einfach durch "Object" und löst die Verweise (dann hast du wiederum ein Late Binding). Hier ein Beispiel um an das CATIA Objekt mittels VB.NET zu kommen (CATIA V5 muss ordentlich in der Registry registriert sein, sonst kann kein ActiveX Objekt von der Instanz erzeugt werden und die Funktion gibt den Wert Nothing zurück!) Code:
Sub Main() Dim CATIA As Object CATIA = GetCATIA If CATIA is Nothing then MsgBox "CATIA konnte nicht gestartet werden" Exit SUb End If End Sub Private Function GetCATIA() As Object
CATIA As Object On Error Resume Next CATIA = GetObject(, "CATIA.Application") If CATIA Is Nothing Then CATIA = CreateObject("CATIA.Application") Else Return CATIA End If If Not CATIA Is Nothing Then Return CATIA Else Return Nothing End If On Error GoTo 0 End Function
------------------ MFG Daniel Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
INLU Mitglied Konstrukteur Automotive

 Beiträge: 71 Registriert: 01.03.2008
|
erstellt am: 21. Sep. 2010 17:41 <-- editieren / zitieren --> Unities abgeben:         
|
gladly Mitglied

 Beiträge: 56 Registriert: 02.11.2007 Catia V5R19SP9HF40 64Bit Windows XP Pro x64
|
erstellt am: 29. Sep. 2010 16:17 <-- editieren / zitieren --> Unities abgeben:          Nur für INLU
Diese Umständlichkeit in C# ist auch in VB nötig. Der Unterschied warum du allerdings direkt auf Eingenschaten und Methoden in VB zugreifen kannst liegt daran, da der VB-Compiler automatisch den benötigten Code erzeugt. Der C#-Compiler nicht (bzw. soll er eigentlich seit .net 2010 auch können, habe ich aber nicht nicht getestet) Fals dir der .netReflector was sagt schau dir mal ein Programm an welches du mit VB geschrieben hast. Schreibe einfach mal folgendes in VB: Es bennent in einem Part nen PartBody um. Dim catia As Object = System.Runtime.InteropServices.Marshal.GetActiveObject("CATIA.Application") Dim o As Object o = CATIA.ActiveDocument.Part.Bodies.Item(1) dim oldname as String = o.name o.name = "Test" im entgültigen Code sieht es wie folgt aus: Dim o As Object = RuntimeHelpers.GetObjectValue(NewLateBinding.LateGet(NewLateBinding.LateGet(NewLateBinding.LateGet(NewLateBinding.LateGet(RuntimeHelpers.GetObjectValue(Marshal.GetActiveObject("CAT IA.Application")), Nothing, "ActiveDocument", New Object(0 - 1) {}, Nothing, Nothing, Nothing), Nothing, "Part", New Object(0 - 1) {}, Nothing, Nothing, Nothing), Nothing, "Bodies", New Object(0 - 1) {}, Nothing, Nothing, Nothing), Nothing, "Item", New Object() { 1 }, Nothing, Nothing, Nothing)) Dim oldname As String = Conversions.ToString(NewLateBinding.LateGet(o, Nothing, "name", New Object(0 - 1) {}, Nothing, Nothing, Nothing)) NewLateBinding.LateSet(o, Nothing, "name", New Object() { "Test" }, Nothing, Nothing) Nun sieht das auch schon wieder wie in C# aus. Nur das der Compiler dir die schreibarbeit abgenommen hat.
mfg
gladly Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
INLU Mitglied Konstrukteur Automotive

 Beiträge: 71 Registriert: 01.03.2008
|
erstellt am: 30. Sep. 2010 10:23 <-- editieren / zitieren --> Unities abgeben:         
Hallo gladly, gut, ich dachte schon, ich hätte das prinzip nicht verstanden. Hat sich da denn auch was bei Visual Basic 2010 geändert. Du scheinst ja gut in der Materie zu stecken. Lohnt sich das Upgraden auf 2010? mfg Lars Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
INLU Mitglied Konstrukteur Automotive

 Beiträge: 71 Registriert: 01.03.2008
|
erstellt am: 02. Okt. 2010 14:53 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ich habe nun etwas rumprobiert, und bin wiedermal auf ein Problem gestoßen. Wer hätte das gedacht . Ich erzeuge mir zwei Körper in einem Part. Nun möchte ich die beiden über add verbauen. Dafür möchte ich den ersten erzeugten Körper, mit folgendem Code in Bearbeitung definieren:
Code:
Dim apart As Object Dim Wzk3d As Object apart = partDocument1.Part Wzk3d = apart.ShapeFactory aktuell = apart.Bodies.Item(2) bool = apart.Bodies.Item(3) 'Boolsche Operation apart.InWorkObject = aktuell Dim operation As Object operation = Wzk3d.AddNewAdd(bool) operation.Name = kobe2 apart.update()
Unter VBA funktioniert alles wie es soll. In VB2008 bekomme ich bei der Zeile : apart.InWorkObject = aktuell folgende Fehlermeldung: COMException wurde nicht behandelt. (Ausnahme von HRESULT: 0x80020003 (DISP_E_MEMBERNOTFOUND)).Eine ähnliche fehlermedung ist in fogendem thead beschrieben. http://ww3.cad.de/foren/ubb/Forum137/HTML/002817.shtml#000000 Da handelt es sich aber um eine Meldung beim Early Binding. Kennt jemand das Problem? mfg Lars Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tstone Mitglied Werkzeugkonstrukteur
 
 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: 04. Okt. 2010 08:01 <-- editieren / zitieren --> Unities abgeben:          Nur für INLU
Hallo INLU, in dem Betrag, auf den du hingewiesen hast, wird das Problem durch Wechsel zu early binding gelöst. Die Fehlermeldung, die du erhälst ist eigentlich typisch für late binding (nicht typsicheres arbeiten hat halt auch seine Nachteile). Deklariere deine Objekte mit dem richtigen Typen (wie in deinem Beispielbeitrag beschrieben), dann könnte dein Problem schon gelöst sein. ------------------ 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 |
INLU Mitglied Konstrukteur Automotive

 Beiträge: 71 Registriert: 01.03.2008
|
erstellt am: 05. Okt. 2010 11:40 <-- editieren / zitieren --> Unities abgeben:         
Hallo Tstone, was wäre denn der Richtige Typ? Den Code siehst du ja etwas weiter oben. Ich habe mich jetzt ein bisschen durch die VB Hilfe gelesen. Wie ich das verstanden habe, liegt es wohl daran, dass es in VB kein set mehr gibt. Ich muss ja mit meinem Code den Zustand mit apart.InWorkObject = aktuell ändern. Die Meldung kommt halt daher, weil aktuell ein Objekt ist. Welcher Typ wäre denn richtig? Anscheinend Interpretiert VB das als Set apart.InWorkObject = aktuell , und das geht ja wirklich nicht. Oh man........ mfg Lars Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tstone Mitglied Werkzeugkonstrukteur
 
 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: 05. Okt. 2010 12:43 <-- editieren / zitieren --> Unities abgeben:          Nur für INLU
Hallo Inlu, solange du mit late binding arbeitest, sehe ich keine Möglichkeit das Problem zu lösen. Ich habe dein Problem mal, mit deinem Code nachgestellt und bekomme bei late binding die gleiche Fehlermeldung wie du. Füge ich aber einen Verweis auf *CATIA V5 MecModInterfaces Object Library* hinzu und deklariere: Dim apart As MECMOD.Part dann funktioniert das Ganze. Aber vielleicht kann dir ein Vertreter der late binding- Fraktion noch einen Tip geben. Da ich meistens (immer geht leider nicht danke dem Objektmodell von Catia) typsicher arbeite (early binding), bin ich sicherlich auch nicht mit allen Tricks bei late binding vertraut. ------------------ 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 |
gladly Mitglied

 Beiträge: 56 Registriert: 02.11.2007 Catia V5R19SP9HF40 64Bit Windows XP Pro x64
|
erstellt am: 11. Okt. 2010 15:54 <-- editieren / zitieren --> Unities abgeben:          Nur für INLU
Hallo nochmal, vorab schuldige, dass ich mich erst nun melde... So nun zum Problem: Ich musste es natürlichgleich Probieren mit deinem "InWorkObject" und ja es funktioniert (zumindest) unter .net 2005 als implizite Late-Binding tatsächlich nicht. Ich habe es somit per Hand gemacht und es funktioniert. Code sähe so aus: Code:
Dim catia As Object = System.Runtime.InteropServices.Marshal.GetActiveObject("CATIA.Application") Dim oPart As Object oPart = CATIA.ActiveDocument.Part Dim oBody As Object = oPart.HybridBodies.item(1) 'Get Funktioniert... Dim o As Object = oPart.InWorkObject 'Hier der Code zum Setzen der Property oPart.[GetType]().InvokeMember("InWorkObject", BindingFlags.SetProperty, nothing, oPart, new Object() {oBody})
Vll wird bei der impliziten Variante ein Falsches Binding gesetzt, keine Ahnung... Ich kenne mich eigentlich eher wenig damit aus. Hatte es nur einmal etwas aufwendiger nutzen müssen. Und der .netReflector schickt einen nur immer tiefer ins Framework hinnein... Zur hilfe kann ich dir nur eine Klasse geben, welche den Zugriff per Reflection sehr erleichter (die ich früher auch gut gebraucht hätte) Zu Finden unter: http://mattberseth.com/blog/2007/04/net_reflection.html Achja die änderung auf VB2010 ist eigentlich egal. Implitzites Late-Binding wird ja seit 2005 unterstützt. Nur wenn du C# programmierst musst du mit der 2010-Version (bzw. .net Framwork 4) arbeiten, um auch dort implizites Late-Bindung zu erhalten. (Nicht getestet nur gelesen in der MSDN!) mfg gladly Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
INLU Mitglied Konstrukteur Automotive

 Beiträge: 71 Registriert: 01.03.2008
|
erstellt am: 14. Okt. 2010 17:03 <-- editieren / zitieren --> Unities abgeben:         
Hallo gladly, Du hast Recht! Bei VB2008 allerdings mit der kleinen Änderung: oPart.[GetType]().InvokeMember("InWorkObject", System.Reflection.BindingFlags.SetProperty, nothing, oPart, new Object() {oBody}). Dein Link scheint nicht mehr zu funktionieren. Das mit den BindingFlags ist mir auch ein bisschen zu hoch! Vielen Dank für die Hilfe! mfg Lars Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gladly Mitglied

 Beiträge: 56 Registriert: 02.11.2007 Catia V5R19SP9HF40 64Bit Windows XP Pro x64
|
erstellt am: 15. Okt. 2010 11:24 <-- editieren / zitieren --> Unities abgeben:          Nur für INLU
Hallo wieder einmal, Sorry wegen des Fehlers, ich hatte den Reflection-Namespace importiert... Bezüglich der Binding-Flags kann ich auch nur sagen, dass auch ich es nicht ganz verstehe. Aber um die Grundsätze zu verstehen, helfen Beispiele und die Dokumentation des SDK! Die Seite funktioniert tatsächlich nicht mehr. Der Domain-Name ist laut Anzeige am 13.10.2010 abgelaufen (Bei mir lief Sie also tatsächlich noch). Deshalb schicke ich anbei die Datei mit Verweis auf die oben angegebene Seite des Urhebers. Ich weis nicht ob ich das durfte, da keine Bestimmte Lizenz angegeben war, aber ich habe dir eine konvertiere Version für Visual Basic zur Verfügung gestellt, da die ursprüngliche Klasse in C# geschrieben war. Ein beispiel der benutzung liegt übrigends in Form der Application.cs vor. Allerdings ist es eigentlich auch fast selbsterklärend. mfg gladly Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |