Autor
|
Thema: Geometrisches Set deklarieren (1760 mal gelesen)
|
BettinaRauch Mitglied BA-Studentin, Fahrzeug-System-Engineering
Beiträge: 65 Registriert: 06.07.2009 Catia V5 R19
|
erstellt am: 12. Aug. 2009 13:29 <-- editieren / zitieren --> Unities abgeben:
Hallo, hab ein Makro in VBScript geschrieben. Das macht ganz viele tolle Dinge Mein Problem ist jetzt, dass ich das Ganze immer auf das Geometrische Set anwenden können will, welches gerade aktiv ist. Das kann demnach immer nen anderen Namen haben, bzw. auch auf einer anderen Ebene im Strukturbaum liegen. Gibt es dafür ne Funktion? Unter dem gewählten Set gibt es dann weitere GeoSets mit geometrischen Elementen, auf die das Makro dann auch zugreift. Hier mal ein Stück Code zur hoffentlich verständlicheren Erklärung: ---------------------- Set partDoc1 = CATIA.ActiveDocument Set part1 = partDoc1.Part Set hybridBodies1 = part1.HybridBodies Set hybridBody1 = hybridBodies1.Item("Tool") '<- Das GeoSet an dieser Stelle soll immer das aktive GeoSet im Strukturbaum sein. Es heißt also nicht immer 'Tool' wie in diesem Fall und es liegt auch nicht zwangsläufig auf der ersten Ebene des Strukturbaumes. Der restliche Aufbau bleibt immer gleich. Set hybridBodies2 = hybridBody1.HybridBodies Set hybridBody2 = hybridBodies2.Item("Eingabeelemente") Set hybridBody3 = hybridBodies1.Item("Ergebnis") Set hybridBodies3 = hybridBody3.HybridBodies Set hybridBody4 = hybridBodies3.Item("Punkte") Set hybridShapes1 = hybridBody2.HybridShapes Set hybridShapeAssemble1 = hybridShapes1.Item("Boundary") Set hybridShapeAssemble2 = hybridShapes1.Item("SepCurve") Set hybridShapeAssemble3 = hybridShapes1.Item("CurveX") Set hybridShapeAssemble4 = hybridShapes1.Item("Teil") Set hybridShapeAssemble5 = hybridShapes1.Item("ZA") ---------------------- Gruß Betty Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. 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: 12. Aug. 2009 20:41 <-- editieren / zitieren --> Unities abgeben: Nur für BettinaRauch
Hallo Bettina, du kannst auf der Part Ebene das InWorkObject" abfragen. Ich würde aber dann noch einen Check einbauen ob das "InWorkObject" auch ein geometrisches Set ist sonst versucht dein Script unmögliche Dinge. Im Anhang mal ein kleines Beispielscript das solche eine Operation durchführt (sogar mit Check ) ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BettinaRauch Mitglied BA-Studentin, Fahrzeug-System-Engineering
Beiträge: 65 Registriert: 06.07.2009 Catia V5 R19
|
erstellt am: 13. Aug. 2009 07:34 <-- editieren / zitieren --> Unities abgeben:
Danke für deine Antwort. Laufen tut es... muss nur noch dahintersteigen, wie das Programm im einzelnen funktioniert... Ein paar Unities für deine super Antworten werden aber auf jeden Fall schon mal verteilt. MfG Betty Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. 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: 13. Aug. 2009 08:02 <-- editieren / zitieren --> Unities abgeben: Nur für BettinaRauch
Hallo Bettina, ich hab hier zu den Script mal kurz ein paar Anmerkungen (in den Quelltext) geschrieben. Am besten erstellt du dir eine neue CATvba Library (oder nimmst eine existierende) und fügst den Quelltext in ein neues Modul ein. Die Kommentare werden dann grün gezeigt der ausführende Code schwarz. Ein weiterer Vorteil ist das die mit der Symbolleiste "Debugging" die Schritt-für-Schritt Debugg-Methode nutzen kannst. Das heißt das Script wird Zeile für Zeile ausgeführt. Mithilfe der Variablen/Objekt-Überwachung (Watch) kannst du alle Variablen und Objekte zur Laufzeit überwachen und somit deren Inhalt sehen. Dies hilft ungemein wenn man sich das Programmieren von CATIA-Makros (oder im allgemeinen das Programmieren mit objektorientierten Sprachen) beibringen will (man versteht besser was da genau gemacht wird!) Im Anhang das geändert Script (ich hab noch einen Abfrage für den Dokumententyp rein geschrieben). Das Makro soll ja nur in einem Part ausgeführt werden können, sonst bekommst du Laufzeitfehler. ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BettinaRauch Mitglied BA-Studentin, Fahrzeug-System-Engineering
Beiträge: 65 Registriert: 06.07.2009 Catia V5 R19
|
erstellt am: 14. Aug. 2009 09:29 <-- editieren / zitieren --> Unities abgeben:
Hallo, noch mal Vielen Dank für die Hilfe. Ich wär da allein nie so schnell (wenn überhaupt) drauf gekommen. Auch deine Bemerkungen in dem Quelltext waren super. Fazit: es läuft und ich versteh eigentlich auch, was da so passiert. Dennoch hab ich noch ein paar kleine Detailfragen: 1.Ganz am Anfang steht irgendwas von ‚mySelektionChecker = False’ um einen eindeutigen Einstiegspunkt zu haben. Kann jemand kurz erläutern, was damit gemeint ist? Also was ein Schleifen-Check genau macht und warum und für was man einen eindeutigen Einstiegspunkt braucht? 2.Ganz am Ende die MsgBox: Was bedeuten da ‚Chr (10)’, ‚Chr (34)’, ‚vbInformation’, ‚vbOKOnly’? 3.Warum schreibt man als Name zum Bsp. ‚oSel’, ‚oPart’ oder ‚oDoc’? Ich meine, was hat das kleine ‚o’ in der Programmiersprache zu bedeuten? Hab das schon öfters gelesen, bin aber noch nicht so ganz dahinter gestiegen. MfG Betty Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. 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: 14. Aug. 2009 10:28 <-- editieren / zitieren --> Unities abgeben: Nur für BettinaRauch
Hallo Bettina, 1. Das ist kein fester Ausdruck in VB sondern nur eine Variabel (du kannst sie auch "Arsch" nennen wenn du willst ) Es gibt doch eine Do...Loop Until Schleife im Script. Diese Schleife wird ausgeführt bis der Wert hinter dem LoopUntil dem angegebenen entspricht. Das heißt die Schleife wird in diesem Fall solange durchlaufen bis die Variable "mySelektionChecker"="true" ist. Das wiederum heißt das ein Check erst dem entsprechen muss was ich mir als Autor vorstelle. Deklariere ich jetzt einfach eine Variabel dann weiß ich ja nicht ob die Variabel jetzt true oder false ist (Bool-Variablen sind nach der Deklaration immer false aber es ist ja nur zur Sicherheit da). Ich will die Schleife aber erst verlassen wenn ich die Variabel von false auf true gesetzt haben. Da ich wie gesagt nicht weiß ob sie true oder false ist setzte ich sie zur Sicherheit erstmal auf false und erst wenn die Bedingung erfüllt ist auf true. Das ist somit nur eine weitere Sicherheit 2.Die "chr" sind Zeichen aus dem Ascii-Zeichnvorrat. Es gibt für jede Taste auf deiner Tastatur ein Ascci Zeichen. 10 ist hierbei ein "Enter", 34 ist ein " " ". Um jetzt einen Zeilenumbruch in eines MessageBox zu bekommen muss ich ihm ja irgendwie sagen das ich hier ein Enter machen will. Einfach "Enter" drücken geht nicht sonst hast du einen Zeilenumbruch in deinem Code aber nicht in dem Messagebox String. hierzu wird dann der Chr(10) eingesetzt. Hier mal ein Link zu einer Ascii-Tabelle. Diese Zeichen kannst du alle mit Chr-in eine MsgBox schreiben ASCII-TABELLE vbInformation steht für das Aussehen bzw. den Klang den die MsgBox beim aufpoppen hat. Das ist das Ausrufezeichen zusammen mit dem angenehmen Klang. Weitere Flags sind vbCritical (rotes Stoppschild und "ekel"-Klang), vbQuestion (Fragezeichen)...etc. Kannst ja einfach mal ausprobieren dann siehst du was ich meine vbOKOnly gibt an das auf der MsgBox nur ein OK-Button gezeigt wird. Weiter Beispiel sind vbYesNo, vbYesNoCnacel, vbOKCancel , vbOKCancelRetry.... 3. Das kleine o hast keine Bedeutung. Im Laufe der Zeit eignet man sich seine eigene Art an Code´s zu schreiben. in der Regel so das man Sie selber am besten lesen kann. Das hat sozusagen einen gewissen Wiedererkennungswert. Die Namen deiner variablen bleiben aber dem Autor selber überlassen. Er sollte sich nur selber zurechtfinden und die Namen aus dem Makrorecorder sind ziemlich lang So ich hoffe ich konnte ein bisschen Licht ins Dunkle bringen
------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BettinaRauch Mitglied BA-Studentin, Fahrzeug-System-Engineering
Beiträge: 65 Registriert: 06.07.2009 Catia V5 R19
|
erstellt am: 14. Aug. 2009 10:43 <-- editieren / zitieren --> Unities abgeben:
Hi, super und noch mal ein ganz dickes "Danke!" 1. Na, in dem Fall werde ich meine Variable jetzt "Po" nennen. Habs also kapiert. 2. Das hab ich glaub schon mal irgendwo gelesen, aber wieder vergessen. Ist grad alles ein bißchen viel auf einmal. Danke vor allem auch für die ASCII-Tabelle. 3. ... ok Fühl mich richtig erleuchtet. Hoffentlich hält das übers We! Also, wünsch dir ein schönes We (ich denke mal für heute will ich nichts mehr wissen) Gruß Betty 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: 14. Aug. 2009 11:15 <-- editieren / zitieren --> Unities abgeben: Nur für BettinaRauch
zu 2. Das sind VB Befehle: chr = ASCII-Code -> Tabelle gibts im Internet; VbInformation und vbOKOnly sind die Darstellungs-Typen der Message-Boxes, ebenfalls VB Befehle. Mein Tip: Setze dich mit der Visual Basic Programmierung (außerhalb von CATIA) auseinander. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|