Hallo,
Dann beschreibe ich mal kurz den Zweck des Makros:
In meinem Part habe ich Parameter angelegt mit denen ich verschiedene Products steuern kann. So gibt es z.B. den Parameter 'Anzahl' der die Anzahl der Komponenten im Product regeln soll. Nun hatte ich die Aufgabe ohne KWA-Anwendungen eine Regel zur Steuerung des Products zu erschaffen. Dafür habe ich die Makros erstellt, die über ein Catia-externes Programm angestoßen werden sollten. Die Makros aktivieren/inaktivieren die der Anzahl entsprechenden Komponenten sowie deren zugehörige Bedingungen.
Hier das Makro für 2 aktivierte Komponenten:
(Komponente 1 ist immer aktiv und wird nicht behandelt)
Language="VBSCRIPT"
Sub CATMain()
Set windows1 = CATIA.Windows
Set specsAndGeomWindow1 = windows1.Item("Product-Name.CATProduct")
specsAndGeomWindow1.Activate
Dim productDocument1 As Document
Set productDocument1 = CATIA.ActiveDocument
Dim product1 As Product
Set product1 = productDocument1.Product
Dim products1 As Products
Set products1 = product1.Products
Dim product2 As Product
Set product2 = products1.Item("Part-Name.2")
Dim parameters1 As Parameters
Set parameters1 = product1.Parameters
parameters1.Item("Product-Name\Part-Name.2\Aktivierungsstatus der Komponente").value = True
parameters1.Item("Product-Name\Bedingungen\Flächenkontakt.17\Flächenkontakt.17\Aktivität").value = True
parameters1.Item("Product-Name\Bedingungen\Winkel.18\Winkel.18\Aktivität").value = True
Dim product3 As Product
Set product3 = products1.Item("Part-Name.3")
Dim parameters2 As Parameters
Set parameters2 = product2.Parameters
parameters1.Item("Product-Name\Part-Name.3\Aktivierungsstatus der Komponente").value = False
parameters1.Item("Product-Name\Bedingungen\Flächenkontakt.20\Flächenkontakt.20\Aktivität").value = False
parameters1.Item("Product-Name\Bedingungen\Winkel.21\Winkel.21\Aktivität").value = False
Dim product4 As Product
Set product4 = products1.Item("Part-Name.4")
Dim parameters3 As Parameters
Set parameters3 = product3.Parameters
parameters1.Item("Product-Name\Part-Name.4\Aktivierungsstatus der Komponente").value = False
parameters1.Item("Product-Name\Bedingungen\Flächenkontakt.22\Flächenkontakt.22\Aktivität").value = False
parameters1.Item("Product-Name\Bedingungen\Winkel.23\Winkel.23\Aktivität").value = False
Dim product5 As Product
Set product5 = products1.Item("Part-Name.5")
Dim parameters4 As Parameters
Set parameters4 = product4.Parameters
parameters1.Item("Product-Name\Part-Name.5\Aktivierungsstatus der Komponente").value = False
parameters1.Item("Product-Name\Bedingungen\Flächenkontakt.24\Flächenkontakt.24\Aktivität").value = False
parameters1.Item("Product-Name\Bedingungen\Winkel.25\Winkel.25\Aktivität").value = False
Dim product6 As Product
Set product6 = products1.Item("Part-Name.6")
Dim parameters5 As Parameters
Set parameters5 = product4.Parameters
parameters1.Item("Product-Name\Part-Name.6\Aktivierungsstatus der Komponente").value = False
parameters1.Item("Product-Name\Bedingungen\Flächenkontakt.26\Flächenkontakt.26\Aktivität").value = False
parameters1.Item("Product-Name\Bedingungen\Winkel.27\Winkel.27\Aktivität").value = False
End Sub
Dieses Makro hat seinen Dienst sauber erledigt, ob ich hier und da etwas besser hätte 'programmieren' können war mir nicht so wichtig wie ein funktionierendes Makro.. Unter KWA als Regel ist das ganze einfacher in der handhabung, gerade weil keine Deklarierungen nötig sind.
MfG,
Nixon
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP