CATIA V5 - Makroprogrammierung mit Visual Basic Script ... · PDF fileCATIA V5 -...
Transcript of CATIA V5 - Makroprogrammierung mit Visual Basic Script ... · PDF fileCATIA V5 -...
CATIA V5 - Makroprogrammierung mit Visual Basic Script
vonDieter R. Ziethen
2., aktualisierte und erweiterte Auflage
Hanser München 2006
Verlag C.H. Beck im Internet:www.beck.de
ISBN 978 3 446 40325 3
Zu Inhaltsverzeichnis
schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG
CATIA V5 - Makroprogrammierung mit
Visual Basic Script
Dieter R. Ziethen
ISBN 3-446-40325-6
Leseprobe
Weitere Informationen oder Bestellungen unter http://www.hanser.de/3-446-40325-6 sowie im Buchhandel
43
2 Kommunikation mit der Umgebung
Das Kapitel „Kommunikation mit der Umgebung“ beschreibt, wie ein Makro interaktiv
gestaltet werden kann. Ein interaktives Makro ist ein Makro, das mit
einem Anwender,
einem Betriebssystem,
einer Datei oder
einem externen Programm
kommuniziert.
2.1 Bildschirmausgabe und -eingabe
CATScript erlaubt, einen Dialog mit Textaustausch zwischen einem Anwender und Makro
zu programmieren. Die Funktionen heißen:
MsgBox für Ausgaben und
InputBox für Eingaben.
2.1.1 Bildschirmausgabe
Eine Ausgabe auf einen Bildschirm erfolgt über die Funktion MMsgBox. MMsgBox zeigt ei-
nen Text in einem Ausgabefenster an und meldet zurück, welche Schaltfläche des Ausga-
befensters ein Anwender gedrückt hat. Die Syntax der Funktion lautet:
Func MsgBox ([Ausgabe] As String{, [Knopf] As Long, [Titel, Hilfe-datei, Kontext] As String}) As Long
Die Parameter definieren:
„Ausgabe“ bestimmt den Text des Ausgabefensters.
„Knopf“ bestimmt das Aussehen des Ausgabefensters und die Anzahl und Art der Schaltflächen, die ein Anwender drücken kann (Tabelle 2.1). Dieser Parameter ist optional.
„Titel“ definiert den Titel des Ausgabefensters. Dieser Parameter ist optional.
„Hilfedatei“ und „Kontext“ verweisen auf Zusatzinformationen. Diese Parameter sind optional.
Der Rückgabewert der Funktion MMsgBox kennzeichnet die von einem Anwender gedrück-
te Schaltfläche. Eine Aufstellung der möglichen Rückgabewerte gibt Tabelle 2.2.
2 Kommunikation mit der Umgebung
44
Schaltflächen in Abhängigkeit des Parameters „Knopf“
Schaltfläche Wert Schaltfläche Wert
OK (OK) 1 Abbrechen (Cancel) 2
Abbrechen (Abort) 3 Wiederholen (Retry) 4
Ignorieren (Ignore) 5 Ja (Yes) 6
Nein (No) 7
MsgBox bricht einen angezeigten Text in Abhängigkeit des verfügbaren Platzes in einem Ausgabefenster automatisch um. In einigen Fällen soll ein ZZeilenumbruch gezielt beein-
flusst werden. Dies geschieht, indem unter Windows das Zeichen CChr(13) in einem Text an
der Stelle eines Zeilenumbruchs eingefügt wird. Soll ein Makro unter Windows und UNIX
eingesetzt werden, sind die Zeichen CChr(13) und CChr(10) zu verwenden.
Beispiel 2.1: Ausgabe mit Zeilenumbruch
Ein Makro soll die Länge eines Rohres, gespeichert in der Variablen „Laenge“, in einem Fenster gemäß Bild
2.1 darstellen.
Sub CATMain()
Tabelle 2.1:
Schaltflächen eines
Ausgabefensters der
Funktion „MsgBox“
Tabelle 2.2:
Rückgabewerte der
Funktion „MsgBox“
2.1 Bildschirmausgabe und -eingabe
45
Dim Box, Laenge As Long Laenge = 75 Box = MsgBox ("Die Länge ist:" & Chr(13) & Chr(10) & Laenge & " mm", 64, "Ausgabe der Rohrlänge")
End Sub
In einigen Fällen soll ein Ausgabefenster nur dazu dienen, einem An-
wender eine Nachricht anzuzeigen, ohne dass ein Makro eine vom
Anwender gedrückte Schaltfläche auswerten soll. In diesem Fall er-
laubt CATScript, die Wertzuweisung der Funktion MMsgBox wegzulas-
sen. Es können in diesem Fall keine Anzeigeoptionen definiert werden.
MsgBox ([Ausgabe] As String)
Beispiel 2.2 Ausgabefenster ohne Wertzuweisung
Sub CATMain()
MsgBox ("Die Länge ist:" & Chr(13) & Chr(10) & "75 mm")
End Sub
2.1.2 Bildschirmeingabe
Eine Eingabe am Bildschirm erfolgt über die Funktion InputBox. Die Funktion zeigt ein
Eingabefenster mit einem Eingabefeld an und gibt die eingegebene Zeichenfolge eines Anwenders zurück. Die Syntax der Funktion lautet:
Func InputBox ([Text{, Titel, Defaultwert}] As String{, [XPosition, YPosition] As Long, [Hilfedatei, Kontext] As String}) As String
Die Parameter bedeuten:
„Text“ bestimmt den Text über dem Eingabefeld des Eingabefensters.
„Titel“ bestimmt die Überschrift des Eingabefensters. Dieser Parameter ist optional.
„Defaultwert“ gibt den Startwert an, der in dem Eingabefeld erscheint und von einem Anwender überschrieben werden kann. Dieser Parameter ist optional.
„XPosition“ und „YPosition“ bestimmen die Position der linken oberen Ecke des Einga-befensters am Bildschirm. Diese Parameter sind optional. Werden die Parameter nicht genutzt, wird ein Fenster zentriert dargestellt.
„Hilfedatei“ und „Kontext“ verweisen auf Zusatzinformationen. Diese Parameter sind optional.
Beispiel 2.3: Eingabefenster
Ein Benutzer soll aufgefordert werden, seinen Nachnamen in einem Eingabefenster mit dem Titel „Eingabe
Nachname“ einzugeben. Als erklärender Text soll „Bitte geben Sie Ihren Nachnamen ein.“ erscheinen. Es
soll der Beispielname „Mustermann“ als Defaultwert angezeigt werden (Bild 2.2).
Bild 2.1:
Ergebnis des Beispiels
„Ausgabe mit Zeilen-
umbruch“
2 Kommunikation mit der Umgebung
56
SELECTION.VisProperties As VisPropertySet (Read Only)
Die Klasse VVisPropertySet ist ein Werkzeug zum Analysieren und Verändern der visuellen
Eigenschaften der Elemente, die soeben in einer CATIA-Sitzung selektiert sind (vgl. Ab-
schnitte 2.3 und 2.4). Um Veränderungen der visuellen Eigenschaften vorzunehmen, müs-
sen daher auch Elemente selektiert sein. Ein Element kann gezielt über die Methode AAdd
der Klasse SSelection selektiert werden:
Sub SELECTION.Add [Objekt] As AnyObject
Ist ein Element selektiert, kann es anschließend eingefärbt oder ausgeblendet werden.
2.5.1 Einfärben
CATIA V5 unterscheidet für ein Element zwei Farben: die sichtbare Farbe und die reale
Farbe. Die reale Farbe ist die Farbe, die direkt einem Element zugeordnet ist. Die sichtbare
Farbe ist die Farbe, in der das Element im 3D-Fenster dargestellt ist. Dieser Unterschied kann dadurch bedingt sein, dass beispielsweise einem Körper eine Farbe zugewiesen wurde
und in dessen Farbe auch alle anderen Elemente angezeigt werden, die sich in diesem
Körper befinden; obwohl die realen Farben der Elemente von derjenigen des Körpers ab-
weichen. Diesen Effekt, die sichtbare Farbe auf untergeordnete Elemente übertragen zu
können, wird auch Vererbung der Farbe genannt.
Die reale Farbe eines Elementes kann über die Methode SSetRealColor der Klasse VVisPro-pertySet (siehe S. 502 ff.) festgelegt werden:
Sub VISPROPERTYSET.SetRealColor [Rot, Grün, Blau, Vererbung] As Long
„Rot”, „Grün” und „Blau” bestimmen die Farbe. Ihr Wertebereich ist eine ganze Zahl zwi-
schen „0“ und „255“ (siehe Tabelle 2.5). „Vererbung“ legt fest, ob die Farbe sich als sicht-
bare Farbe auf untergeordnete Elemente vererben soll. „1“ aktiviert eine Vererbung, „0“
deaktiviert eine Vererbung.
Rot Grün Blau Farbe Rot Grün Blau Farbe
0 0 0 Schwarz 255 0 0 Rot
255 255 255 Weiß 0 255 0 Grün
200 200 200 Grau 0 0 255 Blau
Beispiel 2.15: Einfärben von Geometrieelementen
Der Hauptkörper eines geöffneten, aktiven CATParts soll mit aktivierter Vererbung grün eingefärbt wer-
den, so dass die sichtbare Farbe aller Elemente innerhalb des Hauptkörpers auch Grün ist (Bild 2.9).
Dim Liste As Selection Set Liste = CATIA.ActiveDocument.Selection Liste.Clear
Tabelle 2.5:
Beispiele für Farbwerte
2.6 Lesen und Schreiben von Datensätzen
57
Liste.Add CATIA.ActiveDocument. Part.MainBodyListe.VisProperties.SetRealColor0, 255, 0, 1
2.5.2 Ausblenden
Das Ausblenden eines oder mehrerer Elemente einer Selektion erfolgt über die Methode
SetShow der Klasse VVisPropertySet (siehe S. 502 ff.):
Sub VISPROPERTYSET.SetShow [Status] As CATVisPropertyShow
„Status“ besitzt folgenden Wertebereich: „catVisPropertyShowAttr” (Anzeigen) und „cat-VisPropertyNoShowAttr” (Verdecken).
Beispiel 2.16: Ausblenden von Geometrieelementen
Innerhalb eines geöffneten, aktiven CATParts soll der Hauptkörper ins „No-Show“ gestellt werden (Bild
2.9).
Dim Liste As Selection Set Liste = CATIA.ActiveDocument.Selection Liste.ClearListe.Add CATIA.ActiveDocument.Part.MainBody Liste.VisProperties.SetShow catVisPropertyNoShowAttr
2.6 Lesen und Schreiben von Datensätzen
Das Lesen und Schreiben von Datensätzen wird durch die Klassen FFile (siehe S. 191) und TextStream (siehe S. 491) gehandhabt. Ein Objekt der Klasse FFile repräsentiert eine Datei,
eines der Klasse TTextStream einen Lese- oder Schreibvorgang. Es handelt sich hierbei um
einen sequenziellen Dateizugriff, d.h., eine Datei wird von Anfang bis Ende gelesen.
2.6.1 Datei deklarieren oder erzeugen
Für einen Lese- oder Schreibvorgang muss im ersten Schritt ein Objekt der Klasse FFile erzeugt werden. Ist eine Datei schon vorhanden, wird die Datei deklariert. Ist diese noch
nicht vorhanden, so wird sie erzeugt.
Wenn eine Datei schon existiert, wird diese über die Methode GGetFile der Klasse FFile-
system (siehe S. 192) deklariert:
Func FILESYSTEM.GetFile ([Name] As CATBSTR) As File
Bild 2.8:
Ergebnis des Beispiels
„Einfärben von Geo-
metrieelementen“
Bild 2.9:
Ergebnis des Beispiels
„Ausblenden von
Geometrieelementen“
64
3 Bestandteile eines CATParts
Ein CATPart besitzt zwei Gruppen von Bestandteilen. Die erste Gruppe sind geometriebe-
zogene Inhalte wie Ursprungsebenen, Körper, geometrische Sets und Geometrien (Bild 3.1).
Die zweite Gruppe sind Metadaten wie Teilenummern, Nomenklaturen und benutzerdefi-
nierte Attribute. Auf diese zwei Gruppen wird über die Ankerobjekte PPart und PProduct
zugegriffen (Abschnitte 1.10.3 und 1.10.4).
Der geometriebezogene Inhalt eines CATParts ist einem
Objekt der Klasse PPart (siehe S. 424 ff.) zugeordnet. Der
Zugriff auf dieses Objekt erfolgt über die Eigenschaft PPart
eines Objektes PPartDocument (siehe S. 429).
PARTDOCUMENT.Part As Part (Read Only)
Die Metadaten eines CATParts sind einem Objekt der Klasse
Product (siehe S. 435 ff.) zugeordnet. Ein Objekt der Klasse wird über die Eigenschaft PProduct der Klasse PPartDocu-
ment (siehe S. 429) abgeleitet.
PARTDOCUMENT.Product As Product (Read Only)
Neben den Elementen, die für einen Anwender sichtbar sind, verfügt ein CATPart über
Referenzen und Richtungsdefinitionen. Eine Referenz ist ein CATIA-interner Zeiger auf ein
Objekt, eine Richtungsdefinition die Beschreibung einer Raumrichtung.
In diesem Kapitel wird beschrieben, wie die hier aufgezählten Elemente in einem Makro erzeugt oder deklariert werden.
3.1 Attribute
Die Attribute eines CATParts lassen sich in Standardattribute und benutzerdefinierte Attri-bute aufteilen. Standardattribute sind in jedem CATPart vorhanden. Standardattribute sind
die Teilenummer, Überarbeitung, Definition, Nomenklatur, Quelle und Beschreibung. Be-
nutzerdefinierte Attribute existieren nur dann, wenn diese von einem Anwender in einem
CATPart erzeugt wurden. Die Benennung eines benutzerdefinierten Attributes ist individu-
ell.
3.1.1 Standardattribute
Die Standardattribute „Teilenummer“, „Überarbeitung“, „Definition“, „Nomenklatur“,
„Quelle“ und „Beschreibung“ sind über die Eigenschaften PPartNumber, RRevision, DDefini-
tion, NNomenclature, SSource und DDescriptionRef der Klasse PProduct (siehe S. 435 ff.) beschrieben:
PRODUCT.PartNumber As String
PRODUCT.Revision As String
Bild 3.1:
Geometriebezogener
Inhalt eines CATParts
3.2 Ursprungselemente
65
PRODUCT.Definition As String
PRODUCT.Nomenclature As String
PRODUCT.Source As CatProductSource
PRODUCT.DescriptionRef As String
Beispiel 3.1: Standardattribute eines CATParts
In einem geöffneten, aktiven CATPart sollen die Standardattribute gesetzt werden. Das Bauteil soll als
Kaufteil gekennzeichnet werden.
Dim Produkt As Product Set Produkt = CATIA.ActiveDocument.ProductProdukt.PartNumber = "4911" Produkt.Revision = "A" Produkt.Nomenclature = "Schraube M10" Produkt.Source = 2 Produkt.DescriptionRef = "Lieferant Neckermann"
3.1.2 Benutzerdefinierte Attribute
Die Liste der benutzerdefinierten Attribute ist durch das Listenobjekt UUserRefProperties
der Klasse PProduct (siehe S. 435 ff.) beschrieben. Attribute werden über die Eigenschaften
der Klasse PParameters (siehe S. 421 ff.) erzeugt oder entfernt.
PRODUCT.UserRefProperties As Parameters (Read Only)
Beispiel 3.2: Benutzerdefinierte Attribute eines CATParts
In einem geöffneten, aktiven CATPart soll das boolesche Attribut „Normteil“ mit dem Wert „Wahr“ erzeugt
werden.
Dim Produkt As Product Set Produkt = CATIA.ActiveDocument.ProductDim BenAttrib As Parameters Set BenAttrib = Produkt.UserRefPropertiesDim B As BoolParam Set B = BenAttrib.CreateBoolean ("Normteil", true)
3.2 Ursprungselemente
Ein Ursprungselement ist eine Geometrie, die in jedem CATPart automatisch nach dessen
Erzeugung vorhanden ist. Jede Geometrie, die von einem Anwender oder Makro in einem CATPart erzeugt wird, stützt sich auf ein oder mehrere Ursprungselemente. Die Ursprungs-
elemente eines CATParts sind die xy-, yz- und zx-Ebene. Ein Listenobjekt aller Ursprungs-
elemente wird über die Eigenschaft OOriginElements der Klasse PPart (siehe S. 424 ff.) abge-
leitet.
6 3D-Drahtgeometrie und Flächen
102
Schritt Eigenschaften und Methoden
1. 3D-Werkzeugkasten und geometrisches Set deklarieren oder erzeugen:
PART.HybridShapeFactory As Factory (Read Only)
PART.HybridBodies As HybridBodies (Read Only)
Func HHYBRIDBODIES.Add As HybridBody
2. Geometrie über den 3D-Werkzeugkasten vordefinieren:
Func HYBRIDSHAPEFACTORY.AddNew... As HybridShape
3. Geometrie einem Körper, geometrischen Set oder geordneten geometrischen Set zuwei-
sen und erzeugen:
Sub HHYBRIDBODY.AppendHybridShape [Geometrie] As HybridShape
Sub OORDEREDGEOMETRICALSET.InsertHybridShape [Geometrie] As HybridShape
Sub BBODY.InsertHybridShape [Geometrie] As HybridShape
Beispiel 6.1: Erzeugen eines Punktes
In einem geöffneten, aktiven CATPart soll das geometrische Set „Punkte“ und in diesem der Punkt (20 /
40,5 / 100,25) erzeugt werden.
' 3D-Werkzeugkasten deklarieren --------------------------------- Dim Wzk3D As Factory Set Wzk3D = CATIA.ActiveDocument.Part.HybridShapeFactory
' Geometrisches Set erzeugen ------------------------------------ Dim HBody As HybridBody Set HBody = CATIA.ActiveDocument.Part.HybridBodies.AddHBody.Name = "Punkte"
' Geometrie vordefinieren --------------------------------------- Dim Punkt As HybridShapePointCoord Set Punkt = Wzk3D.AddNewPointCoord (20, 40.5, 100.25)
' Geometrie dem geometrischen Set zuweisen ---------------------- HBody.AppendHybridShape Punkt CATIA.ActiveDocument.Part.Update
6.2 Punkte
Ein Punkt ist ein Geometrieelement ohne räumliche Ausdehnung. Ein Punkt kann über
Koordinaten oder seine relative Lage zu einem anderen Geometrieelement beschrieben
werden.
Die übergeordnete Klasse aller Punkte ist die Klasse PPoint (siehe S. 432), die Basismetho-
den für alle Punktarten zur Verfügung stellt. Eine Übersicht der Arten von Punkten gibt
Tabelle 6.2. Jede Punktart besitzt eine spezialisierte Klasse, die mit der Bezeichnung „HHybridShapePoint...“ beginnt. Eine Ausnahme bilden Steuerpunkte und Extrema, die
direkt aus der Klasse HHybridShape abgeleitet sind.
Tabelle 6.1:
Allgemeines Vorgehen
zur Erzeugung von 3D-
Draht- und Flächenge-
ometrie