Hallo CAD-Gemeinde,
möchte euch einen Lösungsansatz für folgenden Problem nicht vorbehalten und erläutere folgende Situation:
Habe eine PowerCopy erstellt, in der die Knowledge-Advisor Funktionen „Reaction / VB Skript“ enthalten sind. Diese Funktionen sollen ganz einfach nur vier Linien auf dessen Länge hin prüfen und ggfs. eine MsgBox ausgeben!
-> Messung1 = length(Line.1)
-> Messung2 = length(Line.2)
-> Messung3 = length(Line.3)
-> Messung4 = length(Line.4)
In der PowerCopy befinden sich natürlich neben den Geometrielementen auch die Formeln, Parameter, Reaction und das VB Script.
Beim Einfügen der PowerCopy in ein „Zielpart“ suchen die Funktionen „Reaction / VB Skript“ die Parameter im Baum unter:
PARTNAME / PARAMETERS / Messung1 …usw
Das ganze Funktioniert einwandfrei, da bei der PowerCopy - Erstellung die Parameternamen, den gleichen strukturellen Aufbau haben wie beim einfügen der PC in ein „Zielpart“
Jetzt zum Problem:
FÜGT MAN DIE POWERCOPY EIN ZWEITES MAL IN EIN „ZIELPART“ EIN, SO ERZEUGT CATIA AUTOMATISCH EIN NEUES PARAMETERSET MIT DEM NAMEN „Parameters.1“. Das ganze sieht im Baum wie folgt aus:
PARTNAME / PARAMETERS / PARAMETERS.1 / Messung1 …usw
Und an dieser Stelle fängt das Problem an. Natürlich rattern die Funktionen „Reaction / VB Skript“ wie gewohnt los. An der stelle jedoch wo sie die Parameter vergleichen wollen, vergleichen sie nicht die zum zweiten mal eingefügten Werte sondern die vom ersten mal, denn:
Die Funktionen „Reaction / VB Skript“ verglichen die Parameter unter:
PARTNAME / PARAMETERS / Messung1 …usw
und nicht die neu eingefügten Werte unter:
PARTNAME / PARAMETERS / PARAMETERS.1 / Messung1 …usw
Nun zur Lösung: (Vielen Dank an zoltan.bekesi für die gute und schnelle Hilfe!!!)
1. Der generelle Aufbau sieht wie im BILD1 aus. Natürlich kann das ganze von Situation zu Situation anders aussehen
2. Erzeugen einer REACTION wie in BILD2 zu sehen
(Der Verweis bei SOURCES auf die „FORMULA.51“ war so gedacht, dass die Reaction erst dann starten kann, wenn alle Linien im Zielpart erzeugt wurden, da FORMULA.51 = Messung1 + Messung2 + Messung3 + Messung4 ist)
In den Reaction wird dann das VB Skript aufgerufen
3. Erzeugen eines VB Script in Catia wie in BILD3 zu sehen
(unnötige Definitionen können möglich sein, ständiges „Trial & Error“ war schuld )
CODE:
----------------------------------------------------
Sub main (Messung1 , Messung2 , Messung3 , Messung4)
Set oDoc = CATIA.ActiveDocument
Set oProd = oDoc.Product
Set Document = CATIA.ActiveDocument
Set RootProduct = Document.Product
Set oParam = oProd.Parameters
Catia.StartCommand("Update")
If Messung2.Value > Messung1.Value and Messung3.Value > Messung2.Value and Messung4.Value > Messung3.Value Then
Box = MsgBox("Entformung möglich", vbInformation + vbOKOnly, "Entformpruefung")
Else
Box = MsgBox("Entformung nicht möglich" + Chr(10) + "2", vbCritical + vbOKOnly, "Entformpruefung")
End If
End Sub
--------------------------------------------------
Mit diesem Vorgehen ist gewährleistet, dass auch nach x-maligen Einfügen der PowerCopy das richtige Parameterset gefunden wird! Entscheident hierbei ist jedoch die vorangegangene „Reaction“.
SCHLUSSWORT:
Natürlich gibt es dazu einfachere und logischere Lösungen, jedoch habe ich das dazu nötige Fachwissen nicht und die Zeit fehlt mir auch, sich darin zu vertiefen. Hauptsache es funktioniert und der ein oder andere kann hiermit etwas anfangen
Vielen Dank noch mal an zoltan.bekesi!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP