Autor
|
Thema: Late Binding Catia V5 (1965 mal gelesen)
|
Macropa Mitglied
Beiträge: 8 Registriert: 16.02.2010
|
erstellt am: 16. Feb. 2010 15:44 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich möchte mit Late Binding folgendes umsetzen : Dim myObject As Object myObject = myDelmia.GetItem("DNBFastenerItemServices") Dim FastenerLot As DNBFastener.FastenerSet = Nothing myObject.GetFastenersFromProcess(MySubActivitie, FastenerLot) Das könnte so aussehen myDelmia = lb.Application("DELMIA.Application") objParam(0) = "DNBFastenerItemServices" myObject = lb.Methode(myDelmia, "GetItem", objParam) ReDim objParam(1) objParam(0) = MySubActivitie objParam(1) = ?? was muß hier statt FastenerLot stehen ?? objResult = lb.Methode(myObject , "GetFastenersFromProcess", objParam) Hat jemand eine Idee ?? Danke Macropa
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
V5Playaz Mitglied Dipl.-Ing (BA)
Beiträge: 447 Registriert: 12.07.2005 DELL PRECISION 390 3,25 GB RAM WIN XP PRO SP2 CATIA V5 R16-19 Delmia V5 R19 VB6, VB2008 Adobe Acrobat 9 Pro Extended
|
erstellt am: 16. Feb. 2010 15:57 <-- editieren / zitieren --> Unities abgeben: Nur für Macropa
|
Jens Hansen Mitglied Senior Consult
Beiträge: 1055 Registriert: 05.08.2000 Win7 CATIA V5 R19 VB.Net C#
|
erstellt am: 16. Feb. 2010 16:01 <-- editieren / zitieren --> Unities abgeben: Nur für Macropa
|
Macropa Mitglied
Beiträge: 8 Registriert: 16.02.2010
|
erstellt am: 16. Feb. 2010 16:35 <-- editieren / zitieren --> Unities abgeben:
|
Jens Hansen Mitglied Senior Consult
Beiträge: 1055 Registriert: 05.08.2000 Win7 CATIA V5 R19 VB.Net C#
|
erstellt am: 16. Feb. 2010 16:46 <-- editieren / zitieren --> Unities abgeben: Nur für Macropa
|
Macropa Mitglied
Beiträge: 8 Registriert: 16.02.2010
|
erstellt am: 16. Feb. 2010 17:46 <-- editieren / zitieren --> Unities abgeben:
Hallo Herr Hansen, danke für die schnellen Antworten. Das Problem ist aber leider so noch nicht gelöst. Im Object 'FastenerLot' gibt DELMIA die Fastener, die der Activitie zugeordnet sind, zurück. An diese komme ich dann so : fItem = FastenerLot.GetFastener(jj) Das heißt im late Binding müßte im objParam(1) wirklich ein Object stehen. Es steht aber immer nur Nothing drin und nicht : objParam(1) --> Object = Nothing. ( Ich programmiere übrigens mit VB Express 2008 ) Alle anderen Sachen wie Document, Count, Item, SelectElemt2 und 3 etc. gehen mit late Binding. Danke Macropa
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens Hansen Mitglied Senior Consult
Beiträge: 1055 Registriert: 05.08.2000 Win7 CATIA V5 R19 VB.Net C#
|
erstellt am: 16. Feb. 2010 18:09 <-- editieren / zitieren --> Unities abgeben: Nur für Macropa
|
Macropa Mitglied
Beiträge: 8 Registriert: 16.02.2010
|
erstellt am: 17. Feb. 2010 07:34 <-- editieren / zitieren --> Unities abgeben:
Hallo Herr Hansen, trotzdem Danke. Ich glaube alledings nicht, dass dies ein CATIA/DELMIA Problem ist. Hier geht es sicher um die Late Binding Konstruktion zum Aufruf dieser Methode. Gruß Macropa Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens Hansen Mitglied Senior Consult
Beiträge: 1055 Registriert: 05.08.2000 Win7 CATIA V5 R19 VB.Net C#
|
erstellt am: 17. Feb. 2010 09:28 <-- editieren / zitieren --> Unities abgeben: Nur für Macropa
Hallo, ich habe leider keine Doku über Delmia und kenne auch die Strukturen nicht. Wie sieht es denn mit dem Objekt "FastenerSet" aus? Ist das überhaupt ein Objekt oder ist das eine Eigenschaft? Mir fehlt leider ein bisschen die Strukur von Delmia. Generell ist es ja so, dass bei LateBinding jedes Objekt bzw. jede Eigenschaft explizit programmiert werden muss. Man kann nicht "2 Schritte auf einmal machen"; will sagen so etwas wie CATIA.Documentes[2].Name = "Willi" geht nicht! Ich kann mir denken, dass der Haken dort zu suchen ist. SG Jens Hansen ------------------ Inoffizielle CATIA-Hilfeseite Homepage von Jens Hansen Kochbuch - CATIA V5 automatisieren Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Macropa Mitglied
Beiträge: 8 Registriert: 16.02.2010
|
erstellt am: 17. Feb. 2010 11:33 <-- editieren / zitieren --> Unities abgeben:
Hallo Herr Hansen, -------------------------------------------------------- DNBFastenerItemServices (Object) IUnknown | +---IDispatch | +---CATBaseUnknown | +---CATBaseDispatch | +---AnyObject | +---DNBFastenerItemServices dahin komme ich so : Dim myDelmia As Object = lb.Application("DELMIA.Application") Dim objParam(0) As Object objParam(0) = "DNBFastenerItemServices" Dim objDNBFastenerItemServices As Object = lb.Methode(myDelmia, "GetItem", objParam) eine Methode ist dann : Sub GetFastenersFromProcess( CATIAActivity iOperation, DELMIAFasteners iFasteners) Gets all the DELMIAFasteners assigned to the Activity. * Example: Set myObject = CATIA.GetItem("DNBFastenerItemServices") <---- das haben wir Dim FastenerLot As FatenerSet myObject.GetFastenersFromProcess( MyActivity,FastenerLot) <--- die MyActivity habe ich auch als System.__ComObject ( ist auch das richtige drin, habe ich geprüft ) Im Object FastenerLot steht dann eine Collection aller Fastener, die der Activity zugeordnet sind. Diese Fastner wollen wir eigentlich haben. -------------------------------------------------------------------- FastenerSet (Collection) IUnknown | +---IDispatch | +---CATBaseUnknown | +---CATBaseDispatch | +---Collection | +---FastenerSet hierzu gibt es dann eine Methode
Func GetFastener( short index) As DELMIAFastener Ich hoffe es ist verständlich genug. Die komplette Hilfe ist ca 15 MB groß.
Gruß Macropa
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens Hansen Mitglied Senior Consult
Beiträge: 1055 Registriert: 05.08.2000 Win7 CATIA V5 R19 VB.Net C#
|
erstellt am: 17. Feb. 2010 12:13 <-- editieren / zitieren --> Unities abgeben: Nur für Macropa
|
Macropa Mitglied
Beiträge: 8 Registriert: 16.02.2010
|
erstellt am: 17. Feb. 2010 16:51 <-- editieren / zitieren --> Unities abgeben:
Hallo Hansen, leider besteht das Programmieren bei CATIA/DELMIA nur aus Try und Error. Ja, FastenerLot muß ein Object sein [ FastenerLot As DNBFastener.FastenerSet ]. Setzen wir objParam(1) = FastenerLot, wie vorgeschlagen. Steht in objParam(1) = Nothing, also kein Object. Die Frage ist, wie bekomme ich da ein leeres Object rein, was vielleicht auch noch vom richtigen Typ ist oder vielleicht ein System.__ComObject ?? Eigentlich finde ich das late Binding nicht schlecht, denn ich könnte meine Macros dann besser weitergeben. Gruß Macropa
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens Hansen Mitglied Senior Consult
Beiträge: 1055 Registriert: 05.08.2000 Win7 CATIA V5 R19 VB.Net C#
|
erstellt am: 17. Feb. 2010 17:22 <-- editieren / zitieren --> Unities abgeben: Nur für Macropa
|
Macropa Mitglied
Beiträge: 8 Registriert: 16.02.2010
|
erstellt am: 18. Feb. 2010 09:26 <-- editieren / zitieren --> Unities abgeben:
|
V5Playaz Mitglied Dipl.-Ing (BA)
Beiträge: 447 Registriert: 12.07.2005 DELL PRECISION 390 3,25 GB RAM WIN XP PRO SP2 CATIA V5 R16-19 Delmia V5 R19 VB6, VB2008 Adobe Acrobat 9 Pro Extended
|
erstellt am: 18. Feb. 2010 11:12 <-- editieren / zitieren --> Unities abgeben: Nur für Macropa
|
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 19. Feb. 2010 15:35 <-- editieren / zitieren --> Unities abgeben: Nur für Macropa
Öhhhmmm, wie ich vermute habe ich es nicht ganz überissen, aber müsste es nicht Dim FastenerLot As new DNBFastener.FastenerSet heißen? ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Macropa Mitglied
Beiträge: 8 Registriert: 16.02.2010
|
erstellt am: 25. Feb. 2010 21:06 <-- editieren / zitieren --> Unities abgeben:
|