Autor
|
Thema: Part-makro Schritte durch Produkt fuehren (2098 mal gelesen)
|
Sylas Mitglied
Beiträge: 322 Registriert: 19.11.2012 Dell Precision T3500 Intel Xeon W3550 @ 3,07 GHz 12 GB RAM CATIA V5 R28
|
erstellt am: 19. Nov. 2012 13:23 <-- editieren / zitieren --> Unities abgeben:
Halo Zusammen! Als erstes - Ich wollte alle Leute grüßen. Ich bin hier erstes Mal als Beitragersteller. Fruher Ich habe nur gelesen, aber jetzt habe ich leider keine Antwort gefunden. Sorry fuer meinen Deutsch - Ich habe lang nicht genutzt, und das ist keine Muttersprache fuer mich (ich bin aus Polen) Wg mein Problem: Ich habe einfache Makro geschreiben, welches geht durch ganzes produkt, und änderns par Parameters. Das Problem ist, das ich darf das Parameter Datum nur unter die spezifische ParameterSet Aenderung aendern - und nur dort. Ich habe keine Ahnung, wie... Ich habe das as mit Sublist versuchen, aber ich habe etwas falsch gemacht. Kann jemand mir zeigen, wie soll Ich das geschrieben? Anbei das Makro. Am besten were, wenn das Makro wird als CATScipt laufen - aber kann auch als VBScript oder irgendwie.... Code: Sub CATMain() Dim iSet productDocument1 = CATIA.ActiveDocument Set selection1 = productDocument1.Selection selection1.Clear selection1.Search "Name=Beschriftung,all"
Set product1 = productDocument1.Product Set product1 = product1.ReferenceProduct Dim oParameter For i = 1 To selection1.Count Set oParameter = selection1.Item(i).Value oParameter.Value = "xxx"
Next '-----------------------------------
selection1.Clear
selection1.Search "Name=Leiter,all" For i = 1 To selection1.Count Set oParameter = selection1.Item(i).Value oParameter.Value = "xxx"
Next
'-----------------------------------
selection1.Clear
selection1.Search "Name=Datum,all"
For i = 1 To selection1.Count i = i+1
Set oParameter = selection1.Item(i).Value oParameter.Value = "xx.xx.xx"
Next '----------------------------------- selection1.Clear
selection1.Search "Name=Projekt,all"
For i = 1 To selection1.Count Set oParameter = selection1.Item(i).Value oParameter.Value = "vvv"
Next '----------------------------------- selection1.Clear
selection1.Search "Name=Operation,all" For i = 1 To selection1.Count
Set oParameter = selection1.Item(i).Value oParameter.Value = "wwwww"
Next '----------------------------------- selection1.Clear
selection1.Search "Name=Beschriftung_BG,all"
For i = 1 To selection1.Count Set oParameter = selection1.Item(i).Value oParameter.Value = "123123123"
Next
'-------und Soweit--------- End Sub
[Diese Nachricht wurde von Sylas am 19. Nov. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 19. Nov. 2012 13:42 <-- editieren / zitieren --> Unities abgeben: Nur für Sylas
Servus Willkommen im Forum. Bitte Systeminfo ausfüllen. Ohne es getestet zu haben, könntest du den Parent des Elements vor dem Ändern prüfen zB: Code: if oParameter.Parent.name = "Aenderung" then oParameter.Value = "xx.xx.xxx" end if
Gruß Bernd------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sylas Mitglied
Beiträge: 322 Registriert: 19.11.2012 Dell Precision T3500 Intel Xeon W3550 @ 3,07 GHz 12 GB RAM CATIA V5 R28
|
erstellt am: 19. Nov. 2012 14:13 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von bgrittmann: Servus Willkommen im Forum. Bitte Systeminfo ausfüllen. Ohne es getestet zu haben, könntest du den Parent des Elements vor dem Ändern prüfen zB:Code: if oParameter.Parent.name = "Aenderung" then oParameter.Value = "xx.xx.xxx" end if
Gruß Bernd
Vielen Dank fuer richtig schnelle Antwort! Zwei noch Fragen: 1. Was soll ich zugeben, wenn ich wollte das Parameter Datum im jedem ParameterSet aendern, welches hat Name Aenderung_*wo * ist ein Variable? Also I mochte das Datum aendern in jedem ParameterSet welche heisst z.B. Aenderung_1, Aenderung_2, Aenderung_10 u.s.w... 2. Wie kann ich den ParameterSet umbennenen?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 19. Nov. 2012 15:46 <-- editieren / zitieren --> Unities abgeben: Nur für Sylas
Servus Zu 1: Du könntest nur die ersten paar Zeichen des Namen auswerten: zB ... if left(oParameter.Parent.name, 9) = "Aenderung" then ... Zu 2. : siehe hier Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sylas Mitglied
Beiträge: 322 Registriert: 19.11.2012 Dell Precision T3500 Intel Xeon W3550 @ 3,07 GHz 12 GB RAM CATIA V5 R28
|
erstellt am: 19. Nov. 2012 15:58 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von bgrittmann: ServusZu 1: Du könntest nur die ersten paar Zeichen des Namen auswerten: zB [i]... if left(oParameter.Parent.name, 9) = "Aenderung" then ... [/i]
Es tut mir leid, aber das funktioniert nicht. Meinen Parameter Set heisst "Aenderung_4" aber das Makro wechselst das Parameter "Datum" Wert nicht Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 19. Nov. 2012 16:23 <-- editieren / zitieren --> Unities abgeben: Nur für Sylas
|
Sylas Mitglied
Beiträge: 322 Registriert: 19.11.2012 Dell Precision T3500 Intel Xeon W3550 @ 3,07 GHz 12 GB RAM CATIA V5 R28
|
erstellt am: 19. Nov. 2012 22:49 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von bgrittmann: Servus lass dir mal zu Fehlersuche den Name des ParameterSets und der ersten 9 Zeichen in einer Messagebox ausgeben.Gruß Bernd
Servus Bernd Kannst du mir das weiter erklaeren? Was soll ich jetzt machen? Ich verstehe das ich kann machen folgenes:
Code:
selection1.Clearselection1.Search "Name=Datum,all" For i = 1 To selection1.Count Set oParameter = selection1.Item(i).Value name = left(oParameter.Parent.Name,10) if name = "Aenderung_" then oParameter.Value = "xx.xx.xx" end if Next
Habe ich das richtig geschreiben? Was soll ich mit dem MsgBox machen dann? Was was meinst du mit "Fehlersuche"? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 19. Nov. 2012 23:18 <-- editieren / zitieren --> Unities abgeben: Nur für Sylas
Servus Mein Vorschlag war, dass du durch zB MsgBox oParameter.Parent.Name dir den Namen ausgeben lässt. Leider wird dabei nicht das Parameterset zurückgeliefert, sondern die gesamte Parametercollection (siehe auch Watch-Fenster im VBA-Editor). ggf könnt es so funktionieren: Code: selection1.Search "(Name=Datum & CATKnowledgeSearch.InternalParameter),all"For I = 1 To selection1.Count Set oParameter = selection1.Item2(I).Value If InStr(oParameter.Name, "Test") <> 0 Then oParameter.Value = "xx.xx.xxxx" End If Next
Dabei wird im Name des Parameters (der auch den Namen des Parameterset enthält) nach dem Namen des Parametersets gesucht.Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sylas Mitglied
Beiträge: 322 Registriert: 19.11.2012 Dell Precision T3500 Intel Xeon W3550 @ 3,07 GHz 12 GB RAM CATIA V5 R28
|
erstellt am: 20. Nov. 2012 08:48 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von bgrittmann: Servus lass dir mal zu Fehlersuche den Name des ParameterSets und der ersten 9 Zeichen in einer Messagebox ausgeben.Gruß Bernd
Also MsgBox hat mir der Name Parameters gegeben. Was bedeutet das? [Diese Nachricht wurde von Sylas am 20. Nov. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 20. Nov. 2012 13:03 <-- editieren / zitieren --> Unities abgeben: Nur für Sylas
Servus Dass du über oParameter.Parent nicht zum darüber geordneten ParameterSet kommst (siehe auch Watch-Fenster im VBA-Editor) und du dir einen andern Weg überlegen muss (siehe auch meinen letzten Vorschlag). Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sylas Mitglied
Beiträge: 322 Registriert: 19.11.2012 Dell Precision T3500 Intel Xeon W3550 @ 3,07 GHz 12 GB RAM CATIA V5 R28
|
erstellt am: 20. Nov. 2012 14:15 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von bgrittmann: Servus Dass du über oParameter.Parent nicht zum darüber geordneten ParameterSet kommst (siehe auch Watch-Fenster im VBA-Editor) und du dir einen andern Weg überlegen muss (siehe auch meinen letzten Vorschlag).Gruß Bernd
Servus Bernd Also ich habe das auch probiert... vielleicht Ich mache irgendwas Falsch. Ich habe das Code einfach 1:1 kopiert -> ist das der Weg? Was soll ich genau in dem Code schreiben? P.S. Ich kann hier nur CATSCript schreiben. Ich habe keine Moeglichkeit zu pruefen ob das unter VBA lauft. Also an Watch-Fenster kann ich auch nicht gucken.
[Diese Nachricht wurde von Sylas am 20. Nov. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 20. Nov. 2012 17:47 <-- editieren / zitieren --> Unities abgeben: Nur für Sylas
Servus Stimmen auch die beiden Suchstrings (für den Parameter und das ParameterSet)? Ich hatte mir eine Testbaugruppe mit anderen Parametern aufgebaut. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sylas Mitglied
Beiträge: 322 Registriert: 19.11.2012 Dell Precision T3500 Intel Xeon W3550 @ 3,07 GHz 12 GB RAM CATIA V5 R28
|
erstellt am: 20. Nov. 2012 23:17 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von bgrittmann: Servus Stimmen auch die beiden Suchstrings (für den Parameter und das ParameterSet)? Ich hatte mir eine Testbaugruppe mit anderen Parametern aufgebaut.Gruß Bernd
Servus Alles funktioniert gut, aber... die Name oParameter.name gibt mir Part1\Aenderung_4\Datum also gantztes Pfad und ich moechte nur Datum haben. Gibt es moeglichkeit zu extrahieren paar Zeichen aus der String? Ich habe versucht mit Left Funktion aber leider ich kann nicht schneiden Datum aus. Also ich moechte nur das was zwischen \ \ steht haben. EDIT: Jetzt habe ich bemerkt, das inStrg gibt mir was ich will - viellen dank fuer deine Hilfe.
[Diese Nachricht wurde von Sylas am 20. Nov. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sylas Mitglied
Beiträge: 322 Registriert: 19.11.2012 Dell Precision T3500 Intel Xeon W3550 @ 3,07 GHz 12 GB RAM CATIA V5 R28
|
erstellt am: 21. Nov. 2012 09:33 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd Kannst du mir noch paar Sachen erklaeren? Ich habe viel ParameterSets heissen: Aenderung_1 Aenderung_2 ... Aenderung_10 Ich mochte alle diese ParameterSets loechen, aussen ersten, welches muss umbennant sein Aenderung_x... Zweite Frage: wie kann Mann ein ParameterSet hinzufuegen? [Diese Nachricht wurde von Sylas am 21. Nov. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 22. Nov. 2012 09:21 <-- editieren / zitieren --> Unities abgeben: Nur für Sylas
Servus Du könntest alle ParameterSets suchen (Makrorekorder) lassen (Name = Aenderung_*). Das erste Element umbenennen, und aus der Selektion entfernen (siehe "selection remove") und den Rest löschen (siehe "selection delete"). Parameterset anlegen siehe "CreateSet" in Doku und Forensuche. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sylas Mitglied
Beiträge: 322 Registriert: 19.11.2012 Dell Precision T3500 Intel Xeon W3550 @ 3,07 GHz 12 GB RAM CATIA V5 R28
|
erstellt am: 22. Nov. 2012 10:41 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von bgrittmann: Servus Du könntest alle ParameterSets suchen (Makrorekorder) lassen (Name = Aenderung_*). Das erste Element umbenennen, und aus der Selektion entfernen (siehe "selection remove") und den Rest löschen (siehe "selection delete"). Parameterset anlegen siehe "CreateSet" in Doku und Forensuche.Gruß Bernd
Ich gruße dich, Bernd Viellen Dank. Der letzte Frage (ich vermute - Mann nie weißt ;) ) - wie kann ich ein Selection umbennen - so(?): Code:
selection1.item(1).name = "Aenderung_x"
oder ändere Methode (.DisplayName?) Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 22. Nov. 2012 10:44 <-- editieren / zitieren --> Unities abgeben: Nur für Sylas
|
Sylas Mitglied
Beiträge: 322 Registriert: 19.11.2012 Dell Precision T3500 Intel Xeon W3550 @ 3,07 GHz 12 GB RAM CATIA V5 R28
|
erstellt am: 22. Nov. 2012 11:14 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von bgrittmann: Servus Probiere es doch einfach. (die Suche spuckt mir folgendes aus)Gruß Bernd
Dass Problem ist, das die ich weiß nicht genau wie ersten ParameterSet heißt - das kann unterschiedlich sein. Ich weiß nicht wie soll ich die ParameterSet zuerst selektieren: selection1.clear selection1.Search "(Name=Aenderung_* & CATKnowledgeSearch.AdvisorParameterSet),all" set target = selection1.Item(1).value target.displayname = "Aenderung_x" aber dass funktioniert nicht
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 22. Nov. 2012 12:54 <-- editieren / zitieren --> Unities abgeben: Nur für Sylas
|
Sylas Mitglied
Beiträge: 322 Registriert: 19.11.2012 Dell Precision T3500 Intel Xeon W3550 @ 3,07 GHz 12 GB RAM CATIA V5 R28
|
erstellt am: 22. Nov. 2012 14:07 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von bgrittmann: Servus Hast du nicht etwas mit ".GetItem("ModelElement")" vergessen (siehe andern Beitrag)Gruß Bernd
OK - muss Ich genau "ModelElement" schreiben, oder was? Ich habe keine Ahnung mehr
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sylas Mitglied
Beiträge: 322 Registriert: 19.11.2012 Dell Precision T3500 Intel Xeon W3550 @ 3,07 GHz 12 GB RAM CATIA V5 R28
|
erstellt am: 26. Nov. 2012 20:39 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von bgrittmann: Servus Du könntest alle ParameterSets suchen (Makrorekorder) lassen (Name = Aenderung_*). Das erste Element umbenennen, und aus der Selektion entfernen (siehe "selection remove") und den Rest löschen (siehe "selection delete"). Parameterset anlegen siehe "CreateSet" in Doku und Forensuche.Gruß Bernd
Servus Das Problem ist, dass mit diese Methode ich kann nur die ersten Okkurrenz vom Aenderung_* umbenennen, also nur im erstem Part! Und was mit ändere Parts? Noch Mal - Ich muss alle ParameterSets mit Name Aenderung_* lesen. Das erste Element umbenennen, und den Rest löschen, aber für jedes Part - also ich muss die Schritte wiederholen. Die große Frage ist WIE? Ich bin schön verruckt Gruß Lukas
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |