Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Geometrisches Set deklarieren

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Geometrisches Set deklarieren (1760 mal gelesen)
BettinaRauch
Mitglied
BA-Studentin, Fahrzeug-System-Engineering


Sehen Sie sich das Profil von BettinaRauch an!   Senden Sie eine Private Message an BettinaRauch  Schreiben Sie einen Gästebucheintrag für BettinaRauch

Beiträge: 65
Registriert: 06.07.2009

Catia V5 R19

erstellt am: 12. Aug. 2009 13:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von DanielFr. an!   Senden Sie eine Private Message an DanielFr.  Schreiben Sie einen Gästebucheintrag für DanielFr.

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für BettinaRauch 10 Unities + Antwort hilfreich


AbfrageGeoSet_v1.0.zip

 
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


Sehen Sie sich das Profil von BettinaRauch an!   Senden Sie eine Private Message an BettinaRauch  Schreiben Sie einen Gästebucheintrag für BettinaRauch

Beiträge: 65
Registriert: 06.07.2009

Catia V5 R19

erstellt am: 13. Aug. 2009 07:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von DanielFr. an!   Senden Sie eine Private Message an DanielFr.  Schreiben Sie einen Gästebucheintrag für DanielFr.

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für BettinaRauch 10 Unities + Antwort hilfreich


AbfrageGeoSet_v1.1.zip

 
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


Sehen Sie sich das Profil von BettinaRauch an!   Senden Sie eine Private Message an BettinaRauch  Schreiben Sie einen Gästebucheintrag für BettinaRauch

Beiträge: 65
Registriert: 06.07.2009

Catia V5 R19

erstellt am: 14. Aug. 2009 09:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von DanielFr. an!   Senden Sie eine Private Message an DanielFr.  Schreiben Sie einen Gästebucheintrag für DanielFr.

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für BettinaRauch 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von BettinaRauch an!   Senden Sie eine Private Message an BettinaRauch  Schreiben Sie einen Gästebucheintrag für BettinaRauch

Beiträge: 65
Registriert: 06.07.2009

Catia V5 R19

erstellt am: 14. Aug. 2009 10:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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)


Sehen Sie sich das Profil von V5Playaz an!   Senden Sie eine Private Message an V5Playaz  Schreiben Sie einen Gästebucheintrag für V5Playaz

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für BettinaRauch 10 Unities + Antwort hilfreich

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 >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz