| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
Autor
|
Thema: NXOPEN CAM: Suche ersten ProgrammName (2692 / mal gelesen)
|
DerFräser Mitglied Programmierer
Beiträge: 113 Registriert: 09.07.2006 NX2015 NX-CAM TeamCenter 13
|
erstellt am: 23. Jul. 2019 15:06 <-- editieren / zitieren --> Unities abgeben:
Hallo, wie kann man den ProgrammName finden (methode;objekt??) hier das Listing vom Journal: ' ---------------------------------------------- ' Menü: Einfügen->Programm... ' ---------------------------------------------- Dim markId1 As NXOpen.Session.UndoMarkId = Nothing markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Programm erzeugen") Dim nCGroup1 As NXOpen.CAM.NCGroup = CType(workPart.CAMSetup.CAMGroupCollection.FindObject("NC_PROGRAM"), NXOpen.CAM.NCGroup) Dim nCGroup2 As NXOpen.CAM.NCGroup = Nothing nCGroup2 = workPart.CAMSetup.CAMGroupCollection.CreateProgram(nCGroup1, "BHF_Favoriten_NX/11", "PROGRAM", NXOpen.CAM.NCGroupCollection.UseDefaultName.False, "RX123456") Dim markId2 As NXOpen.Session.UndoMarkId = Nothing markId2 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Start") Dim programOrderGroupBuilder1 As NXOpen.CAM.ProgramOrderGroupBuilder = Nothing programOrderGroupBuilder1 = workPart.CAMSetup.CAMGroupCollection.CreateProgramOrderGroupBuilder(nCGroup2) theSession.SetUndoMarkName(markId2, "Programm-Dialogfenster") Dim taggedObject1 As NXOpen.TaggedObject = Nothing taggedObject1 = programOrderGroupBuilder1.StartUdeSet.UdeList.FindItem(0) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
geraldb Mitglied
Beiträge: 40 Registriert: 13.09.2008
|
erstellt am: 23. Jul. 2019 19:48 <-- editieren / zitieren --> Unities abgeben: Nur für DerFräser
Hast Du im Journal-Quellcode mal nach dem Namen "RX123456" gesucht? Dieser findet sich recht schnell. Tipp: zu Beginn des Journal-Quellcodestudiums alle Zeilen welche irgendwas mit "UndoMark" enthalten entfernen. Das räumt kräftig auf und die relevanten Passagen bleiben übrig. Leider fehlt hier und da jedoch der ein oder andere Codeschnipsel welcher eben nicht aufgezeichnet wird. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DerFräser Mitglied Programmierer
Beiträge: 113 Registriert: 09.07.2006 NX2015 NX-CAM TeamCenter 13
|
erstellt am: 25. Jul. 2019 14:26 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe etwas gefunden... Jetzt weiß ich noch nicht wie ich in der Collection(group [NXOpen.CAM.NCGroup]) auf das erste Objekt zugreifen kann. Mein Behelf ist die Schleife mit "Exit For" abzubrechen und das Programm in "Nicht verwendetes Elemente" finde ich auch nicht(siehe Bild oben) Im Journal: Dim theSession As Session = Session.GetSession() Dim setup As NXOpen.CAM.CAMSetup = workPart.CAMSetup Dim groups As NXOpen.CAM.NCGroupCollection = setup.CAMGroupCollection For Each group As NXOpen.CAM.NCGroup In groups 'Text und Variablen im Infofenster ausgeben: theSession.ListingWindow.Open() theSession.ListingWindow.WriteLine("Ausgabe: " & group.Name & " : " & group.GetType().ToString) theSession.ListingWindow.Close() Exit For Next
MfG
[Diese Nachricht wurde von DerFräser am 25. Jul. 2019 editiert.] [Diese Nachricht wurde von DerFräser am 25. Jul. 2019 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
geraldb Mitglied
Beiträge: 40 Registriert: 13.09.2008
|
erstellt am: 25. Jul. 2019 19:11 <-- editieren / zitieren --> Unities abgeben: Nur für DerFräser
Für das erste Item einfach mal rudimentär versuchen: groups(0). Kann mir allerdings vorstellen dass die Auflistung im Strukturbaum nicht zwingend der Reihenfolge in groups entspricht, d.h. man müßte einen weiteren Parameter bzw. Eigenschaft abfragen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2700 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-2306 3D Printer Prusa MK2 S
|
erstellt am: 25. Jul. 2019 19:41 <-- editieren / zitieren --> Unities abgeben: Nur für DerFräser
Hallo Fräser, die Schleife würde m.E. besser so aussehen: Code: Dim lw as ListingWindow = theSession.ListingWindow lw.Open() For Each group As NXOpen.CAM.NCGroup In groups 'Text und Variablen im Infofenster ausgeben: lw.WriteLine("Ausgabe: " & group.Name & " : " & group.GetType().ToString) If group.Name = "tralala" Then Exit For Next lw.Close()
Daneben bin ich nicht sicher, in welcher Collection der Programmname steckt, könnte z.B. auch in der CAMOperationCollection sein. Schau' einfach mal, welche Collections es im Setup sonst noch gibt. Gruß, Michael ------------------ Ein Mensch wird laut, wenn er was will; wenn er's erst hat, dann wird er still; Das "Danke" ist, nach alter Sitte, Weit selt'ner als das "Bitte, Bitte". Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DerFräser Mitglied Programmierer
Beiträge: 113 Registriert: 09.07.2006
|
erstellt am: 26. Jul. 2019 07:26 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von geraldb: Für das erste Item einfach mal rudimentär versuchen: groups(0). Kann mir allerdings vorstellen dass die Auflistung im Strukturbaum nicht zwingend der Reihenfolge in groups entspricht, d.h. man müßte einen weiteren Parameter bzw. Eigenschaft abfragen.
groups(0) geht nicht... Die Reihenfolge vom CAM-Programmansicht ist gleich der Reihefolge in NXOpen.CAM.NCGroup (siehe Bild)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DerFräser Mitglied Programmierer
Beiträge: 113 Registriert: 09.07.2006 NX2015 NX-CAM TeamCenter 13
|
erstellt am: 26. Jul. 2019 07:35 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von mseufert: Hallo Fräser,die Schleife würde m.E. besser so aussehen: Code: Dim lw as ListingWindow = theSession.ListingWindow lw.Open() For Each group As NXOpen.CAM.NCGroup In groups 'Text und Variablen im Infofenster ausgeben: lw.WriteLine("Ausgabe: " & group.Name & " : " & group.GetType().ToString) If group.Name = "tralala" Then Exit For Next lw.Close()
Daneben bin ich nicht sicher, in welcher Collection der Programmname steckt, könnte z.B. auch in der CAMOperationCollection sein. Schau' einfach mal, welche Collections es im Setup sonst noch gibt. Gruß, Michael
Hallo mseufert, es gibt nur noch die OperationCollection, die hat alle Einträge der Arbeitsgänge aber ohne Programmnummer... Die Reihenfolge und das "Exit For" gefällt mir gut. Leider kann ich keine Unities vergeben Probleme mit Umlauten beim Benutzername... MfG Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2700 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-2306 3D Printer Prusa MK2 S
|
erstellt am: 27. Jul. 2019 18:35 <-- editieren / zitieren --> Unities abgeben: Nur für DerFräser
Zitat: Original erstellt von DerFräser:
Leider kann ich keine Unities vergeben Probleme mit Umlauten beim Benutzername...
... und dennoch sind welche angekommen ... besten Dank ------------------ Ein Mensch wird laut, wenn er was will; wenn er's erst hat, dann wird er still; Das "Danke" ist, nach alter Sitte, Weit selt'ner als das "Bitte, Bitte". Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
xfer Mitglied IT-Systembetreuer
Beiträge: 9 Registriert: 13.01.2014 Teamcenter 11.6 NX 1926 Series
|
erstellt am: 26. Jul. 2021 16:30 <-- editieren / zitieren --> Unities abgeben: Nur für DerFräser
Zwar ein altes Thema, aber für die Nachwelt: Das Hauptprogramm ist nicht in der Liste und bekommt man nur über die Funktion FindObject. var ncProgram = (NXOpen.CAM.NCGroup)workPart.CAMSetup.CAMGroupCollection.FindObject("NC_PROGRAM");
lg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2700 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-2306 3D Printer Prusa MK2 S
|
erstellt am: 27. Jul. 2021 08:29 <-- editieren / zitieren --> Unities abgeben: Nur für DerFräser
Zitat: Original erstellt von xfer: Zwar ein altes Thema, aber für die Nachwelt:Das Hauptprogramm ist nicht in der Liste und bekommt man nur über die Funktion FindObject. var ncProgram = (NXOpen.CAM.NCGroup)workPart.CAMSetup.CAMGroupCollection.FindObject("NC_PROGRAM");
lg
Hallo xfer, das würde ich mal Zweifel anmelden. Hast du es mit der UFSession, z.B. UF_Setup oder UF_Oper versucht ? Hab' zwar nix aktuelles im CAM-Bereich, aber zuletzt hat man damit alles erdenkliche ermitteln können. Gruß, Michael ------------------ Ein Mensch wird laut, wenn er was will; wenn er's erst hat, dann wird er still; Das "Danke" ist, nach alter Sitte, Weit selt'ner als das "Bitte, Bitte". Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
xfer Mitglied IT-Systembetreuer
Beiträge: 9 Registriert: 13.01.2014 Teamcenter 11.6 NX 1926 Series
|
erstellt am: 11. Aug. 2021 12:00 <-- editieren / zitieren --> Unities abgeben: Nur für DerFräser
Hallo, wenn man auf die CAMGroupCollection mit foreach durchgeht ist das Hauptprogramm nicht dabei. Ob das Ermitteln anders möglich ist weiß ich nicht, bisher habe ich nur diese Möglichkeit gefunden. Wer die Problemstellung hat kann es so oder anders machen, ich wollte es nur mal posten, weil ich das in dem Thema vermisst hatte und mir der Code-Schnipsel geholfen hätte. lg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| TGA Planer Kältetechnik (m/w/d) | Bei CANCOM erwartet dich ein innovatives, agiles und nachhaltiges Umfeld: Mehr als 5.600 Mitarbeiter arbeiten tagtäglich daran, mit Hilfe moderner IT-Lösungen die Zusammenarbeit und den Austausch in verschiedenen Lebensbereichen zu verbessern. Du hast Lust ein Teil davon zu sein und den nächsten Karriereschritt zu gehen? Dann werde Teil unserer Digital Journey. Wir freuen uns auf Menschen aus den unterschiedlichsten ... | Anzeige ansehen | Gebäude-, Versorgungs-, Sicherheitstechnik |
|
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2700 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-2306 3D Printer Prusa MK2 S
|
erstellt am: 12. Aug. 2021 12:19 <-- editieren / zitieren --> Unities abgeben: Nur für DerFräser
Versuch's mal damit: Code:
' PrgRoot über prt.camsetup abfragen, wenn's nix ist, => False Dim cs As CAMSetup Dim PrgRootTag As Tag Dim PrgRoot As NCGroup Try cs = prt.CAMSetup If cs Is Nothing Then Return False ufs.Setup.AskProgramRoot(cs.Tag, PrgRootTag) PrgRoot = CType(NXObjectManager.Get(PrgRootTag), NCGroup) Catch ex As Exception log(ex.Message) Return False End Try
Gruß, Michael
------------------ Ein Mensch wird laut, wenn er was will; wenn er's erst hat, dann wird er still; Das "Danke" ist, nach alter Sitte, Weit selt'ner als das "Bitte, Bitte". Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |