Autor
|
Thema: Makros mit Vb .Net (11316 mal gelesen)
|
RonnyS Mitglied
Beiträge: 97 Registriert: 04.09.2003
|
erstellt am: 17. Okt. 2003 11:01 <-- editieren / zitieren --> Unities abgeben:
Hi ich habe hier irgendwo gelsen dass man Makros statt mit dem internen VBA-Editor auch mit VB .Net proggen kann. Da ich schon recht viel mit dem Standard VBa-Editor gemacht habe würde ich das gerne mal testen. Hat schon jemand Erfahrungen damit? Wie muss ich dass einrichten damit das geht, Editor umsetzen klappte nicht so wirklich? Wäre jemand so lieb mir eine kurze DAU-Anleitung zu schreiben? Am besten wäre gleich mit einem kurzen Code-Beispiel (Msgbox "Hello World" reicht voll zu, soll wirklich nur zum Testen sein). vielen dank schonmal ------------------ gr33t7 Ronny Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
steirerhubsi Mitglied wiss. Mitarbeiter
Beiträge: 36 Registriert: 02.04.2003
|
erstellt am: 17. Okt. 2003 16:36 <-- editieren / zitieren --> Unities abgeben: Nur für RonnyS
Hallo! Ich hab mal ausprobiert, ein eigenes VB-Programm in VB.Net zu schreiben (=> exe-Datei als Ergebnis) und von diesem aus auf CATIA zuzugreifen. Klappt eigentlich ganz gut, wobei es jedoch ein paar Unterschiede in der Syntax gibt, die man beachten muß (z.B.: sollte man Einstellungen von Befehlen wie "oClash1.ComputationType" immer als NUMMER übergeben und nicht mit "catClashComputationTypeBetweenAll", "catClashComputationTypeInsideOne",...). Leider habe ich das VB-Projekt schon gelöscht und kann dir deshalb kein Code-Beispiel schicken. Noch ein wichtiger Punkt: ein mit Visual Studio Net erstelltes VB-Programm benötigt Bibliotheken, die noch in keinem Betriebssystem integriert sind. Entweder installiert man diese Bibliotheken auf allen Rechnern nach oder man kompiliert den Code so, daß daraus eine Installationsdatei entsteht, die alle enthaltenen Bibliotheken mit einbezieht. Näheres dazu gibt es, glaube ich, auf den Internet-Seiten von Visual Studio. mfg Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RonnyS Mitglied
Beiträge: 97 Registriert: 04.09.2003
|
erstellt am: 17. Okt. 2003 17:19 <-- editieren / zitieren --> Unities abgeben:
für CAT- und VB-Script konnt ich Problemlos umstellen, dummerweise ist das ganze vb .net dann nichts als ein banaler texteditor der auch zum testen jedesmal geschlossen und dann neugestartet werden muss auch die toolbox usw war nicht verfügbar... Schade hast du nicht noch irgendwas damit ich mal sehen kann wie das prinzipiell funzt??? Gerade das kommunikation mit catia aufnehmen intressiert mich doch sehr, weil das mit dem internen vba-editor ja alles fast automatisch läuft.. ------------------ gr33t7 Ronny Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
steirerhubsi Mitglied wiss. Mitarbeiter
Beiträge: 36 Registriert: 02.04.2003
|
erstellt am: 19. Okt. 2003 08:51 <-- editieren / zitieren --> Unities abgeben: Nur für RonnyS
Hallo! Hab doch noch ein paar Zeilen Code gefunden. Leider ist das nicht mein Programm, wo ich sicher weiß, daß es funktioniert. Als erstes mal das Ansprechen von CATIA in VB.Net: Set CATIA=CreateObject("Catia.Application") Dim documents1 As Object Set documents1 = CATIA.Documents ... Bin mir nicht sicher, ob das reicht, um in VB auf CATIA zuzugreifen. Vielleicht steht dazu auch was in der CATIA-Hilfe (sitze gerade zu Hause und hab die Online-Hilfe nicht da). Alle CATIA-spezifischen Variablentypen müssen in VB.Net mit "Dim ... As Object" deklariert werden. Dann normal zuweisen. Leider kann man dadurch nicht so gut debuggen (wenn man die Variablen im Debug-Modus von VB.Net anschaut gibt es z.B.: keine Unterpunkte "counter", "item","value",...). Ich empfehle, das Makro gleichzeitig in CATIA UND in VB.Net zu schreiben, um bei Fehlermeldungen den Debugger in CATIA verwenden zu können. Der Vorteil von VB.Net liegt für mich nur auf der Möglichkeit ein selbständiges Programm (*.exe) kompilieren zu können: CATIA ist geschlossen => man ruft das kompilierte Programm auf => CATIA wird automatisch gestartet => Befehle werden in CATIA automatisch ausgeführt... Es gibt auch noch eine API-CD für CATIA, die die CATIA-Befehle/Bibliotheken in externe VB-Editoren integriert, aber da kenne ich mich nicht aus. mfg Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
steirerhubsi Mitglied wiss. Mitarbeiter
Beiträge: 36 Registriert: 02.04.2003
|
erstellt am: 19. Okt. 2003 08:58 <-- editieren / zitieren --> Unities abgeben: Nur für RonnyS
|
Jens Hansen Mitglied Senior Consult
Beiträge: 1055 Registriert: 05.08.2000 Win7 CATIA V5 R19 VB.Net C#
|
erstellt am: 19. Okt. 2003 12:07 <-- editieren / zitieren --> Unities abgeben: Nur für RonnyS
Hallo zusammen, ein paar Anmerkungen: Um von VB.Net auf ein laufendes CATIA zuzugreifen muss folgender Code am Anfang stehen: 'Deklaration von CATIA ---------------------------------------------- Dim CATIA As New Object CATIA = GetObject(, "CATIA.Application") "CreateObject("Catia.Application")" erzeugt eine neues CATIA-Instanz, startet aber CATIA nicht !! Somit ist im System V5 zweimal vorhanden, aber nur eins laäft richtig. >> Lieber V5 starten (von mir aus über ein CATScript, welches v5 startet und danach das VB-Programm) und in VB.Net "GetObject(, "CATIA.Application")" benutzen.
Um auf Objekte in CATIA zuzugreifen, muss man über die Klassen von CATIA gehen. Diese können in VB über "Verweis hinzufügen >> COM-Komponente" in VB angesprochen werden. Die wichitgsten Klassen sind: INFITF >> Allgemeine Klasse für Dokumente, Dateien, Zugriff auf Betriebssystem MECMOD >> Klasse zum Erzeuigen von Skizzen und Drahtgittergeometrien PARTITF >> zum Erzeuigen aller Objekte im Part Design ProductStructurTypLib >> Klasse für Assembly design DRAFTINGITF >> Klasse für Zeichnunsableitungen KnowledgewareTypLib >> Klasse zum Auslesen von Objektparametern (Blöckhöhe, Taschentiefe, etc) HybridShapeTypLib >> Klasse zum Erstellen von Flächen, Ebenen, etc Ein Beispiel: '************************************************************** 'Ansprechen der "Welle.1" im "Körper.2" und ändern des ersten_ Begrenzungswinkel auf 180° '************************************************************** 'Deklaration von CATIA ------------------------------------------- Dim CATIA As New Object CATIA = GetObject(, "CATIA.Application") 'Deklaration von "Körper.2" -------------------------------------- Dim PartDocument As MECMOD.Part = CATIA.ActiveDocument.Part Körper = PartDocument.Bodies.Item("Körper.2") 'Deklaration eines Objektes als Welle ---------------------------- Dim Shape As PARTITF.Revolution 'Ansprechen des bestimmten Objektes ------------------------------ shape = Körper.Shapes.Item("Welle.1") 'Ändern des Parameters ------------------------------------------- shape.FirstAngle.Value = 180° Das Schöne dabei ist, daß durch den Import der CATIA-Klassen sehr gut die jeweiligen Eigenschaften der Klasse bzw. des Objektes angezeigt und ausgewählt werden können. Viel Erfolg Jens Hansen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RonnyS Mitglied
Beiträge: 97 Registriert: 04.09.2003
|
erstellt am: 20. Okt. 2003 08:42 <-- 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: 20. Okt. 2003 08:55 <-- editieren / zitieren --> Unities abgeben: Nur für RonnyS
Hallo Ronny, das sind z.T. die dll-Datein von V5; also MECMOD.dll, etc Eigentlich steht bei den COM-Komponenten sowas wie "V5Partdesign" oder ähnliches, so daß man sich das schon herleiten kann. schöne Grüße Jens Hansen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RonnyS Mitglied
Beiträge: 97 Registriert: 04.09.2003
|
erstellt am: 20. Okt. 2003 11:57 <-- editieren / zitieren --> Unities abgeben:
|
RonnyS Mitglied
Beiträge: 97 Registriert: 04.09.2003
|
erstellt am: 20. Okt. 2003 14:32 <-- editieren / zitieren --> Unities abgeben:
Nochmal hi, kannst du mir grad noch verraten wie ich catia am besten starte? im idealfall ohne vorher den instpath zu kennen. ich hab versucht ein catscript anzulegen udn dies zu starten nur findet das vb irgendwie nicht (Filenotfoundexception) wenn ich nur den relativen Path angeb, oder in welchen Ordner im Projekt muss ich dass werfen? ------------------ gr33t7 Ronny 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: 20. Okt. 2003 15:06 <-- editieren / zitieren --> Unities abgeben: Nur für RonnyS
Hallo Ronny, am besten über ein CATIA-Makro("Starte_mein_Programm.CATScript"). Gemäß Registry starten solche Makros automatisch V5 und führen dann erst den internen Code aus. Beispiel: Sub CATMain() CATIA.SystemService.ExecuteBackgroundProcessus("Programm.exe") End Sub Dabei muss allerdings das Script aus dem selben Ordner gestartet werden, indem sich auch Programm.exe befindet. viel erfolg Jens Hansen
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RonnyS Mitglied
Beiträge: 97 Registriert: 04.09.2003
|
erstellt am: 20. Okt. 2003 15:16 <-- editieren / zitieren --> Unities abgeben:
uups nee ich meinte genau das gegenteil ich möchte aus meinem compilierten VB .net exe-programm Catia starten lassen ohne aber dessen Path kennen zu müssen. Ich hab versucht einfach ein leeres CatScript-file zu nutzen (Wenn man ein gültiges ausführt, wird catia ja auch automatisch gestartet). Quasi in Vb : shell("StartCatia.CATScript",vbnormalFocus) dabei hater aber die Datei "StartCatia.CATScript" halt nicht gefunden, und deswegen FileNotFoundException von .Net bekommen ------------------ gr33t7 Ronny Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SebW Mitglied MB-Student
Beiträge: 20 Registriert: 13.05.2004 User von: Catia V5R11; V5R12SP3 Catia V4
|
erstellt am: 04. Jan. 2005 21:01 <-- editieren / zitieren --> Unities abgeben: Nur für RonnyS
Hallo, ist vielleicht etwas spät :-), aber in der Antwort von Jens Hansen gehts um die verschiedenen *.dll die beim Programmieren angesprochen werden können. Leider steht in VB eine nicht durchschaubare Fülle dieser dlls zur Verfügung. Gibt es irgendwo Infos, welche dll für was gebraucht wird? Danke schonmal. Schönen Gruß. Seb Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Goosnargh Mitglied
Beiträge: 80 Registriert: 30.11.2004
|
erstellt am: 24. Aug. 2011 15:58 <-- editieren / zitieren --> Unities abgeben: Nur für RonnyS
Moin, Ist ein sehr alter Thread, aber mal als Hinweis: Wer wissen möchte welches Objekt in welcher Bibleothek liegt geht in dem ganz einfachen Macros Editor von Catia und schaut in den Objekt-Browser. Dort stehen dann Bibliothek, Klasse usw. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
adrian83 Mitglied student
Beiträge: 62 Registriert: 22.11.2012 -Windows 7 64 bit -Catia V5 r21
|
erstellt am: 09. Apr. 2013 17:53 <-- editieren / zitieren --> Unities abgeben: Nur für RonnyS
|