Autor
|
Thema: Verbindung zwischen VBA und CATIA V5 aufbauen! (4490 mal gelesen)
|
martinINPRO Mitglied Dipl.-Ing.
Beiträge: 21 Registriert: 24.06.2008
|
erstellt am: 25. Jun. 2008 16:16 <-- editieren / zitieren --> Unities abgeben:
Guten Tag! Ich möchte über Visual Basic 2008 Express Edition mein CATIA "fernsteuern". Ich habe bereits schon Erfahrungen mit catvbs. Wie kann ich die Verbindung zu CATIA aufbauen. Im Forum habe ich bisher gelesen, dass es wie folgt gehen müsste: 'Deklaration von CATIA Dim CATIA As New Object CATIA = GetObject(, "CATIA.Application") Ich erhalte allerdings die Fehlermeldung: "Die ActiveX-Komponente kann nicht erstellt werden."
Wer kann mir beim Einstieg kurz helfen? Müssen noch Einstellung in VB vorgenommen werden, damit VB das CATIA kennt? MfG, Martin
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 25. Jun. 2008 16:54 <-- editieren / zitieren --> Unities abgeben: Nur für martinINPRO
|
denyo_1 Moderator 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: 25. Jun. 2008 17:42 <-- editieren / zitieren --> Unities abgeben: Nur für martinINPRO
Hallo Martin, wie Lila schon sagte liegt das an den Verweisen. Projekt -> Verweis hinzufügen -> Registerkarte "COM" -> Hier musst du erstmal nachschauen welche Verweise wo gespeichert sind. -> Anschließend auf Registerkarte "Durchsuchen" klicken und hier die Verweise hinzufügen. Schon funktioniert es. Verweise: InfTypeLib.tlb MecModTypeLib.tlb PS: Je nachdem was du in CATIA machen willst mujsst du dir noch weitere Verweise (z.B. für die Workbenches, etc.) hinzufügen ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin 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: 25. Jun. 2008 22:13 <-- editieren / zitieren --> Unities abgeben: Nur für martinINPRO
|
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: 26. Jun. 2008 08:30 <-- editieren / zitieren --> Unities abgeben: Nur für martinINPRO
Hallo martinINPRO, sorry, dass ich nicht ganz so ausführlich geantwortet hatte, wie die anderen Poster. Jedenfalls, wenn es bei dir geklappt hat würdest du mir einen großen Gefallen tun, wenn du mir ein paar Erfahrungen mit Visual Studio und CATIA schildern könntest. Dies interessiert mich, da ich vor kurzen von Visual Basic 98 (6) auf Visual Studio 2005 umsteigen wollte, meine Programme aber gänzlich ohne Installtion auskommen sollen und dementsprechend auch keine DLL's mitliefern sollen. Ich konnte es jedoch nicht vermeiden, dass auf Grund der Referenzen Wrapper-DLL's angelegt werden... Jedenfalls würde mich mal interessieren, ob es weitere Vorteile in VS 2005, als das Object-Handling gibt, oder ich bei VB6 bleiben sollte bis es .NET Libarys für CATIA gibt? Ursprünglich hatte ich ja die Hoffnung, dass ich damit auf nicht registrierte CATIA's zugreifen kann, oder wenn zwei geöffnet sind geziehlt eins aus der Prozessliste auswählen kann, aber dem ist ja nicht so. Noch ein Tipp von mir, martinINPRO, ich habe schon gesehen, dass viele dazu neigen einfach alle CATIA-Verweise zu setzen, damit ihnen nichts fehlt, davon kann ich nur abraten, da die Rechenlast dann größer wird. ------------------ 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 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
martinINPRO Mitglied Dipl.-Ing.
Beiträge: 21 Registriert: 24.06.2008
|
erstellt am: 26. Jun. 2008 14:01 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank für Eure Hilfe! Hier ein kurzer Zwischenstand. Es war erstmal ausreichend CATIA zu überreden sich zu registrieren ("CNEXT.exe -regserver"). Anbei noch ein kleines Codeschnipselchen, um die ersten Gehversuche zu machen: --- On Error Resume Next 'Deklaration von CATIA Dim oCATIA As New Object oCATIA = Nothing oCATIA = GetObject(, "CATIA.Application") If oCATIA Is Nothing Then MsgBox("Es konnte keine Verbindung zu CATIA hergestellt werden!", MsgBoxStyle.Critical, "TestConnection") Else MsgBox("Verbindung mit CATIA war erfolgreich! (Aktives Dokument: '" & oCATIA.ActiveDocument.Name & "')", MsgBoxStyle.OkOnly, "TestConnection") End If --- Gruß, Martin
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 27. Jun. 2008 08:32 <-- editieren / zitieren --> Unities abgeben: Nur für martinINPRO
Ich empfehle vorher zu prüfen ob es überhaupt ein ActiveDocument im CATIA gibt, sonst bekommst du nen Error bei der MsgBox, die dir ausgegeben soll ,dass alles korrekt ist. Wollt' Dich nicht verbessern, nur ein Erfahrungswert, wo man sich später fragt warum geht das denn nicht richtig... ------------------ 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 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
martinINPRO Mitglied Dipl.-Ing.
Beiträge: 21 Registriert: 24.06.2008
|
erstellt am: 27. Jun. 2008 08:36 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank für den Hinweis! Genau aus diesem Grund habe ich auch meinen Code-Schnipsel hier gepostet. Wie kann ich denn fragen, ob ein aktives Dokument zur Verfügung steht? Und, wie kann ich ein neues erschaffen? Gruß und Danke, Martin 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: 27. Jun. 2008 08:47 <-- editieren / zitieren --> Unities abgeben: Nur für martinINPRO
Hallo Martin, ich mache das unter VB6 so: Dim documents1 As Object Dim partDocument1 As Object Dim part1 As Object Set documents1 = CATIA.Documents Set partDocument1 = documents1.Add("Part") Set part1 = partDocument1.Part ... Set partDocument1 = CATIA.ActiveDocument partDocument1.SaveAs "C:\test.CATPart" partDocument1.Close grüße dominik
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Augustiner Mitglied Konstrukteur
Beiträge: 188 Registriert: 02.12.2005 HP Workstation Windows XP Professional Visual Studio 2005 Professional CATIA V5 R14SP5 & R17SP3
|
erstellt am: 27. Jun. 2008 10:08 <-- editieren / zitieren --> Unities abgeben: Nur für martinINPRO
Hallo ich mach das so, erst prüfen ob CATIA läuft im Load ereignes der ersten Form oder halt im Main Modul Code: Public CATIA As INFITF.Application Public oRoot As ProductsTry CATIA = System.Runtime.InteropServices.Marshal.GetActiveObject("CATIA.Application") Catch ex As System.Runtime.InteropServices.COMException
MessageBox.Show("CATIA V5 starten!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try
und dann Code: Try oRoot = CATIA.ActiveDocument.Product.Products Catch ex As System.Runtime.InteropServices.COMException MessageBox.Show("Kein Dokument geladen!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try
Gruß
[Diese Nachricht wurde von Augustiner am 27. Jun. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
martinINPRO Mitglied Dipl.-Ing.
Beiträge: 21 Registriert: 24.06.2008
|
erstellt am: 27. Jun. 2008 10:53 <-- editieren / zitieren --> Unities abgeben:
|
Augustiner Mitglied Konstrukteur
Beiträge: 188 Registriert: 02.12.2005 HP Workstation Windows XP Professional Visual Studio 2005 Professional CATIA V5 R14SP5 & R17SP3
|
erstellt am: 27. Jun. 2008 12:10 <-- editieren / zitieren --> Unities abgeben: Nur für martinINPRO
|
martinINPRO Mitglied Dipl.-Ing.
Beiträge: 21 Registriert: 24.06.2008
|
erstellt am: 27. Jun. 2008 13:22 <-- editieren / zitieren --> Unities abgeben:
Ich habe mir mal die Fülle der verfügbaren Interfaces zu CATIA angesehen. Welche Interfaces benötige ich, um: - Dokumente zu laden und zu speichern - HybridShapeFactory-Funktionen zu nutzen (Splines, Multisection, Sweeps, Sketcher, ...) Gruß, Martin
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Augustiner Mitglied Konstrukteur
Beiträge: 188 Registriert: 02.12.2005 HP Workstation Windows XP Professional Visual Studio 2005 Professional CATIA V5 R14SP5 & R17SP3
|
erstellt am: 27. Jun. 2008 13:43 <-- editieren / zitieren --> Unities abgeben: Nur für martinINPRO
Dokumente kommt drauf an welche Dokumente und was Du dann damit machen willst, hab mal einen Screenshot gemacht von denen die ich verwende. Damit bearbeite ich Strukturen , Parts ,Zeichnungen mache Messungen usw. Ich denke Du brauchst erst mal ProductStructureInterfaces InfInterfaces GSMInterfaces(Hybridschapefactory) aber Du kannst ruhig alle hinzufügen und am kannst Du dir die nicht verwendeten Verweise anzeigen lassen und entfernen.
Gruß Andi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 27. Jun. 2008 14:20 <-- editieren / zitieren --> Unities abgeben: Nur für martinINPRO
*g* so ne Auflistugn in der DOku würde ich mir mal wünschen, wnen ic hbedenke, wie lange ich dafür rum gesucht habe... MecMod ist auch noch sehr wichtig, da sind so Sache nwie Body und Co drin... Einfach einbinden und schauen, was es drin gibt. Kleiner Tipp von mir: Immer nur so viele wie nötig, nie so viele wie möglich einbinden, da die Laufzeit sonst in die Höhe schießt und es auch sehr unübersichtlich wird. ------------------ 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 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
martinINPRO Mitglied Dipl.-Ing.
Beiträge: 21 Registriert: 24.06.2008
|
erstellt am: 30. Jun. 2008 15:51 <-- editieren / zitieren --> Unities abgeben:
So nun geht das auch! Vielen Dank! Gibt es auch die Möglichkeit, für die Catia-Funktionalitäten ein "autocomplete" zu aktivieren? Muss man hierzu eine bestimmte Datei dem VBA-Projekt zur Verfügung stellen? Und kann man in die CATIA-Objekte hineindebuggen? Gruß, Martin
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |