| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo |
| |
 | SF TECHNICAL , eine App
|
Autor
|
Thema: Name verwenden (2170 / mal gelesen)
|
stefanglass Mitglied Konstrukteur
 
 Beiträge: 440 Registriert: 04.04.2003 Creo 2.0 M250 SUT 2018
|
erstellt am: 20. Mrz. 2019 09:00 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen, ich möchte die Benennung/Nummer/Name (Bsp. Benennung.ams) einer Baugruppe benutzen, um ein Einzelteil zu erzeugen, welches entsprechend Benennung.prt heißt. Das Ganze soll möglichst Userfreundlich und Fehlerunabhängig per Mapkey erfolgen. Mein Ansatz war mittels der Suche (Strg+f) irgendwie voran zu kommen. Leider zeichnet der Mapkey die Zwischenablage (Strg+c) nicht mit auf. Hat jemand einen Ansatz für mich? Dankeschön. Viele Grüße, Stefan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GunnarHansen Mitglied Engineer
  
 Beiträge: 759 Registriert: 16.09.2009
|
erstellt am: 20. Mrz. 2019 09:13 <-- editieren / zitieren --> Unities abgeben:          Nur für stefanglass
|
U_Suess Moderator CAD-Admin / manchmal Konstrukteur
       

 Beiträge: 10696 Registriert: 14.11.2001 CREO 8.0.9 (+Geniustool für Creo 10.0.2) PDMLink 12.0.8 NTSI Contender E64 SC8 mit NVIDIA Quadro P4000 Intel Core i7-10700KF / 3,80 GHz 64GB DDR4-RAM / 2933 MHz Win 10 Prof. 64Bit (20H2)
|
erstellt am: 20. Mrz. 2019 09:34 <-- editieren / zitieren --> Unities abgeben:          Nur für stefanglass
|
stefanglass Mitglied Konstrukteur
 
 Beiträge: 440 Registriert: 04.04.2003 Creo 2.0 M250 SUT 2018
|
erstellt am: 20. Mrz. 2019 11:52 <-- editieren / zitieren --> Unities abgeben:         
Hallo Gunnar, danke für die beiden Links. Damit habe ich meinen Einstiegspunkt. Ich habe das Skript soweit modifiziert, scheitere aber daran, den Cursor um vier Stellen nach links zu schieben, um alles vor der Endung in die Zwischenablage zu nehmen. Any ideas? Hallo Udo, auch Dir danke für den Link. Ich versuche gerade Creo den Inhalt des Mapkeys "verständlich" zu machen. Es landet: "%CIMapkey cpy wird abgespielt..." in der Zwischenablage. Aber es ist auch ein interessanter Ansatz. Danke euch beiden dafür. Grüße, Stefan
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GunnarHansen Mitglied Engineer
  
 Beiträge: 759 Registriert: 16.09.2009
|
erstellt am: 20. Mrz. 2019 13:41 <-- editieren / zitieren --> Unities abgeben:          Nur für stefanglass
Warte mit dem 4 backspace bis nach dem paste? Zeig mal dein vbs. Meiner ist so: WScript.Sleep 50 Dim Fi, Fso Set Shell = CreateObject("WScript.Shell") Set WshShell = WScript.CreateObject("WScript.Shell") Sub sk(Befehl) 'wscript.echo befehl WshShell.SendKeys(Befehl) WScript.Sleep 300 'Zeitangabe in Millisekunden End Sub sk "^a" sk "^s" sk "{TAB 3}" sk "+^{left}" sk "^c" sk "^a" sk "^o" sk "^v" sk "{BS 3}" sk "drw" sk "~" WScript.Quit() Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
stefanglass Mitglied Konstrukteur
 
 Beiträge: 440 Registriert: 04.04.2003 Creo 2.0 M250 SUT 2018
|
erstellt am: 20. Mrz. 2019 13:56 <-- editieren / zitieren --> Unities abgeben:         
Hallo Gunnar, die Lösung war denkbar einfach: sk "{left}" sk "{left}" sk "{left}" sk "{left}" schiebt den Cursor vier Stellen nach links (BTW . das kriegt man bestimmt mit einer Zeile hin). Mein "fertiges Skript": 'Option Explizit WScript.Sleep 200 Dim Fi, Fso Set Shell = CreateObject("WScript.Shell") Set WshShell = WScript.CreateObject("WScript.Shell") Sub sk(Befehl) 'wscript.echo befehl WshShell.SendKeys(Befehl) WScript.Sleep 50 'Zeitangabe in Millisekunden End Sub sk "^s" sk "{TAB 3}" sk "{left}" sk "{left}" sk "{left}" sk "{left}" sk "+^{left}" sk "^c" WScript.Quit() ---------------------- Ein wenig tricky ist es trotzdem, weil die Datei von unterschiedlichen Speicherorten geladen sein kann. Dann unterscheidet sich die Zeile sk "{TAB 3}" . Jetzt würde ich gerne noch einen entweder/oder-Schritt in den Mapkey einbauen. Wie man das macht, ist hier ganz gut beschrieben: https://creomapkeys.wordpress.com/creo-mapkeys/creo-if-then-else-mapkey/ Ich scheitere aber gedanklich daran, dass auf meinen Fall anzuwenden. Gruß, Stefan
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GunnarHansen Mitglied Engineer
  
 Beiträge: 759 Registriert: 16.09.2009
|
erstellt am: 20. Mrz. 2019 14:26 <-- editieren / zitieren --> Unities abgeben:          Nur für stefanglass
|
stefanglass Mitglied Konstrukteur
 
 Beiträge: 440 Registriert: 04.04.2003 Creo 2.0 M250 SUT 2018
|
erstellt am: 20. Mrz. 2019 14:46 <-- editieren / zitieren --> Unities abgeben:         
|
GunnarHansen Mitglied Engineer
  
 Beiträge: 759 Registriert: 16.09.2009
|
erstellt am: 20. Mrz. 2019 19:55 <-- editieren / zitieren --> Unities abgeben:          Nur für stefanglass
Gibt das wirklich einen Unterschied? Kannst du ewt Screenshots davon hochladen? TAB geht "vorwerts" Was wenn du "rückwerts" gehst mit shift+TAB? Geht das besser? Mit gleicher Anzahl? Shift ist hier + Also zB 3 mal TAB rückwerts: sk "+{TAB 3}" mfG Gunnar [Diese Nachricht wurde von GunnarHansen am 20. Mrz. 2019 editiert.] [Diese Nachricht wurde von GunnarHansen am 21. Mrz. 2019 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
stefanglass Mitglied Konstrukteur
 
 Beiträge: 440 Registriert: 04.04.2003 Creo 2.0 M250 SUT 2018
|
erstellt am: 21. Mrz. 2019 10:28 <-- editieren / zitieren --> Unities abgeben:         
Das mit der Verzweigung habe ich anders gelöst. Ich hole mir den Dateinamen aus dem Umbenennen. Hier ist aufgelistet, was&wie mittels vbs angesteuert werden kann: https://social.technet.microsoft.com/wiki/contents/articles/5169.vbscript-sendkeys-method.aspxNoch einmal zum Ursprung zurück. Ich will ein Einzelteil erzeugen, welches den gleichen Dateinamen wie die Baugruppe hat. Leider macht mir hier Creo einen Strich durch die Rechnung, da in der Aufzeichnung des Mapkeys ein "InputPanell" landet. Damit ist der Mapkey dann nicht universell zu benutzen. Mein Ansatz war jetzt, einfach das "OK" bzw. Enter vom Skript mit erledigen zu lassen. Das funktioniert auch, aber es landet trotzdem das InputPanell Mapkey . Kann ich das auch anders lösen? @Udo: wir arbeiten hier mit großen Volumen und großen Baugruppen. Ich habe vor, in meiner "Gesamtbaugruppe" nur mit Einzelteilen statt Unterbaugruppen zu arbeiten. Diese Einzelteile enthalten Schrumpfverpackungen der Unterbaugruppen. Das Ganze dient der Performancesteigerung. Ich weiß, dass es dazu noch andere Methodiken und Software gibt, aber ich versuche erstmal einen Lösungsansatz mit Boardmitteln. Gruß, Stefan
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GunnarHansen Mitglied Engineer
  
 Beiträge: 759 Registriert: 16.09.2009
|
erstellt am: 21. Mrz. 2019 11:04 <-- editieren / zitieren --> Unities abgeben:          Nur für stefanglass
Also neue DRW mit dem selben Namen geht bei mir so: Prt müsste doch ähnlich gehen? Edit: Default nach sk "^n"'NEW müsste eigentlich PRT sein. Müsste einfach sein??? Aber ausprbieren. WScript.Sleep 50 Dim Fi, Fso Set Shell = CreateObject("WScript.Shell") Set WshShell = WScript.CreateObject("WScript.Shell") Sub sk(Befehl) 'wscript.echo befehl WshShell.SendKeys(Befehl) WScript.Sleep 300 'Zeitangabe in Millisekunden End Sub sk "^a"'Ctrl+a=activate window sk "^s"'save sk "{TAB 3}"'TAB to Model Name field sk "+^{left}"'shift+ctrl+left picks all Model Name sk "^c"'copy Name sk "^a"'activate sk "^n"'NEW sk "{TAB 3}"'go 1 step to Type: Drawing sk "{down}"'go 1 step to Type: Drawing sk "{TAB 3}"'go 1 step Type: Drawing sk "{down}"'go 1 step to Type: Drawing sk "{TAB 3}"'go 1 step to Type: Drawing sk "{down}"'go 1 step to Type: Drawing sk "^v"'paste sk "{BS 4}"'Backspacex4 to remove .prt sk "~"'ENTER 'sk "{TAB}" 'sk "{down}" 'sk "{TAB 2}" 'sk "{ }" WScript.Quit()
Like so:
sk "^a"'Ctrl+a=activate window sk "^s"'save sk "{TAB 3}"'TAB to Model Name field sk "+^{left}"'shift+ctrl+left picks all Model Name sk "^c"'copy Name sk "^a"'activate sk "^n"'NEW sk "^v"'paste sk "{BS 4}"'Backspacex4 to remove .prt/asm sk "~"'ENTER [Diese Nachricht wurde von GunnarHansen am 21. Mrz. 2019 editiert.] [Diese Nachricht wurde von GunnarHansen am 21. Mrz. 2019 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
stefanglass Mitglied Konstrukteur
 
 Beiträge: 440 Registriert: 04.04.2003 Creo 2.0 M250 SUT 2018
|
erstellt am: 21. Mrz. 2019 11:17 <-- editieren / zitieren --> Unities abgeben:         
Hallo Gunnar, dein Script funktioniert grundsätzlich. Ich will aber bei der Komponentenerzeugung (siehe screen) den identischen Namen verwenden. Hier hole ich mir den Namen aus der Zwischenablage. Das Problem ist, dass im Mapkey dann ein "InputPanell" landet. Somit ist dieser nicht universell. Gruß, Stefan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GunnarHansen Mitglied Engineer
  
 Beiträge: 759 Registriert: 16.09.2009
|
erstellt am: 21. Mrz. 2019 11:24 <-- editieren / zitieren --> Unities abgeben:          Nur für stefanglass
Müsste mit dem paste im script kommen? Ich verstehe nicht ganz .... sk "^n"'NEW sk "^v"'paste sk "{BS 4}"'Backspacex4 to remove .prt/asm sk "~"'ENTER In config.pro sieht der Mapkey aus wie folgt (nd.vbs ist das Script):
!Create new drawing with same name as active prt/asm: mapkey nd @MAPKEY_LABEL Retrieve drawing from prt/asm with same name;\ mapkey(continued) ~ Command `ProCmdWinActivate` ;~ Command `ProCmdModelSave` ;\ mapkey(continued) ~ Command `ProCmdWinActivate`;\ mapkey(continued) @SYSTEM\start WScript.exe C:\\temp\\vbs-scripts\\nd.vbs Das heisst ALLES leuft per Script in diesem Mapkey ... [Diese Nachricht wurde von GunnarHansen am 21. Mrz. 2019 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GunnarHansen Mitglied Engineer
  
 Beiträge: 759 Registriert: 16.09.2009 Creo Parametric 11.0.2.0 Creo View 11.1 Windchill 13.0.2.1 Google Chrome Lenovo Thinkpad P15 3DConnexion Wireless SpaceMouse
|
erstellt am: 21. Mrz. 2019 11:48 <-- editieren / zitieren --> Unities abgeben:          Nur für stefanglass
Um zum Rename mit Script zu kommen könnte man so vorgehen (nicht ausprobiert) sk "{ALT}" Knopf neben Space (Um Menus mit buchstaben zu aktivieren) sk "F" (File) sk "F" (Manage File) sk "R" (Rename) usw [Diese Nachricht wurde von GunnarHansen am 21. Mrz. 2019 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
stefanglass Mitglied Konstrukteur
 
 Beiträge: 440 Registriert: 04.04.2003 Creo 2.0 M250 SUT 2018
|
erstellt am: 21. Mrz. 2019 11:55 <-- editieren / zitieren --> Unities abgeben:         
Du bist hartnäckig Den Rename nutze ich ja um den Dateinamen in die Zwischenablage zu bekommen: sk "%f" sk "%f" sk "%r" (jetzt ist man im Menü Umbenennen) sk "^c" sk "^a" % ist dabei die Alt-Taste (siehe Microsoft-Link oben). Das Problem scheint zu sein, dass das Komponente Erzeugen auf einer anderen "Ebene" liegt. In diesem Menü kommt man mit Alt+ irgendwas nicht weiter. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GunnarHansen Mitglied Engineer
  
 Beiträge: 759 Registriert: 16.09.2009
|
erstellt am: 21. Mrz. 2019 12:01 <-- editieren / zitieren --> Unities abgeben:          Nur für stefanglass
Du musst einfach nach dem Kopieren mit {TAB 2} auf cancel gehen? Und ENTER? usw Like so: WScript.Sleep 50
Dim Fi, Fso Set Shell = CreateObject("WScript.Shell") Set WshShell = WScript.CreateObject("WScript.Shell") Sub sk(Befehl) 'wscript.echo befehl WshShell.SendKeys(Befehl) WScript.Sleep 700 'Zeitangabe in Millisekunden End Sub sk "%f"'File sk "%f"' Manage File sk "%r"' Rename sk "^c" sk "{tab 2}"’go to cancel sk "~"'ENTER cancel sk "^n"'NEW prt default sk "^v"'paste same name sk "~"'ENTER WScript.Quit()
[Diese Nachricht wurde von GunnarHansen am 21. Mrz. 2019 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DonChunior Mitglied CAD-Systemadministrator
   
 Beiträge: 1157 Registriert: 09.09.2004 Creo Parametric 10.0.6.0 Windchill 12.1.2.13 Windows 10 Enterprise
|
erstellt am: 21. Mrz. 2019 12:05 <-- editieren / zitieren --> Unities abgeben:          Nur für stefanglass
Zitat: Original erstellt von stefanglass: Hallo Udo,auch Dir danke für den Link. Ich versuche gerade Creo den Inhalt des Mapkeys "verständlich" zu machen. Es landet: "%CIMapkey cpy wird abgespielt..." in der Zwischenablage. Aber es ist auch ein interessanter Ansatz. Danke euch beiden dafür. Grüße, Stefan
Dann hast du wahrscheinlich vor der Ausführung des Mapkey's vergessen, im Modellbaum ein Element anzuklicken. ------------------ MfG, DonChunior BOINC - Rechenleistung spenden Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
stefanglass Mitglied Konstrukteur
 
 Beiträge: 440 Registriert: 04.04.2003 Creo 2.0 M250 SUT 2018
|
erstellt am: 21. Mrz. 2019 14:58 <-- editieren / zitieren --> Unities abgeben:         
Hmm... Ich habe die Pfade so wie auf der Beschreibungsseite übernommen: E.g. "C:\temp\CopyModelTreeElementNameToClipboard.exe" "C:\temp\TrailDir" Und an den Orten liegt die exe und auch die trail.txt Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DonChunior Mitglied CAD-Systemadministrator
   
 Beiträge: 1157 Registriert: 09.09.2004 Creo Parametric 10.0.6.0 Windchill 12.1.2.13 Windows 10 Enterprise
|
erstellt am: 21. Mrz. 2019 15:20 <-- editieren / zitieren --> Unities abgeben:          Nur für stefanglass
Zitat: Original erstellt von stefanglass: Hmm...Ich habe die Pfade so wie auf der Beschreibungsseite übernommen: E.g. "C:\temp\CopyModelTreeElementNameToClipboard.exe" "C:\temp\TrailDir" Und an den Orten liegt die exe und auch die trail.txt
Mag sein, aber hast du das Tool auch richtig ausgeführt?
- Im Modellbaum eine Komponente anklicken.
- Mapkey ausführen.
- Wo nötig, den Inhalt der Zwischenablage hinkopieren.
------------------ MfG, DonChunior BOINC - Rechenleistung spenden Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GunnarHansen Mitglied Engineer
  
 Beiträge: 759 Registriert: 16.09.2009
|
erstellt am: 09. Apr. 2019 09:32 <-- editieren / zitieren --> Unities abgeben:          Nur für stefanglass
Wie ging es? Sehe gerade, das ein Paar % zu viel da waren. So müsste es gehen: Die 700 ms können reduziert werden WScript.Sleep 50
Dim Fi, Fso Set Shell = CreateObject("WScript.Shell") Set WshShell = WScript.CreateObject("WScript.Shell") Sub sk(Befehl) 'wscript.echo befehl WshShell.SendKeys(Befehl) WScript.Sleep 700 'Zeitangabe in Millisekunden End Sub sk "^a" sk "%f"'ALT botton + File sk "f"' Manage File sk "r"' Rename sk "^c"' Copy sk "{tab 2}"’go to cancel sk "~"'ENTER cancel sk "^n"'NEW prt default sk "^v"'paste name from clipholder sk "~"'ENTER WScript.Quit()
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |