| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
| |
| Solid Edge: Erste Schritte, ein Webinar am 24.01.2025
|
Autor
|
Thema: Klonen mit Journal (5801 mal gelesen)
|
didie Mitglied NX Admin
Beiträge: 108 Registriert: 29.01.2004 win 10 NX1953
|
erstellt am: 20. Sep. 2011 13:25 <-- editieren / zitieren --> Unities abgeben:
Hallo, Ich möchte gerne ein NXJournal erstellen mit dem ich Baugruppen klonen kann. Es soll dabei immer dieselbe Baugruppe als Ursprung verwendet und von Anwender ein Ziel Ordner angegeben werden. Nach dem klonen sollen dann mit dem Journal diverse Dinge in den neu erzeugten Parts getan werden. Bisher haben wir diesen Vorgang mit Makros und manueller Arbeit erledigt. In NXOpen.UF habe ich nun UFClone gefunden und versucht damit ein Klon Journal zu erstellen. Beim Versuch meine ersten Programmteile laufen zu lassen bekomme ich die Fehlermeldung: >>System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt. bei Uebungen.Tests.CloneAssemblyTest.Main() in d:\temp\NXJournals2752\journal.cs:Zeile 22.<< Ich denke es liegt daran, dass ich mein Klon Vorgang mit NXOpen.UF.UFClone clone = null; nicht richtig deklariert habe. Kann mir jemand weiterhelfen? Code:
using System; using System.Collections.Generic; using System.Text; using NXOpen; using NXOpen.Tooling; using NXOpen.UF; using NXOpenUI; using NXOpen.Utilities;namespace Uebungen.Tests { class CloneAssemblyTest { public static void Main() { Session sess = Session.GetSession(); ListingWindow lw = sess.ListingWindow; UFSession ufs = UFSession.GetUFSession(); NXOpen.UF.UFClone clone = null; clone.Initialise(UFClone.OperationClass.CloneOperation); UFPart.LoadStatus status; string targetDirectory = @"D:\testordner\clone\"; clone.SetDefAction(UFClone.Action.Clone); clone.SetDefAssocFileCopy(false); clone.SetDefDirectory(targetDirectory); clone.SetNaming("", UFClone.NamingTechnique.NamingRule,""); UFClone.NameRuleDef namingdev = new UFClone.NameRuleDef(); UFClone.NamingFailures fail = new UFClone.NamingFailures(); clone.SetNameRule(ref namingdev, ref fail); clone.AddAssembly(@"D:\testordner\clone\testbg.prt", out status); string partname = ""; clone.StartIteration(); clone.Iterate(out partname); lw.Open(); lw.WriteLine(partname); clone.StopIteration(); } public static int getUnloadOption() { return (int)Session.LibraryUnloadOption.Immediately; } } }
Gruß didie Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
stefan.f Mitglied
Beiträge: 126 Registriert: 03.09.2002
|
erstellt am: 20. Sep. 2011 15:48 <-- editieren / zitieren --> Unities abgeben: Nur für didie
|
didie Mitglied NX Admin
Beiträge: 108 Registriert: 29.01.2004 win 10 NX1953
|
erstellt am: 21. Sep. 2011 08:24 <-- editieren / zitieren --> Unities abgeben:
|
Hauki2905 Mitglied Softwareentwicklung CAD-CAM
Beiträge: 113 Registriert: 03.02.2011 NX 7.5; 8.0; 8.5, 9.0, 10 auf Win 8.1 x64
|
erstellt am: 15. Dez. 2011 12:39 <-- editieren / zitieren --> Unities abgeben: Nur für didie
Hallo, ich schlage mich gerade mit dem Selben Problem rum, Bei mir wirft er beim Code:
Clone.SetNaming("", UFClone.NamingTechnique.NamingRule, "")
nen nicht näher definierten fehler. woran kannd as liegen?grüße Hauki Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
didie Mitglied NX Admin
Beiträge: 108 Registriert: 29.01.2004 win 10 NX1953
|
erstellt am: 16. Jan. 2012 13:49 <-- editieren / zitieren --> Unities abgeben:
Hallo Hauki Ich war ein paar Wochen außer Haus, daher die späte Antwort. Ich habe in meinem Fall die Namensgebungs Regel "ReplaceString" verwendet. Code:
// Naming new Parts with NamingRule replace String UFClone.NamingTechnique naming = UFClone.NamingTechnique.NamingRule; clone.SetDefNaming(naming); UFClone.NameRuleDef namerule1 = default (UFClone.NameRuleDef); UFClone.NameRuleType type1 = UFClone.NameRuleType.ReplaceString; namerule1.type = type1; namerule1.new_string = "new07"; namerule1.base_string = "wer01"; UFClone.NamingFailures fail = default (UFClone.NamingFailures);
Ich hoffe es hilft dir weiter fallst du das Problem nich schon selbst gelöst hast. Gruß didie Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hauki2905 Mitglied Softwareentwicklung CAD-CAM
Beiträge: 113 Registriert: 03.02.2011 NX 7.5; 8.0; 8.5, 9.0, 10 auf Win 8.1 x64
|
erstellt am: 27. Jan. 2012 12:02 <-- editieren / zitieren --> Unities abgeben: Nur für didie
|
Hauki2905 Mitglied Softwareentwicklung CAD-CAM
Beiträge: 113 Registriert: 03.02.2011 NX 7.5; 8.0; 8.5, 9.0, 10 auf Win 8.1 x64
|
erstellt am: 08. Feb. 2012 11:00 <-- editieren / zitieren --> Unities abgeben: Nur für didie
Hi, ich habe noch ein Problemchen gefunden: Wenn in einer Baugruppe zwei mal das selbe teil verbaut wurde, versucht die Clone-Funktion dieses auch zwei mal zu clonen. Das geht natürlich nciht, weil beim zweiten Versuch, die Teiledatei im Zielordner bereits vorhanden ist. Gibt es da eine Möglichkeit das zu umgehen? Danke! Hauki Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
didie Mitglied NX Admin
Beiträge: 108 Registriert: 29.01.2004 win 10 NX1953
|
erstellt am: 10. Feb. 2012 16:50 <-- editieren / zitieren --> Unities abgeben:
Hallo Hauki Ich kann dein Problem nicht ganz nachvollziehen. Die clone Funktion erkennt mehrfach verbaute Teile und klont diese auch nur einmal. Genau so wie das die Klonfunktion tut wenn sie in einer NX Sitzung benutzt wird. Mit welchem NameRuleType willst du den arbeiten? Gruß didie Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hauki2905 Mitglied Softwareentwicklung CAD-CAM
Beiträge: 113 Registriert: 03.02.2011 NX 7.5; 8.0; 8.5, 9.0, 10 auf Win 8.1 x64
|
erstellt am: 13. Feb. 2012 14:33 <-- editieren / zitieren --> Unities abgeben: Nur für didie
Hallo didi, ja, ich habe mich ja auch schon gewudnert, warum das nicht geht. ich verwende die Funktion: Code: Dim ruleType As UFClone.NameRuleType = UFClone.NameRuleType.AppendString
bekomme aber einen Fehler in der NX-Protokolldatei "invalid file name" und der tritt genau dann auf, wenn ein Teil, dass zweimal vorkommt geclont werden soll. In dem Ordner, in dem sich die geclonte baugruppe dann wiederfindet, fehlen auch genau die Dateien, die als bauteil mehrfach in der BG vorkommen. Grüße Hauki Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
master001 Mitglied Projektingenieur
Beiträge: 454 Registriert: 25.02.2005
|
erstellt am: 14. Feb. 2012 06:32 <-- editieren / zitieren --> Unities abgeben: Nur für didie
Moin Euch. ich hab mir einfach ein Skript geschrieben, dass alle Bauteile kopiert, damit auch Teilefamilienteile mit rausgeschrieben werden. Ihr müsst doch dafür einfach nur die Baugruppenstruktur ablaufen und bei den Bauteilen die Eigenschaften des Speicherorts abfragen. Wenn ein Bauteil bereis existiert, dann lass ich es einfach überschreiben. (funktioniert auch bei sehr großen Baugruppen gut) Viele Grüße
Patric
------------------ Internet: http://www.imtech.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
didie Mitglied NX Admin
Beiträge: 108 Registriert: 29.01.2004 win 10 NX1953
|
erstellt am: 14. Feb. 2012 10:29 <-- editieren / zitieren --> Unities abgeben:
Hallo Hauki Ich vermute mal, dass bei dir der NameRuleType nicht richtig angewendet wird. Wie rufst du die clone Funktion auf ? Probiers mal mit Code:
clone.SetNameRule(ref namerule1, ref fail); clone.GenerateReport(); clone.PerformClone(ref fail); clone.Terminate();
Achte auch auf die Ladeoptionern. Gruß didie [Diese Nachricht wurde von didie am 14. Feb. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hauki2905 Mitglied Softwareentwicklung CAD-CAM
Beiträge: 113 Registriert: 03.02.2011 NX 7.5; 8.0; 8.5, 9.0, 10 auf Win 8.1 x64
|
erstellt am: 20. Feb. 2012 15:35 <-- editieren / zitieren --> Unities abgeben: Nur für didie
Hallo, also irgendwie klappt das bei mir immernoch nicht richtig. Bei generateReport kommt immer ein "Internal Error" der fehler an sich ist der selbe. Interesasnt ist vllt noch, dass ich bei "clone.Setnaming" auch einen fehler Bekomme. Ich füge mal meinen Code an. Code: Dim namingrule As UFClone.NameRuleDef = New UFClone.NameRuleDef() Dim ruleType As UFClone.NameRuleType = UFClone.NameRuleType.AppendString namingrule.type = ruleType namingrule.base_string = "" namingrule.new_string = "-" & suffix & index '"hallowelt " 'hier namen manipulieren!! Dim technik As UFClone.NamingTechnique = UFClone.NamingTechnique.NamingRule Clone.SetNameRule(namingrule, Namingfail) Try Clone.SetNaming("", UFClone.NamingTechnique.NamingRule, "") Catch ex As Exception ' ' theui.NXMessageBox.Show("Fehler", NXMessageBox.DialogType.Error, "Es ist ein Fehler aufgetreten (naming):------> " & ex.ToString & ex.StackTrace) End Try Clone.AddAssembly(SourcePart, status) Dim partname As String = "" Clone.StartIteration() Clone.Iterate(partname) Clone.StopIteration() Try Clone.GenerateReport() Clone.PerformClone(Namingfail) Clone.Terminate() Catch ex As Exception Dim str As String = ex.ToString theui.NXMessageBox.Show("Fehler", NXMessageBox.DialogType.Error, "Es ist ein fehler aufgetreten (clone):------> " & ex.ToString & ex.StackTrace) End Try
Grüße Hauki Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
stefan.f Mitglied
Beiträge: 126 Registriert: 03.09.2002
|
erstellt am: 21. Feb. 2012 10:11 <-- editieren / zitieren --> Unities abgeben: Nur für didie
|
didie Mitglied NX Admin
Beiträge: 108 Registriert: 29.01.2004 win 10 NX1953
|
erstellt am: 21. Feb. 2012 15:31 <-- editieren / zitieren --> Unities abgeben:
Hallo Ich habe mein Journal nun auch nochmal getestet, und dabei festgestellt, dass ich auch einen "Internal Error" bekomme wenn in der zu klonenden Baugruppe Teilefamilien Mitglieder enthalten sind. Dabei ist es egal was ich als SetFamilyTreatment angebe. Im NX7.5 syslog steht: **** Stopping because now in managed code >>>> INTERNAL ERROR caught in file "o:\ugnx754\ip4\src\ufun\no\ind\uf_clone.c" at line number 795 Laufzeitfehler: NXOpen.NXException: Internal error bei NXOpen.UF.UFClone.GenerateReport()
Komischerweise funktioniert das Journal, wenn ich es in der gleichen Sitzung ein n'tes mal anstarte. Ich bin leider noch nicht dahintergekommen warum das so ist.
Code:
// define clone Setup clone.Initialise(UFClone.OperationClass.CloneOperation); clone.SetDefAssocFileCopy(false); clone.SetDefDirectory(@"D:\testordner\clone\out\"); clone.SetDefNaming(UFClone.NamingTechnique.NamingRule); clone.SetLogfile(@"D:\testordner\clone\\out\test-clone-116.txt"); clone.AddAssembly(@"D:\testordner\clone\testbg.prt", out status); UFClone.ExLogOpts options = new UFClone.ExLogOpts(); options.allow_out_of_sync_bvrs = false; options.allow_missing_components = false; // Naming new Parts with NamingRule replace String UFClone.NamingTechnique naming = UFClone.NamingTechnique.NamingRule; clone.SetDefNaming(naming); UFClone.NameRuleDef namerule1 = default (UFClone.NameRuleDef); UFClone.NameRuleType type1 = UFClone.NameRuleType.AppendString; namerule1.type = type1; namerule1.new_string = "_116"; namerule1.base_string = "_216"; UFClone.NamingFailures fail = default (UFClone.NamingFailures); clone.SetNameRule(ref namerule1, ref fail); clone.SetFamilyTreatment(UFClone.FamilyTreatment.TreatAsLost); clone.SetDryrun(false); clone.GenerateReport(); clone.PerformClone(ref fail); clone.Terminate();
vielleich hat noch jemand einen Tipp Gruß didie Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hauki2905 Mitglied Softwareentwicklung CAD-CAM
Beiträge: 113 Registriert: 03.02.2011 NX 7.5; 8.0; 8.5, 9.0, 10 auf Win 8.1 x64
|
erstellt am: 23. Feb. 2012 15:10 <-- editieren / zitieren --> Unities abgeben: Nur für didie
|
| CAD-Zeichnerin / CAD-Zeichner (w/m/d) | Die Niederlassung Dortmund des Bau- und Liegenschaftsbetriebes des Landes Nordrhein?Westfalen (BLB NRW) sucht zum nächstmöglichen Zeitpunkt eine/einen CAD-Zeichnerin / CAD-Zeichner (w/m/d) Der Bau- und Liegenschaftsbetrieb NRW ist Eigentümer, Vermieter und Betreiber fast aller Immobilien des Landes Nordrhein-Westfalen. Mit rund 4.000 Gebäuden, einer ... | Anzeige ansehen | Technischer Zeichner, Bauzeichner |
|
Hauki2905 Mitglied Softwareentwicklung CAD-CAM
Beiträge: 113 Registriert: 03.02.2011 NX 7.5; 8.0; 8.5, 9.0, 10 auf Win 8.1 x64
|
erstellt am: 05. Mrz. 2012 15:56 <-- editieren / zitieren --> Unities abgeben: Nur für didie
|