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
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
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
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
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