Siemens Digital Industries Software
Where today meets tomorrow.
Wiederverwendungsbibliotheken
21.04.2020, 14:23 Uhr
Hallo...
ich bastel gerade an den Reuse-Libraries und bin ein wenig verwundert.
Habe da auch lange schon gegoogelt und komm da auf keinen Grünen Zweig.
Wir arbeiten lokal z.B. auf Laufwerk D:\Auftrag_aktuell\blabla\BG.prt
die Wiederverwendungsbibliothek liegt auf dem Server z.B. auf M:\Normteile_NX\
Wenn ich nun lokal auf Laufwerk D: meine Baugruppe zusammenzimmer und speichere, liegen die Baugruppe und die konstruierten Komponenten dort, und die Teile aus der Library ja auf dem Server. So weit, so gut.
Die Ladeoptionen stehen bei uns normalerweise auf "Aus Ordner", da die Teile später auf dem Server gelagert werden.
Oft auch unterschiedliche Variationen und Evolutionsstufen. Egal ob ich V1.1 oder V2.4 von einem Bauteil öffne, im jeweiligen Projektordner ist alles abgelegt und wird gefunden.
Mit der Wiederverwendungsbibliothek wird das nun etwas schwieriger.
Denn bei Ladeoption "Aus Ordner" findet er die Familienteile ja nicht.
Die Option "Aus Suchordner", wo ich das Familienverzeichnis ja als Standard hinterlegen kann, findet er dann die Familienteile, jedoch nicht die konstruierten Komponenten aus dem Projektverzeichnis. Wenn ich hier noch die Serverstruktur anwählen würde, würde er aber alle Bauteile aus den verschiedenen Evolutionsstufen finden, und da diese nicht unbedingt unterschiedlich heissen, kann das auch zum Chaos werden.
Ladeoption "Wie gespeichert" ist auch nicht zielführend, da hier der absolute Pfad hinterlegt wird, wo die BG-Komponenten sind.
Und wenn ich von D: woanders hinkopiere ist die Baugruppe wieder futsch.
Ich frage mich wie andere das machen?
ich bastel gerade an den Reuse-Libraries und bin ein wenig verwundert.
Habe da auch lange schon gegoogelt und komm da auf keinen Grünen Zweig.
Wir arbeiten lokal z.B. auf Laufwerk D:\Auftrag_aktuell\blabla\BG.prt
die Wiederverwendungsbibliothek liegt auf dem Server z.B. auf M:\Normteile_NX\
Wenn ich nun lokal auf Laufwerk D: meine Baugruppe zusammenzimmer und speichere, liegen die Baugruppe und die konstruierten Komponenten dort, und die Teile aus der Library ja auf dem Server. So weit, so gut.
Die Ladeoptionen stehen bei uns normalerweise auf "Aus Ordner", da die Teile später auf dem Server gelagert werden.
Oft auch unterschiedliche Variationen und Evolutionsstufen. Egal ob ich V1.1 oder V2.4 von einem Bauteil öffne, im jeweiligen Projektordner ist alles abgelegt und wird gefunden.
Mit der Wiederverwendungsbibliothek wird das nun etwas schwieriger.
Denn bei Ladeoption "Aus Ordner" findet er die Familienteile ja nicht.
Die Option "Aus Suchordner", wo ich das Familienverzeichnis ja als Standard hinterlegen kann, findet er dann die Familienteile, jedoch nicht die konstruierten Komponenten aus dem Projektverzeichnis. Wenn ich hier noch die Serverstruktur anwählen würde, würde er aber alle Bauteile aus den verschiedenen Evolutionsstufen finden, und da diese nicht unbedingt unterschiedlich heissen, kann das auch zum Chaos werden.
Ladeoption "Wie gespeichert" ist auch nicht zielführend, da hier der absolute Pfad hinterlegt wird, wo die BG-Komponenten sind.
Und wenn ich von D: woanders hinkopiere ist die Baugruppe wieder futsch.
Ich frage mich wie andere das machen?
23.04.2020, 07:39 Uhr
Ich antworte mir jetzt einfach mal selbst, da ich zu absolut keiner Out-of-the-box-Lösung gekommen bin.
Ich hab nun meine Wiederverwendungsbibliothek gebastelt, und ein bisschen gescriptet.
Es widerspricht dem Grundgedanken der Wiederverwendungsbibliothek, alles nur einmal an einem zentralen Ort gespeichert zu haben.
Jedoch ging es mir hauptsächlich um die komfortable Auswahl der Komponenten beim Verbauen in die BG.
Also zwei scripte gebastelt;
Einmal meine copyfamily.vb
und einmal eine clearfamilytemp.vb:
Und dann hab ich noch mein Save-Menü modified:
Was passiert nun?
Ich bastel meine BG zusammen und verbaue meine Elemente.
Beim Speichern
- wird nun erstmal vor dem eigentlichen Speichern (ACTIONS/PRE) der temp-Ordner leergemacht (falls noch irgendwas drin sein sollte aus einem alten Projekt).
- dann speichert NX das ganze Zeug ab, und die Familienkinder in den festen Temp-Ordner
- und nach dem eigentlichen Speichern (ACRIONS/POST) wird der Temp-Ordner in den Ordner der BG kopiert.
Warum ein fester Temp-Ordner? Da habe ich nun 2 Tage rumgespielt, weil ich eigentlich eine Systemvariable nutzen wollte.
Da NX diese aber nur beim Start einliest, und während der Laufzeit nicht aktualisiert, nützt es nix beim Öffnen-Dialog den Pfad der prt auszulesen und dann erst zu haben.
Deswegen alles in den Speicher-Dialog gepackt und mehr oder weniger "zu Fuß" das ganze gebastelt.
Somit bleiben meine Ladeoptionen immer auf "Aus Ordner" und ich hab mein Projekt immer mit allen Komponenten in einem Ordner.
Muss ich jetzt noch ein ausgiebiger testen, aber scheint für meine Anforderungen sehr gut zu funktionieren!
Der Beitrag wurde von Lost-Form bearbeitet: 23.04.2020, 07:44 Uhr
Ich hab nun meine Wiederverwendungsbibliothek gebastelt, und ein bisschen gescriptet.
Es widerspricht dem Grundgedanken der Wiederverwendungsbibliothek, alles nur einmal an einem zentralen Ort gespeichert zu haben.
Jedoch ging es mir hauptsächlich um die komfortable Auswahl der Komponenten beim Verbauen in die BG.
Also zwei scripte gebastelt;
Einmal meine copyfamily.vb
CODE
Option Strict Off
Imports System
Imports NXOpen
Module NXJournal
Sub Main (ByVal args() As String)
Dim theSession As Session = Session.GetSession()
Dim workPart As Part = theSession.Parts.Work
Dim displayPart As Part = theSession.Parts.Display
'prt-Pfad komplett ausgeben. z.B. "D:\Auftrag_aktuell\Projekt\Teil.prt"
Dim FullCurrentPath As String = displayPart.fullpath
'in den string "path" packen
Dim path As String = displayPart.fullpath
'in den string "pathwofile" als array an jedem "\" splitten
Dim pathwofile() As String = path.Split(CChar("\"))
'das letzte Element (Dateiname) im array löschen ("\Teil.prt")
Redim Preserve pathwofile (Ubound(pathwofile) - 1)
'als string "familypath" wieder zusammenbauen
Dim familypath as String = String.Join("\",pathwofile)
familypath = familypath & "\"
Threading.Thread.CurrentThread.Sleep(1000)
'Familyparts aus P:\temp\Familyparts\ auslesen und ins aktuelle BG-Verzeichnis kopieren
For Each foundFile As String In My.Computer.FileSystem.GetFiles("P:\temp\Familyparts\",Microsoft.VisualBasic.FileIO.SearchOption.SearchTopLevelOnly, "*.prt")
My.Computer.FileSystem.CopyFile(foundFile, familypath & My.Computer.FileSystem.GetName(foundFile), overwrite:=True)
Next
Threading.Thread.CurrentThread.Sleep(1000)
'Ordner P:\temp\Familyparts\ leeren
For Each foundFile As String In My.Computer.FileSystem.GetFiles("P:\temp\Familyparts\",Microsoft.VisualBasic.FileIO.SearchOption.SearchTopLevelOnly, "*.prt")
My.Computer.FileSystem.DeleteFile(foundFile)
Next
End Sub
End Module
Imports System
Imports NXOpen
Module NXJournal
Sub Main (ByVal args() As String)
Dim theSession As Session = Session.GetSession()
Dim workPart As Part = theSession.Parts.Work
Dim displayPart As Part = theSession.Parts.Display
'prt-Pfad komplett ausgeben. z.B. "D:\Auftrag_aktuell\Projekt\Teil.prt"
Dim FullCurrentPath As String = displayPart.fullpath
'in den string "path" packen
Dim path As String = displayPart.fullpath
'in den string "pathwofile" als array an jedem "\" splitten
Dim pathwofile() As String = path.Split(CChar("\"))
'das letzte Element (Dateiname) im array löschen ("\Teil.prt")
Redim Preserve pathwofile (Ubound(pathwofile) - 1)
'als string "familypath" wieder zusammenbauen
Dim familypath as String = String.Join("\",pathwofile)
familypath = familypath & "\"
Threading.Thread.CurrentThread.Sleep(1000)
'Familyparts aus P:\temp\Familyparts\ auslesen und ins aktuelle BG-Verzeichnis kopieren
For Each foundFile As String In My.Computer.FileSystem.GetFiles("P:\temp\Familyparts\",Microsoft.VisualBasic.FileIO.SearchOption.SearchTopLevelOnly, "*.prt")
My.Computer.FileSystem.CopyFile(foundFile, familypath & My.Computer.FileSystem.GetName(foundFile), overwrite:=True)
Next
Threading.Thread.CurrentThread.Sleep(1000)
'Ordner P:\temp\Familyparts\ leeren
For Each foundFile As String In My.Computer.FileSystem.GetFiles("P:\temp\Familyparts\",Microsoft.VisualBasic.FileIO.SearchOption.SearchTopLevelOnly, "*.prt")
My.Computer.FileSystem.DeleteFile(foundFile)
Next
End Sub
End Module
und einmal eine clearfamilytemp.vb:
CODE
Option Strict Off
Imports System
Imports NXOpen
Module NXJournal
Sub Main (ByVal args() As String)
Dim theSession As Session = Session.GetSession()
Dim workPart As Part = theSession.Parts.Work
'Ordner P:\temp\Familyparts\ leeren
For Each foundFile As String In My.Computer.FileSystem.GetFiles("P:\temp\Familyparts\",Microsoft.VisualBasic.FileIO.SearchOption.SearchTopLevelOnly, "*.prt")
My.Computer.FileSystem.DeleteFile(foundFile)
Next
End Sub
End Module
Imports System
Imports NXOpen
Module NXJournal
Sub Main (ByVal args() As String)
Dim theSession As Session = Session.GetSession()
Dim workPart As Part = theSession.Parts.Work
'Ordner P:\temp\Familyparts\ leeren
For Each foundFile As String In My.Computer.FileSystem.GetFiles("P:\temp\Familyparts\",Microsoft.VisualBasic.FileIO.SearchOption.SearchTopLevelOnly, "*.prt")
My.Computer.FileSystem.DeleteFile(foundFile)
Next
End Sub
End Module
Und dann hab ich noch mein Save-Menü modified:
CODE
! Add custom menu items or customizations
! Revised: 20 Feb 2004
! Note: Actions lines are 132 chars max.
!
VERSION 120
EDIT UG_GATEWAY_MAIN_MENUBAR
MODIFY
BUTTON UG_FILE_SAVE_PART
ACTIONS/PRE P:\UG_custom\scripts\clearfamilytemp.vb
ACTIONS/POST P:\UG_custom\scripts\copyfamily.vb
BUTTON UG_FILE_SAVE_WORK_ONLY
ACTIONS/PRE P:\UG_custom\scripts\clearfamilytemp.vb
ACTIONS/POST P:\UG_custom\scripts\copyfamily.vb
BUTTON UG_FILE_SAVE_ALL
ACTIONS/PRE P:\UG_custom\scripts\clearfamilytemp.vb
ACTIONS/POST P:\UG_custom\scripts\copyfamily.vb
BUTTON UG_FILE_SAVE_AS
ACTIONS/PRE P:\UG_custom\scripts\clearfamilytemp.vb
ACTIONS/POST P:\UG_custom\scripts\copyfamily.vb
END_OF_MODIFY
! Revised: 20 Feb 2004
! Note: Actions lines are 132 chars max.
!
VERSION 120
EDIT UG_GATEWAY_MAIN_MENUBAR
MODIFY
BUTTON UG_FILE_SAVE_PART
ACTIONS/PRE P:\UG_custom\scripts\clearfamilytemp.vb
ACTIONS/POST P:\UG_custom\scripts\copyfamily.vb
BUTTON UG_FILE_SAVE_WORK_ONLY
ACTIONS/PRE P:\UG_custom\scripts\clearfamilytemp.vb
ACTIONS/POST P:\UG_custom\scripts\copyfamily.vb
BUTTON UG_FILE_SAVE_ALL
ACTIONS/PRE P:\UG_custom\scripts\clearfamilytemp.vb
ACTIONS/POST P:\UG_custom\scripts\copyfamily.vb
BUTTON UG_FILE_SAVE_AS
ACTIONS/PRE P:\UG_custom\scripts\clearfamilytemp.vb
ACTIONS/POST P:\UG_custom\scripts\copyfamily.vb
END_OF_MODIFY
Was passiert nun?
Ich bastel meine BG zusammen und verbaue meine Elemente.
Beim Speichern
- wird nun erstmal vor dem eigentlichen Speichern (ACTIONS/PRE) der temp-Ordner leergemacht (falls noch irgendwas drin sein sollte aus einem alten Projekt).
- dann speichert NX das ganze Zeug ab, und die Familienkinder in den festen Temp-Ordner
- und nach dem eigentlichen Speichern (ACRIONS/POST) wird der Temp-Ordner in den Ordner der BG kopiert.
Warum ein fester Temp-Ordner? Da habe ich nun 2 Tage rumgespielt, weil ich eigentlich eine Systemvariable nutzen wollte.
Da NX diese aber nur beim Start einliest, und während der Laufzeit nicht aktualisiert, nützt es nix beim Öffnen-Dialog den Pfad der prt auszulesen und dann erst zu haben.
Deswegen alles in den Speicher-Dialog gepackt und mehr oder weniger "zu Fuß" das ganze gebastelt.
Somit bleiben meine Ladeoptionen immer auf "Aus Ordner" und ich hab mein Projekt immer mit allen Komponenten in einem Ordner.
Muss ich jetzt noch ein ausgiebiger testen, aber scheint für meine Anforderungen sehr gut zu funktionieren!
Der Beitrag wurde von Lost-Form bearbeitet: 23.04.2020, 07:44 Uhr
05.08.2020, 07:48 Uhr
Mal ein kleines Feedback zu dem Ganzen;
die Konstrukteure arbeiten jetzt seit gut 3 Monaten mit den Wiederverwendungsbibliotheken.
In Kombination mit meinem Stücklistenprojekt funktioniert das auch zur vollsten Zufriedenheit (die Familyparts bekommen alle Teilattribute für die Stückliste gleich mit auf den Weg).
Im Anhang noch meine familysave.men, die das Save-Menü ändert (UGALLIANCE.zip - entpacken und in den NC-Pfad an entsprechender Stelle kopieren. "%EuerNXPfad%/UGALLIANCE/site/startup/") und die Scripts (scripts.zip).
Die scripts können an einen beliebigen Ort gespeichert werden (Pfad muss dann in die familysave.men eingetragen werden).
In clearfamilytemp.vb und in der copyfamily.vb müsst ihr die Pfade zu den Familyparts entsprechend eurer Umgebung anpassen.
Der Beitrag wurde von Lost-Form bearbeitet: 05.08.2020, 08:00 Uhr
die Konstrukteure arbeiten jetzt seit gut 3 Monaten mit den Wiederverwendungsbibliotheken.
In Kombination mit meinem Stücklistenprojekt funktioniert das auch zur vollsten Zufriedenheit (die Familyparts bekommen alle Teilattribute für die Stückliste gleich mit auf den Weg).
Im Anhang noch meine familysave.men, die das Save-Menü ändert (UGALLIANCE.zip - entpacken und in den NC-Pfad an entsprechender Stelle kopieren. "%EuerNXPfad%/UGALLIANCE/site/startup/") und die Scripts (scripts.zip).
Die scripts können an einen beliebigen Ort gespeichert werden (Pfad muss dann in die familysave.men eingetragen werden).
In clearfamilytemp.vb und in der copyfamily.vb müsst ihr die Pfade zu den Familyparts entsprechend eurer Umgebung anpassen.
Der Beitrag wurde von Lost-Form bearbeitet: 05.08.2020, 08:00 Uhr
Angehängte Datei(en)
27.07.2023, 20:39 Uhr
Hy Lost-Form!
Dein Journal Skript funktioniert super.
Wäre auch möglich, das der Skript nur den Familienpart kopiert, die auch in einer Baugruppe wirklich eingebaut sind kopieren, also nicht den ganzen Familienpartordner kopiert.?
Dein Journal Skript funktioniert super.
Wäre auch möglich, das der Skript nur den Familienpart kopiert, die auch in einer Baugruppe wirklich eingebaut sind kopieren, also nicht den ganzen Familienpartordner kopiert.?
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: