Autor
|
Thema: 2D Linie im Drawing, die Existenz abfragen, bei Bedarf erzeugen und umbenennen (1652 mal gelesen)
|
Hokay Mitglied
Beiträge: 143 Registriert: 27.07.2004 Win7-Enterprice Catia V5 R24 SP1
|
erstellt am: 05. Nov. 2008 12:56 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, ich versuch verzweifelt ein CATScript zu schreiben welcher auf einem Drawing die Existenz einer Linie mit Namen (z.B."Linie.xyz") abfragt. Wenn diese nicht vorhanden ist dann erzeuge diese mit Position (z.B. 0,0,100,100)und benenne diese Linie wieder "Linie.xyz" Hat da jemand nen Beistpielscript oder kann mir jemand helfen!!! Ich bekomme das irgendwie nicht hin. Der Macrorecorden zeichnet bei uns auch nichts auf. Vielen Dank im Voraus Hokay Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 05. Nov. 2008 17:12 <-- editieren / zitieren --> Unities abgeben: Nur für Hokay
Hallo Hokay, das Problem ist das viele Funktionen aus der Drafting WB kein Journaling unterstützen (d.h. sie werden NICHT vom Makrorecorder aufgezeichnet). Dabei handelt es sich vor allem um das erstellen von Linien, Punkten, Splines, etc.. Man bräucht von dir jedoch noch ein paar Info´s sonst wird es schwer dir ein kleines Beispielscript zu schreiben. 1. Ist die Linie immer in einer bestimmten View oder kann sie sich in jeder View der drawing befinden (also auch direkt auf dem Blatt oder im Background)? 2. In welche View soll die Linie erstellt werden falls sie nicht da ist? Soll der Anwender eine View auswählen oder soll das Makro die Linie in eine neue View erstellen? ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hokay Mitglied
Beiträge: 143 Registriert: 27.07.2004 Win7-Enterprice Catia V5 R24 SP1
|
erstellt am: 06. Nov. 2008 10:03 <-- editieren / zitieren --> Unities abgeben:
Hallo denyo_1 vielen Dank für Deine Antwort. Zu Deiner 1. Frage: Die Linie, genauer gesagt handelt es sich um 6 Linien sind nicht in einer View sondern immer direkt auf dem Blatt. Diese 6 Linien sollen einen Zeichenbereich symbolisieren (siehe Bildanhang) der durch Parameter Blattgröße verändert werden kann. Aber das führt hier glaube ich zu weit. Wenn ich es schaffe 1 Linie abzufragen, zu erzeugen, und umzubennenen, dann bekomme ich den Rest dann schon dupliziert. Frage 2: ist hinfällig Mit freundlichen Grüßen Hokay
[Diese Nachricht wurde von Hokay am 06. Nov. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 06. Nov. 2008 17:56 <-- editieren / zitieren --> Unities abgeben: Nur für Hokay
Hallo Hokay, hab heute leider keine Zeit mehr werd´s mir morgen aber mal vornehmen. Aber jetzt noch eine andere Frage. Wie ich jetzt aus deinem Bild sehe handelt es sich vermutlich um einen Zeichnungsrahmen. Warum holst du dir nicht den TitleBlock Editor und nutzt diesen. hier mal ein Link zur neusten Version TitleBlock Editor ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 06. Nov. 2008 18:50 <-- editieren / zitieren --> Unities abgeben: Nur für Hokay
Hallo Hokay, hatte gerade mal 5min. Zeit und hab dir mal ein kleines Beispielscript gebastelt. Das Script fragt nun ab ob eine Linie mit dem Namen "Linie.1" in der MainView (also direkt auf dem Blatt) existiert (Linie.2 ist das selbe (siehe Script)). Ist dies der Fall wird nichts gemacht. Existiert die Linie nicht, wird sie erstellt. Die Koordinaten des Start- bzw. Endpunktes werden im Script angegeben. Hier müsstest du halt jetzt die Beziehung zur Blattgröße herstellen (ein kleines Beispiel wäre: Wenn du das Teil als VB-Script aufbaust dann kannst du ne UserForm machen mit ner Combo-Box. Hier soll der User die Blattgröße auswählen. Anschließend wird im Script aufgrund der Einstellung in der Combo-Box die Koordinaten der 12 Punkte ausgewertet und an die 6 Linien übergeben.) Anmerkung: Ich habe die Abfrage jetzt über eine Schleife verwirklicht. Man könnte das auch über ein GetItem hinbekommen aber da bin ich kein Freund von. Da es so und so nur 6 Linien also max. 19 Item´s in der MainView geben sollte sollte das auch kein Poblem mit der Geschwindigkeit geben. Hier jetzt das Scriptbeispiel: Code:
Sub CATMain()'Allgemeine Def´s Set oDoc = CATIA.ActiveDocument Set oSheets = oDoc.Sheets Set oSheet = oSheets.ActiveSheet Set oViews = oSheet.Views Set oView = oViews.Item(1) Set myFac = oView.Factory2D oView.Activate 'Punktedefinition für erste Linie (L1) Punkt_1_X_L1 = 10 Punkt_1_Y_L1 = 0 Punkt_2_X_L1 = 10 Punkt_2_Y_L1 = 100 'Punktedefinition für zweite Linie (L2) Punkt_1_X_L2 = 50 Punkt_1_Y_L2 = 0 Punkt_2_X_L2 = 50 Punkt_2_Y_L2 = 100 'hier musst du halt die Punkte definieren die du für deine Linien brauchst 'Abfrage bzw. erstellen Linie 1 (myL1) Z = 0 For i = 1 To oView.GeometricElements.Count Set myL1 = oView.GeometricElements.Item(i) If myL1.Name = "Linie.1" Then Z = Z + 1 End If Next If Z = 0 Then Set myL1 = myFac.CreateLine(Punkt_1_X_L1, Punkt_1_Y_L1, Punkt_2_X_L1, Punkt_2_Y_L1) myL1.Name = "Linie.1" End If 'Abfrage bzw. erstellen Linie 2 (myL2) Z = 0 For i = 1 To oView.GeometricElements.Count Set myL2 = oView.GeometricElements.Item(i) If myL2.Name = "Linie.2" Then Z = Z + 1 End If Next If Z = 0 Then Set myL2 = myFac.CreateLine(Punkt_1_X_L2, Punkt_1_Y_L2, Punkt_2_X_L2, Punkt_2_Y_L2) myL2.Name = "Linie.2" End If End Sub
------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hokay Mitglied
Beiträge: 143 Registriert: 27.07.2004 Win7-Enterprice Catia V5 R24 SP1
|
erstellt am: 07. Nov. 2008 14:07 <-- editieren / zitieren --> Unities abgeben:
Hallo Daniel vielen Dank für Deine Hilfe und für den kleinen Script. So ähnlich habe ich mir das vorgestellt. Werden den Rest drum herum bestimmt selbst hin bekommen. Aber noch mal ne Frage: UserForm ... - sehr guter Hinweis. Das kenne ich aus Excel VBA. Habe ich in Catia noch nie gemaht oder gesehen wie man das macht. Kannst Du mir dazu nochmals unter die Arme greifen? Das fänd ich echt super. Geht sowas in CATScript überhaupt oder brauch ich da auch VBA. Mit Freundlichen Grüßen Hokay
[Diese Nachricht wurde von Hokay am 07. Nov. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 07. Nov. 2008 16:12 <-- editieren / zitieren --> Unities abgeben: Nur für Hokay
Hallo Hokay, um eine UserForm zu erstellen brauchst du Visual Basic. Dies ist aber direkt in CATIA intergriert (falls es installiert ist). Wenn CATIA geöffnet und aktiv ist, einfach ALT+F11 drücken (oder Tools -> Macro -> Visual Basic Editor). Falls diese Auswahl gedimmt ist, wurde der Editor nicht mitinstalliert und muss von der CATIA CD nachinstalliert werden. Ansonsten funktioniert das ganze wie in Office Programmen auch. ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hokay Mitglied
Beiträge: 143 Registriert: 27.07.2004 Win7-Enterprice Catia V5 R24 SP1
|
erstellt am: 11. Nov. 2008 10:02 <-- editieren / zitieren --> Unities abgeben:
Hallo Daniel, Ok Habs gerafft wie's geht. Aber kann man das auch mit CATScript erreichen. Mein Chef will kein VBA Wir wollen ausschließlich CATScript. Bzw. Wie rufe ich diese UserForm aus einem CATScript heraus auf. MFG Hokay Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 11. Nov. 2008 12:21 <-- editieren / zitieren --> Unities abgeben: Nur für Hokay
Hallo Hokay, die UserForm existiert nur in CATvba, kann also nicht aus einem CATscript bzw. CATvbs aufgerufen werden. Ich denke deinem Chef geht es darum, das ein CATscript auf jedem Rechner (egal ob Intel oder AIX, etc.) läuft. Um solch ein Programm zu erstellen (mit GUI und auf allen Systemen ausführbar) brauchst du eine andere Programmiersprache bzw. Compiler (z.B. „TCL/TK”) Ich denke aber dafür ist der Aufwand nicht gerechtfertigt. Ich würde es dann über ein CATscript mit Inputbox machen. Ist dann zwar keine schöne GUI aber funktioniert.
------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hokay Mitglied
Beiträge: 143 Registriert: 27.07.2004 Win7-Enterprice Catia V5 R24 SP1
|
erstellt am: 12. Nov. 2008 13:09 <-- editieren / zitieren --> Unities abgeben:
Hallo Daniel, Werd die auswahl über Inputbox händeln und Bei CATScript bleiben. Ich komme die nächsten 14 tage jetzt leider kaum dazu meinen Script weiter zu basteln. Bis dahin erst einmal vielen vielen Dank für Deine Hilfe. 10 Units sind auf dem Weg :-) MFG Hokay
[Diese Nachricht wurde von Hokay am 12. Nov. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |