Siemens Digital Industries Software
Siemens Digital Industries Software

Where today meets tomorrow.

Wiederverwendungsbibliotheken

Beitrag 21.04.2020, 14:23 Uhr
Lost-Form
Lost-Form
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 23.07.2004
Beiträge: 157
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?
   
Beitrag 23.04.2020, 07:39 Uhr
Lost-Form
Lost-Form
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 23.07.2004
Beiträge: 157
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
   
Beitrag 05.08.2020, 07:48 Uhr
Lost-Form
Lost-Form
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 23.07.2004
Beiträge: 157
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
Angehängte Datei(en)
Angehängte Datei  UGALLIANCE.zip ( 933Byte ) Anzahl der Downloads: 6
Angehängte Datei  scripts.zip ( 1.64KB ) Anzahl der Downloads: 8
 
   
Beitrag 27.07.2023, 20:39 Uhr
Chris1982
Chris1982
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 27.07.2023
Beiträge: 0
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.?
   
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: