Autor
|
Thema: Richtige Deklaration von CATVBA (1135 / mal gelesen)
|
HP-Variant Mitglied Konstrukteur
Beiträge: 7 Registriert: 15.06.2020
|
erstellt am: 16. Jun. 2020 11:40 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, ich bin noch recht neu in der CATIA V5 Makrowelt, daher dürfte das wahrscheinlich ein recht einfach/grundsätzliches Thema sein. Meine Frage ist warum funktioniert Code_1 im VBA ohne Probleme aber Code_2 nicht. Rein objektiv ist das doch der selbe Code (zumindest für mich )? Besten Dank schon mal für eure Antworten . ----------------Code_1------------------------------- Sub Test() Dim Liste(0) As Variant Liste(0) = "N:\01_Startmodell\2000_STARTMODELL\0X0_800_077____G01_TMG_000_000_BAUTEILBEZEICHNUNG_AUXXX_X_XX_EV-00-000.CATPart" CATIA.ActiveDocument.Product.Products.AddComponentsFromFiles Liste, "CATPart" End Sub ----------------Code_2------------------------------- Sub Test2() Dim Doc As Document Set Doc = CATIA.ActiveDocument Dim P As Product Set P = Doc.Prodoct Dim PP As Products Set PP = P.Products Dim Liste(0) As Variant Liste(0) = "N:\01_Startmodell\2000_STARTMODELL\0X0_800_077____G01_TMG_000_000_BAUTEILBEZEICHNUNG_AUXXX_X_XX_EV-00-000.CATPart" PP.AddComponentsFromFiles Liste, "CATPart" End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Randle Mitglied CAD/PLM Consultant
Beiträge: 695 Registriert: 12.04.2003 Win10 x64 CATIA V5 R18, R19, R21, R27-29
|
erstellt am: 16. Jun. 2020 11:49 <-- editieren / zitieren --> Unities abgeben: Nur für HP-Variant
|
HP-Variant Mitglied Konstrukteur
Beiträge: 7 Registriert: 15.06.2020
|
erstellt am: 16. Jun. 2020 11:57 <-- editieren / zitieren --> Unities abgeben:
|
Randle Mitglied CAD/PLM Consultant
Beiträge: 695 Registriert: 12.04.2003 Win10 x64 CATIA V5 R18, R19, R21, R27-29
|
erstellt am: 16. Jun. 2020 12:44 <-- editieren / zitieren --> Unities abgeben: Nur für HP-Variant
Hallo, ok. Deklariere mal statt: Zitat: Dim PP As Products
Dim PP Es gibt einige CATIA Klassen die sich in Verbindung mit VBA ein wenig zickig anstellen (wie z.B. teilw. auch die Selection Klasse), wenn man sie korrekt deklariert. Hier gibt es seitens Dassault Systemes keine (kompl.) Unterstützung. Gruß Randle ------------------ Wer für nichts steht, fällt für alles! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HP-Variant Mitglied Konstrukteur
Beiträge: 7 Registriert: 15.06.2020
|
erstellt am: 16. Jun. 2020 14:51 <-- editieren / zitieren --> Unities abgeben:
Zitat: Deklariere mal statt: Dim PP As Products -> Dim PP
Super Danke dir! :-) Funktioniert jetzt einwandfrei Vllt dann noch eine Frage... Haltet ihr es für sinnvoll in VBA zu programmieren oder was ist da das Beste ?
VG HP Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Randle Mitglied CAD/PLM Consultant
Beiträge: 695 Registriert: 12.04.2003 Win10 x64 CATIA V5 R18, R19, R21, R27-29
|
erstellt am: 16. Jun. 2020 15:21 <-- editieren / zitieren --> Unities abgeben: Nur für HP-Variant
Hallo, ich programmiere meistens im VBA Editor (ist komfortabler, einfachere Fehlersuche). Ausnahme: kleinere Macros erstellen/umschreiben/erweitern. Wenn ich keine Benutzeroberfläche (oder andere VBA "Spezialitäten") brauche kopiere ich den Code nach Abschluss in eine Textdatei und speichere sie als *.CATScript. CATScripts laufen (nach meiner Erfahrung) i.d.R. (wesentlich) performanter. Das Thema .NET (VB, C#) lasse ich jetzt mal aus. Für Anfänger dürfte der Einstieg über VBA einfacher sein (Fehlersuche, Intellisense, usw.) . Gruß Randle ------------------ Wer für nichts steht, fällt für alles! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HP-Variant Mitglied Konstrukteur
Beiträge: 7 Registriert: 15.06.2020
|
erstellt am: 16. Jun. 2020 22:04 <-- editieren / zitieren --> Unities abgeben:
Hey Randle, Besten Dank. Dann werd ich das vorerst genau so machen :-) Eine Frage dazu. Funktioniert das CATScript dann auf Anhieb oder muss ich den Code dann nochmal umschreiben/testen? Wenn du die Zeit hast würde mich das Thema zu .NET auf jeden Fall auch interessieren (aber das wären dann auch nur Bonusinfos )
VG HP Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 16. Jun. 2020 22:34 <-- editieren / zitieren --> Unities abgeben: Nur für HP-Variant
Servus HP Der Code solle meist ohne weitere Anpassungen auch als CATScript laufen. Nur wenn du VBA spezifische Dinge (Collection, UserForm, ...) verwendest gibt es Probleme. Das merkst du dann aber (Fehlermeldung lesen/verstehen und nicht die Fehler unterdrücken) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Randle Mitglied CAD/PLM Consultant
Beiträge: 695 Registriert: 12.04.2003 Win10 x64 CATIA V5 R18, R19, R21, R27-29
|
erstellt am: 17. Jun. 2020 12:13 <-- editieren / zitieren --> Unities abgeben: Nur für HP-Variant
Hallo, zuerst noch folgendes: Bernd hatte heute in einem anderen Thread noch einen nützlichen Link bezgl. der Einschränkungen bei den Klassen in VBA eingestellt, den ich nicht vorenthalten möchte: https://v5vb.wordpress.com/2010/07/29/restricted-interfaces/ Zu .Net: Mit .Net eröffnen sich nochmal ganz andere Möglichkeiten zur Programmierung da es hier unzählige Klassen (.NET Framework) gibt mit den du z.B. auf Windowsfunktionen zugreifen kannst und sich objektorientierte Programierung umsetzen lässt (und ja VB.NET ist nach wortgetreuer Definition nicht tatsächlich kompl. objektorientiert, aber das lassen wir jetzt mal aussen vor). Die Programmierungsumgebung bietet auch zahlreiche Möglichkeiten zur Fehlersuche, Codeanalyse usw., da kommt der VBA Editor nicht mit. Meine persönliche Empfehlung wäre, insbesondere für Anfänger: Starte mit VBA, nutze die Möglichkeiten des VBA Editor und eigne dir die Grundlagen der Programmierung an. Wenn du dann "die Nadel im Arm hast" ;-) und sicherer im Umgang mit VB bist kannst du immer noch umsteigen. Der Umstieg von VBA auf VB.NET ist nicht sehr schwer, auf C#.NET schon eher aber auch machbar. Gruß Randle ------------------ Wer für nichts steht, fällt für alles! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |