| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
| |
| ACHEMA 2022: Die langjährige Anlagenbau-Expertise der Solid System Team GmbH und die Lösung zur Rohrleitungsplanung mit Solid Edge überzeugen die Messebesucher |
Autor
|
Thema: Nachträglich Ref Set Simplified (REP) hinzufügen (2070 mal gelesen)
|
AlexxMZ Mitglied CAD support
Beiträge: 16 Registriert: 25.03.2015 TC 9.1, NX 8.0 8.5
|
erstellt am: 25. Mrz. 2015 11:37 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich habe folgendes Problem, zu dem ich über die Suchfunktion nichts Hilfreiches fand. NX Version: 8.0 Es geht um grosse Assemblies mit bis zu 1500 Einzelteilen, welche mit dem Ref. Set Simplified ("REP") geladen werden sollen. Bei allen fehlt jedoch noch das Reference Set REP, eine Einstellung der Load Options hilft hier erstmal nichts. Man muß vorher alle Einzelteile laden oder im ASM auf Workpart stellen und kann dann jeweils das Reference Set REP hinzufügen? Gibt es eine einfache vielleicht automatisierte Methode, vielleicht auch Möglichkeiten, hier mit einem einfachen Makro oder so zu arbeiten? Danke im voraus für Tips. [Diese Nachricht wurde von AlexxMZ am 25. Mrz. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AlexxMZ Mitglied CAD support
Beiträge: 16 Registriert: 25.03.2015 TC 9.1, NX 8.0 8.5
|
erstellt am: 25. Mrz. 2015 14:04 <-- editieren / zitieren --> Unities abgeben:
|
Big King Ehrenmitglied NX/Tc Admin
Beiträge: 1943 Registriert: 06.12.2010 TC13.3_Patch_4 (Upgrading TCxx in 20xx) Solid Edge 2022 MP6 (Upgrading SE20xx in 20xx) BCT v22R2 Inspector (Testing v22R6 Inspector) -Server VM -Lenovo ThinkPad Intel Core i7-9750H CPU2.6GHz NVIDA Quatro T2000 48GB RAM Win10 Pro 21H2
|
erstellt am: 25. Mrz. 2015 14:30 <-- editieren / zitieren --> Unities abgeben: Nur für AlexxMZ
Siehe in der NX Hilfe: Startseite > CAD > Zeichnungserstellung > Baugruppenzeichnungen > Arbeiten mit Baugruppenzeichnungen > Reference Sets Startseite > CAD > Baugruppen > Laden von Baugruppen ------------------ “Vision without action is a daydream. Action without vision is a nightmare.” Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AlexxMZ Mitglied CAD support
Beiträge: 16 Registriert: 25.03.2015 TC 9.1, NX 8.0 8.5
|
erstellt am: 25. Mrz. 2015 15:26 <-- editieren / zitieren --> Unities abgeben:
Ok danke, gefunden, ist nicht das gleiche.... Nun bräuchte ich einen Weg, schnell und einfach Einzelteildaten eines Assemblies (jeweils ca. 1000-2000) das Reference Set Simplyfied ("REP") zu verpassen, vielleicht über Batchfile oder Makro? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Ehrenmitglied V.I.P. h.c. Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2690 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-2306 3D Printer Prusa MK2 S
|
erstellt am: 25. Mrz. 2015 19:03 <-- editieren / zitieren --> Unities abgeben: Nur für AlexxMZ
Hallo AlexxMZ, das lässt sich über ein Journal machen, Makro taugt da nur sehr eingeschränkt. Und via (DOS ??) Batch sehe ich keine Möglichkeit, ein Part zu öffnen, geschweige denn an die RefSets dranzukommen. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ThomasZwatz Moderator cadadmin
Beiträge: 5425 Registriert: 19.05.2000 (12-2023) --------------------------------------------- [stable] NX2007(2027.5020) + SE2023 U6 + TC13.3.0.3, RAC +AWC6.2.2 SingleSite 4Tier, DocMgt, Client4Office, MRO, ReqMgt, SchedMgt, T4S, TcVis Mockup, TcSSO, SEEC, Multi-CAD BCT-Inspector Neutral v22R2 --------------------------------------------- [testing] NX2007(2027.5020) + SE2023 U6 + TC13.3.0.3, RAC +AWC6.2.2 BCT-Inspector Neutral v22R2 @M7720 Win10 (21H2)
|
erstellt am: 25. Mrz. 2015 22:52 <-- editieren / zitieren --> Unities abgeben: Nur für AlexxMZ
Zitat: Original erstellt von AlexxMZ: ...Gibt es eine einfache vielleicht automatisierte Methode, vielleicht auch Möglichkeiten, hier mit einem einfachen Makro oder so zu arbeiten?
Die eigentliche Frage dabei ist, was in dem ReferenceSet genau drin sein soll .... Annahme: Es ist ein ReferenceSet gemeint, das in den CustomerDefaults als "Simplified Reference Set" definiert wird. Dann kann man folgendes versuchen: - In den CustomerDefaults dieses SimplifiedReferenceSet mit "REP" festlegen - auf die fraglichen Parts das refile_part Utility loslassen, dabei muss eine "ordentliche" NX Umgebung definiert sein die auch die CustomerDefaults korrekt anzieht. Wirkt das nicht, muss mans z.B. über ein Journal machen wie bereits vorgeschlagen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Walter Hogger Moderator Maschinenbauingenieur
Beiträge: 3961 Registriert: 06.10.2000 UG V2 bis UG V18 NX1 bis NX2008 ("NX19")
|
erstellt am: 26. Mrz. 2015 09:05 <-- editieren / zitieren --> Unities abgeben: Nur für AlexxMZ
Ich seh's noch schlimmer wie Thomas. Unter dem "Simplified Reference Set" wird häufig eine Dummy-Geometrie abgelegt, die es so gar nicht gibt, z.B. bei einer Zylinderschraube nur zwei Zylinder (Gewindeschaft und Schraubenkopf). Dazu erstellt man sich zusätzliche Solids neben dem detaillierten Solid. Und das ist dann nicht ganz einfach, so eine Auswahl zu automatisieren. Gruß ------------------ Walter Hogger Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
inv Mitglied CAx Consultant
Beiträge: 632 Registriert: 07.02.2006 Windows 10 Unigraphics (v16 - v18) NX1 - NX12 NX (Continuous Release) CatiaV5 R22
|
erstellt am: 26. Mrz. 2015 09:15 <-- editieren / zitieren --> Unities abgeben: Nur für AlexxMZ
Hallo zusammen, 1. Das Reference Set "Rep" gibt es seit der NX 7.5 nicht mehr. Es wurde durch die Lightweight Daten ersetzt. 2. Der Eintrag "Simplified Reference Set" in den Customer Defaults ist nur für das Ergebnis der Envelope Assembly Funktion Gruß André Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AlexxMZ Mitglied CAD support
Beiträge: 16 Registriert: 25.03.2015 TC 9.1, NX 8.0 8.5
|
erstellt am: 26. Mrz. 2015 10:23 <-- editieren / zitieren --> Unities abgeben:
Danke ThomasZwatz, refile_part funktioniert soweit. - Es ist dieses ReferenceSet gemeint :-) - In den CustomerDefaults ist dort REP eingetragen. - refile_part läuft durch mit -d (alle prt-Dateien in dem Verzeichnis). Wie bekomme ich nun das REP auf diese Partdaten? Mit speziellen Parametern? (siehe Bild) Wenn das mit diesem Befehl ginge, wäre das natürlich sehr einfach und genial. Danke auch für die Tips aller anderen. Gruß [Diese Nachricht wurde von AlexxMZ am 26. Mrz. 2015 editiert.] [Diese Nachricht wurde von AlexxMZ am 26. Mrz. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ThomasZwatz Moderator cadadmin
Beiträge: 5425 Registriert: 19.05.2000 (12-2023) --------------------------------------------- [stable] NX2007(2027.5020) + SE2023 U6 + TC13.3.0.3, RAC +AWC6.2.2 SingleSite 4Tier, DocMgt, Client4Office, MRO, ReqMgt, SchedMgt, T4S, TcVis Mockup, TcSSO, SEEC, Multi-CAD BCT-Inspector Neutral v22R2 --------------------------------------------- [testing] NX2007(2027.5020) + SE2023 U6 + TC13.3.0.3, RAC +AWC6.2.2 BCT-Inspector Neutral v22R2 @M7720 Win10 (21H2)
|
erstellt am: 26. Mrz. 2015 11:18 <-- editieren / zitieren --> Unities abgeben: Nur für AlexxMZ
Laut der Info in den CustomerDefaults wird das SimplifiedReferenceSet vom System gewartet, wenn ein Envelope erzeugt wird. Wenn refile_part nun dieses RefSet nicht von sich aus erzeugt/befüllt ( ist in den Parts auch ein Envelope drin ? ) schauts schlecht aus. Dann muss mans wohl mit einem Journal machen ( wobei ich jetzt nicht weiss wie genau man diesen Vorgang interaktiv macht ), nur das RefSet selbst erzeugen und leer lassen wird ja nicht Ziel der Aktion sein. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AlexxMZ Mitglied CAD support
Beiträge: 16 Registriert: 25.03.2015 TC 9.1, NX 8.0 8.5
|
erstellt am: 26. Mrz. 2015 15:49 <-- editieren / zitieren --> Unities abgeben:
Ich habe die Lösung gefunden. Ich habe ein Journal, das alles auf Layer 1 einem neuen Reference Set REP hinzufügt. Beides kann man natürlich editieren. In Verbindung mit den Customer Defaults bekommt dann alles das Simplified ("REP"). Gibt es das Ref Set schon, bricht das Journal nicht ab, sondern es wird ignoriert. Nun brauchte ich nur noch ein Makro, das eine PRT Datei öffnet, das Journal ausführt, speichert und schliesst. Den Rest meines Vorhabens schaffe ich nun mit einem Skript. Wollte hier nur die Lösung schreiben, falls sowas mal wieder jemand braucht und sucht. Gruß, Alex ------------------- Journal: Option Strict Off Imports System Imports System.Collections.Generic Imports NXOpen Module Module2 Dim theSession As Session = Session.GetSession() Dim workPart As Part = theSession.Parts.Work Sub Main() If IsNothing(theSession.Parts.Work) Then 'active part required Return End If Dim lw As ListingWindow = theSession.ListingWindow lw.Open() Const undoMarkName As String = "reference set from bodies on layer" Dim markId1 As Session.UndoMarkId markId1 = theSession.SetUndoMark(Session.MarkVisibility.Visible, undoMarkName) '$$$$$ specify reference set name here Const refSetName As String = "REP" '$$$$$ specify layer Const refSetLayer As Integer = 1 Dim layerBodies As New List(Of Body) 'gather bodies on specified layer For Each tempBody As Body In workPart.Bodies If tempBody.Layer = refSetLayer Then layerBodies.Add(tempBody) End If Next Try 'find/create reference set Dim myRefSet As ReferenceSet = CreateReferenceSet(refSetName) 'remove all objects from reference set myRefSet.RemoveObjectsFromReferenceSet(myRefSet.AskMembersInReferenceSet) 'add bodies from specified layer myRefSet.AddObjectsToReferenceSet(layerBodies.ToArray) Catch ex As NXException theSession.UndoToMark(markId1, undoMarkName) MsgBox(ex.Message) Finally End Try lw.Close() End Sub Function CreateReferenceSet(ByVal refSetName As String) As ReferenceSet Dim theRefSets() As ReferenceSet = workPart.GetAllReferenceSets 'does the specified reference set exist? 'if so, return it For Each someRefSet As ReferenceSet In theRefSets If someRefSet.Name.ToUpper = refSetName.ToUpper Then Return someRefSet End If Next 'if we get here, the ref set does not exist 'create it Dim targetRefSet As ReferenceSet targetRefSet = workPart.CreateReferenceSet() targetRefSet.SetName(refSetName) Return targetRefSet End Function Public Function GetUnloadOption(ByVal dummy As String) As Integer 'Unloads the image when the NX session terminates GetUnloadOption = NXOpen.Session.LibraryUnloadOption.AtTermination End Function End Module
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Ehrenmitglied V.I.P. h.c. Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2690 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-2306 3D Printer Prusa MK2 S
|
erstellt am: 26. Mrz. 2015 16:10 <-- editieren / zitieren --> Unities abgeben: Nur für AlexxMZ
Zitat: Original erstellt von AlexxMZ: Nun brauchte ich nur noch ein Makro, das eine PRT Datei öffnet, das Journal ausführt, speichert und schliesst.
Hallo Alex, warum willst Du das separat machen und nicht gleich ins Journal mit einbauen ? Eine Schleife , z.B. For Each... über alle Parts, am Anfang jeweils öffnen, dann das RefSet erstellen und am Ende Speichern, Schliessen und gut ist. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AlexxMZ Mitglied CAD support
Beiträge: 16 Registriert: 25.03.2015 TC 9.1, NX 8.0 8.5
|
erstellt am: 26. Mrz. 2015 17:00 <-- editieren / zitieren --> Unities abgeben:
Hallo Michael, Ich beherrsche die VB Programmierung nicht.... Kannst Du das was im Journal noch fehlen würde nennen, damit dieses dann z.B. 2000 Datensätze in einem Directory durchgeht? Gruß, Alex Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Ehrenmitglied V.I.P. h.c. Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2690 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-2306 3D Printer Prusa MK2 S
|
erstellt am: 27. Mrz. 2015 11:56 <-- editieren / zitieren --> Unities abgeben: Nur für AlexxMZ
Zitat: Original erstellt von AlexxMZ: Ich beherrsche die VB Programmierung nicht....
Hallo Alex, das ist ein Grund, aber kein Hinderniss und lässt sich ändern ;) , z.B. damit. Daneben gibt's jede Menge Beispielprogramme: In der NX Installation sind einige hinterlegt, im Programmierforum findet sich das eine oder andere und falls Du Zugriff auf's GTAC hast, such' dort mal Sample NXOpen. Zitat: Original erstellt von AlexxMZ: Kannst Du das was im Journal noch fehlen würde nennen, damit dieses dann z.B. 2000 Datensätze in einem Directory durchgeht?
OK, aber als Tipp und auswendig. Alle Hinweise, wie man sowas "richtig" macht, sind in o.g. Tutorial und der NX Doku zu finden. Zunächst fehlt ein Imports System.IO für den Zugriff auf's Dateisystem. Dann würd' ich die Main umbenennen, z.B. in ProcessPart. Jetzt eine neue Main anlegen und dort eine Schleife machen, in etwa so: For each fname as string in directory.getfilesystementries(..) if fname.endswith(".prt") then dim tmppart as Part = theSession.Parts.open(fname) ProcessPart() tmppart.save(..) tmppart.close(..) end if Next Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AlexxMZ Mitglied CAD support
Beiträge: 16 Registriert: 25.03.2015 TC 9.1, NX 8.0 8.5
|
erstellt am: 27. Mrz. 2015 13:02 <-- editieren / zitieren --> Unities abgeben:
|
mseufert Ehrenmitglied V.I.P. h.c. Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2690 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-2306 3D Printer Prusa MK2 S
|
erstellt am: 28. Mrz. 2015 16:03 <-- editieren / zitieren --> Unities abgeben: Nur für AlexxMZ
|
AlexxMZ Mitglied CAD support
Beiträge: 16 Registriert: 25.03.2015 TC 9.1, NX 8.0 8.5
|
erstellt am: 30. Mrz. 2015 11:20 <-- editieren / zitieren --> Unities abgeben:
Danke Michael, habe ich eingebaut. Das Journal läuft ohne Fehlermeldung aber gerade versuche ich herauszufinden, warum "ProcessPart()" irgendwie nicht funktioniert. Die Parts werden geladen und gespeichert, aber sie haben das Ref Set REP nicht. Bei der Kombi Makro/Journal schon. Ich forsche weiter, lese auch das die VB.net Einführung durch, danke auch nochmal dafür. Fehlt was im Programm, daß der Teil mit dem Ref Set REP vergeben jetzt nicht zu funktionieren scheint?(REP ist in den Customer Defaults für Simplified noch definiert) Gruß, Alex Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AlexxMZ Mitglied CAD support
Beiträge: 16 Registriert: 25.03.2015 TC 9.1, NX 8.0 8.5
|
erstellt am: 30. Mrz. 2015 14:14 <-- editieren / zitieren --> Unities abgeben:
Ich probiere und bekomme es nicht hin :-) Ich habe mal das was ich habe hier als txt eingefügt, mag mal wer schauen, warum Sub ProcessPart anscheinend nicht so ausgeführt wird wie es soll? Gruß, Alex Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Ehrenmitglied V.I.P. h.c. Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2690 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-2306 3D Printer Prusa MK2 S
|
erstellt am: 30. Mrz. 2015 14:28 <-- editieren / zitieren --> Unities abgeben: Nur für AlexxMZ
Hallo Alex, das WorkPart wird nur einmal global gesetzt. Es ändert sich allerdings mit jedem Durchlauf der Main-Schleife . ProcessPart sollte aber zu jedem Zeitpunkt wissen, was gerade aktuelles WorkPart ist. Dazu am einfachsten die Zeile Dim workPart As Part = theSession.Parts.Work an den Anfang der Sub ProcessPart schieben. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AlexxMZ Mitglied CAD support
Beiträge: 16 Registriert: 25.03.2015 TC 9.1, NX 8.0 8.5
|
erstellt am: 31. Mrz. 2015 11:19 <-- editieren / zitieren --> Unities abgeben:
Hallo Michael, danke Dein Tip hat so nicht funktioniert, aber ein anderer, den ich noch bekommen habe. Mit dieser Schleife läufts nun und alles bekommt das neue Referenz Set: Sub Main() For Each fname As String In Directory.GetFileSystemEntries("O:\projekte\Kunden\Isuzu\Demo-Teile\4hk1_150323", "*.prt") Dim loadstat As PartLoadStatus = Nothing Dim tmppart As Part = theSession.Parts.OpenDisplay(fname, loadstat) workPart = tmppart Process() tmppart.Save(BasePart.SaveComponents.False, BasePart.CloseAfterSave.True) Next End Sub Kann man übrigens auch für anderes verwenden. Man kann im Journal den Layer eintragen und irgendein Referenz Set und dieses Journal fügt alles auf dem angegebenen Layer dem angegebenen Referenz Set zu Gruß, Alex Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Ehrenmitglied V.I.P. h.c. Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2690 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-2306 3D Printer Prusa MK2 S
|
erstellt am: 31. Mrz. 2015 15:04 <-- editieren / zitieren --> Unities abgeben: Nur für AlexxMZ
Zitat: Original erstellt von AlexxMZ: Dein Tip hat so nicht funktioniert ...
Hallo Alex, hast Du erwartet, daß es nach ein bisschen Copy/Paste gleich fehlerfrei läuft ? Das käme fast einem Lottogewinn gleich . Im Detail kommt's eben immer drauf an, wie der Rest des Programms genau aussieht. In dem Fall ist der Grund wahrscheinlich die Änderung von theSession.Parts.Open(...) zu theSession.Parts.OpenDisplay(...), weil NX zwischen WorkPart und DisplayPart unterscheidet. Jedenfalls muss die Sub ProcessPart das WorkPart kennen. Wie man das anstellt, ist letztlich egal. Man könnte die Variable tmppart auch weglassen und gleich ff. schreiben: workPart = theSession.Parts.OpenDisplay(fname, loadstat) ... workPart.Save(BasePart.SaveComponents.False, BasePart.CloseAfterSave.True) Oder das Part als Argument an ProcessPart übergeben ... Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AlexxMZ Mitglied CAD support
Beiträge: 16 Registriert: 25.03.2015 TC 9.1, NX 8.0 8.5
|
erstellt am: 01. Apr. 2015 09:44 <-- editieren / zitieren --> Unities abgeben:
Auf jeden Fall Danke Michael und allen anderen. :-) Erwünschtes Ergebnis ist erzielt und dieses Journal kann man ja vielleicht noch für anderes verwenden. Und danke auch für den Link zu dieser vb.net Einführung weiter oben. Werde ich mir mal zu Gemüte führen und mich mehr mit vb und Journals beschäftigen. Gruß, Alex Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |