Autor
|
Thema: Abfragen ob das Part oder Produkt gefunden bzw. geladen wurde (1473 mal gelesen)
|
Florian.Held Mitglied Konstruktiver Spritzer (Konstruktion Spritzguss)
Beiträge: 35 Registriert: 13.07.2005 CATIA R14 SP5 unter WinXP64 und Unix (vbscript)
|
erstellt am: 24. Mrz. 2006 19:43 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich stecke wiedereinmal fest, vielleicht kann mir jemand helfen. Ich durchlaufe den Strukturbaum von oben nach unten und lasse mir mit folgender Zeile die Teilnamen der Dateien im Baum (Part/Produkt/Exemplar) ausgeben (Die folgende Beispielzeile gibt des erste Part/Produkt aus, welches im Baum unter dem Hauptprodukt (CATIA.ActiveDocument..Product) auftaucht): MsgBox CATIA.ActiveDocument..Product.Products.Item(1).Partnumber Taucht im Baum jedoch ein Part oder Produkt auf, welches nicht gefunden und dementsprechend nicht geladen wurde (Im Exploerer umbenannt, Datei gelöscht etc.) so produziert mein Script mit obiger Befehlszeile logischerweise eine Fehlermeldung. Mit CATIA.ActiveDocument..Product.Products.Item(1).HasAMasterShapeRepresentation kann ich des net machen weil da FALSE ausgegeben wird wenn ein Teil nicht gefunden wurde, aber auch wenn es sich um ein stinknormales Exemplar handelt. Kann ich irgendwie abfragen ob mein Part oder Produkt (z.B. CATIA.ActiveDocument..Product.Products.Item(1)) gefunden bzw. geladen wurde oder nicht?
------------------ Es gibt nichts langweiligeres als ein vollständiges, stabil laufendes Catia... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 605 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 26. Mrz. 2006 17:44 <-- editieren / zitieren --> Unities abgeben: Nur für Florian.Held
Hallo, die Antwort auf deine Frage hast du dir im Prinzip schon slbst gegeben: Wenn Parts oder Products nicht gefunden oder geladen wurden (also im Desk schwarz oder rot dargestellt werden) kommst du im Tree nur an die Instance, also das oProduct.Products.Item(n) nicht aber an das zugehörige PartDocument, PartNumber ect. Demnach also wie folgt vorgehen: Sub CATMain() Set oProducts = CATIA.ActiveDocument.Product.Products For n = 1 to oProducts.Count On Error Resume Next Err.Clear sPartNumber = oProducts.Item(n).PartNumber If Err.Number = 0 Then MsgBox oProduct.Products.Item(n).PartNumber & " wurde geladen", 64, "Info" Else MsgBox oProduct.Products.Item(n).Name & " wurde nicht geladen / gefunden", 64, "Info" End if On Error Goto 0 Next End Sub ------------------ tomtom1972 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Florian.Held Mitglied Konstruktiver Spritzer (Konstruktion Spritzguss)
Beiträge: 35 Registriert: 13.07.2005 CATIA R14 SP5 unter WinXP64 und Unix (vbscript)
|
erstellt am: 01. Apr. 2006 15:11 <-- editieren / zitieren --> Unities abgeben:
Hi, erstmal danke für deinen Beitrag. Über eine Lösung mit err.number habe ich auch schon nachgedacht, jedoch hatte ich da bisher so meine Probleme weil die Scripte unter unix und Windows funktionieren müssen. Vielleicht bin ich auch wiederinmal einfach zu blöd dafür weshalb ich mir deinen Code mal in die Firma schicke, es Anfang nächster Woche probiere und mich dann wieder melde. Kurze frage noch: on error resume next ist klar, bei fehler mach weiter aber On Error Goto 0 bewirkt was? Kann es sein dass dies on error resume next wieder aufhebt? ------------------ Es gibt nichts langweiligeres als ein vollständiges, stabil laufendes Catia... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 605 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 02. Apr. 2006 16:53 <-- editieren / zitieren --> Unities abgeben: Nur für Florian.Held
Hi Florian, ganz genau. On Error Resume Next bewirkt, das das Script event. auftretende Fehler ignoriert und in die nächste Zeile springt und dort weiter macht. Mit Hilfe der Err.Number kannst du abfragen, ob ein Fehler aufgetreten ist (Err.Number <> 0) und welcher. On Error Goto 0 deaktiviert sozusagen den On Error Resume Next wieder und stellt die Err.Number auf 0, bei einem Fehler bleibt das Script dann wieder stehen (geht also auf "0", zum Anfang). Weiterhin kannst du Sprungmarken setzten und beim auftreten eines Fehlers in diese Sprungmarke springen und z.B. eine MsgBox aufrufen oder die Err.Number analysieren. Der Befehl ist dann On Error Goto Sprungmarke. Die Sprungmarke ist irgendein String (muss nicht "Sprungmarke" sein) die im Script mit : gekennzeichet wird. Also z.B. Sub CATMain() ..... On Error Goto Irgendwas ..... Exit Sub Irgendwas: Msgbox "Err.Number " & Err.Number & " ist aufgetreten. ", 48, "Error" End Sub Das ganze läuft meines Wissens nach nur unter Windows und (zumindest die Sprungmarke) auch nicht im CATScript. Gruss TomTom ------------------ tomtom1972 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Florian.Held Mitglied Konstruktiver Spritzer (Konstruktion Spritzguss)
Beiträge: 35 Registriert: 13.07.2005 CATIA R14 SP5 unter WinXP64 und Unix (vbscript)
|
erstellt am: 06. Apr. 2006 23:15 <-- editieren / zitieren --> Unities abgeben:
Hihi, richtig, goto funzt nur im Windows. On Error Resume Next und On Error goto 0 läuft auch in VBscript unter Unix. Aber was soll ich sagen, dein Tip war die Lösung meines Problems. Vielen Dank für deine Hilfe, endlich läuft des dumme Makro so wie es soll ;-) Danke nochmal! ------------------ Es gibt nichts langweiligeres als ein vollständiges, stabil laufendes Catia... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|