| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
Autor
|
Thema: Part Nummer auslesen funktioniert nicht (2231 mal gelesen)
|
RH84 Mitglied Diplomand
Beiträge: 20 Registriert: 10.08.2010 Windows XP 64Bit UG NX5
|
erstellt am: 19. Aug. 2010 14:26 <-- editieren / zitieren --> Unities abgeben:
Ich möcht die Teilenummer eines vorher ausgewählten Objektes ausgeben lassen in einer MsgBox. Die Auswahl des Objektes funktioniert bereits. Durch andere Beiträge hier bin ich auf GetStringAttribute gestoßen. Damit müsste es doch funktionieren, oder? Möchte als Beispiel einfach nur die Teilenummer des ausgewählten Objektes ausgeben.
Code:
Dim theSession As Session = Session.GetSession() Dim theUI As UI = UI.GetUI() Dim lw As ListingWindow = theSession.ListingWindow() Dim obj As NXObject Dim wp As Part = Session.GetSession.Parts.work Dim ai As String = wp.GetStringAttribute("DB_PART_NO") While select_object(obj) = Selection.Response.Ok
MsgBox(REV) End While
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gfx-toxic.de Moderator Konstruktion / Anwenderbetreuung
Beiträge: 501 Registriert: 09.06.2006 Teamcenter 11.3 / NX 11 Windows 10
|
erstellt am: 19. Aug. 2010 14:37 <-- editieren / zitieren --> Unities abgeben: Nur für RH84
Teamcenter Umgebung oder? Hast du das Part schon mal abgespeichert? Du kannst auch den Namen über wp.Name abrufen. ------------------ Gruß Matthias ------------------------------------ ICQ: 163190295 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RH84 Mitglied Diplomand
Beiträge: 20 Registriert: 10.08.2010 Windows XP 64Bit UG NX5
|
erstellt am: 19. Aug. 2010 14:41 <-- editieren / zitieren --> Unities abgeben:
TeamCenter derzeit noch nicht. Soll aber für TeamCenter ausgelegt werden. Wo liegt dann der Unterschied? Möchte übrigens die Part Nummer emitteln, nicht den Namen. wp.name gibt mir übrigens klappt aber übrigens auch nicht. Die MsgBox ist leer. [Diese Nachricht wurde von RH84 am 19. Aug. 2010 editiert.] [Diese Nachricht wurde von RH84 am 19. Aug. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gfx-toxic.de Moderator Konstruktion / Anwenderbetreuung
Beiträge: 501 Registriert: 09.06.2006 Teamcenter 11.3 / NX 11 Windows 10
|
erstellt am: 19. Aug. 2010 14:47 <-- editieren / zitieren --> Unities abgeben: Nur für RH84
wp.GetStringAttribute("DB_PART_NO") gibt das Datenbankattribut von Teamcenter zurück. Sprich kein Teamcenter auch kein Attribut DB_PART_NO =) ähm aber es gibt bestimmt was um den Filenamen auslesen zu können. Ich schau mal ob ich was finde. ------------------ Gruß Matthias ------------------------------------ ICQ: 163190295 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RH84 Mitglied Diplomand
Beiträge: 20 Registriert: 10.08.2010 Windows XP 64Bit UG NX5
|
erstellt am: 19. Aug. 2010 14:49 <-- editieren / zitieren --> Unities abgeben:
Hm, stimmt. jetzt wo du's sagst, macht das mit dem Prefix DB auch sinn. Müsste es da nicht für lokale Dateien auch die Möglichkeit geben? Wär super, wenn du noch was findest. Hab die NET_REF.chm nicht hier, leider. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gfx-toxic.de Moderator Konstruktion / Anwenderbetreuung
Beiträge: 501 Registriert: 09.06.2006 Teamcenter 11.3 / NX 11 Windows 10
|
erstellt am: 19. Aug. 2010 14:51 <-- editieren / zitieren --> Unities abgeben: Nur für RH84
|
RH84 Mitglied Diplomand
Beiträge: 20 Registriert: 10.08.2010 Windows XP 64Bit UG NX5
|
erstellt am: 19. Aug. 2010 14:57 <-- editieren / zitieren --> Unities abgeben:
Hmm.. vielleicht verstehn wir uns falsch. Im Part-Navigator sind ja die einzelnen Teile aufgeführt mit ihrer ID in den Klammern. Genau Diese möchte ich ausgeben lassen. Dafür hab ich die Selection des jeweiligen Teils schon eingebaut. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2624 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-1980 3D Printer Prusa MK2 S
|
erstellt am: 19. Aug. 2010 15:15 <-- editieren / zitieren --> Unities abgeben: Nur für RH84
Hallo RH, kann es sein, daß Du hier etwas verwechselst ? Im Part Navigator siehst Du die Features, im Assembly Navigator die Komponenten, denen ein Teil (Part) zugeordnet ist. Im Programm selektierst Du ein NXObject, das kann sowohl Part als auch Komponente oder sonst was sein. Das hängt davon ab, wie der Selektionsfilter eingestellt ist. Ohne den zu sehen, wird eine Diagnose schwierig. Am besten lädst Du mal den kompletten Code als Anhang hoch. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RH84 Mitglied Diplomand
Beiträge: 20 Registriert: 10.08.2010 Windows XP 64Bit UG NX5
|
erstellt am: 19. Aug. 2010 15:23 <-- editieren / zitieren --> Unities abgeben:
Okay, hier der komplette Quelltext. Hab mir das aus bestehenden Skripten hier aus dem Forum zusammen gebaut und abgeändert. Endziel soll es werden, interaktiv verschiedene Flächen auszuwählen und dann automatisch auf einen Layer zu schieben, dessen Name der Benutzer vorher eingibt. Als Zwischenschritt wollte ich nun erst mal die IDs der ausgewählten "Flächen" (so nenn ich es jetzt mal, da ich mit den Bezeichnungen in UG _noch_ nicht ganz vertraut bin) ausgeben lassen, nachdem ich sie ausgewählt habe, da ich über diese ID dann wohl gezielt diese "Flächen" verschieben kann, oder nicht? Hier der Quellcode: Code: Option Strict Off Imports System Imports NXOpen Imports NXOpen.UI Imports NXOpen.UFModule Move_Selected_Objects_to_Layer Sub Main() Dim theSession As Session = Session.GetSession() Dim theUI As UI = UI.GetUI() Dim lw As ListingWindow = theSession.ListingWindow() Dim obj As NXObject Dim wp As Part = Session.GetSession.Parts.work Dim ai As String = wp.FullPath.ToString() While select_object(obj) = Selection.Response.Ok
lw.Open() 'lw.WriteLine("ai") MsgBox(ai) End While End Sub 'Selection für Flächen Function select_object(ByRef obj As NXObject) Dim ui As UI = ui.GetUI() Dim message As String = "Select an object" Dim title As String = "Selection" Dim selectionMask(1) As Selection.MaskTriple With selectionMask(0) .Type = UFConstants.UF_solid_type .Subtype = 0 .SolidBodySubtype = 0 End With With selectionMask(1) .Type = UFConstants.UF_circle_type .Subtype = 0 .SolidBodySubtype = 0 End With Dim cursor As Point3d = Nothing Dim resp As Selection.Response = _ ui.SelectionManager.SelectObject(message, title, _ Selection.SelectionScope.WorkPart, _ Selection.SelectionAction.ClearAndEnableSpecific, _ True, False, selectionMask, obj, cursor) If resp = Selection.Response.ObjectSelected Or _ resp = Selection.Response.ObjectSelectedByName Then Return Selection.Response.Ok Else Return Selection.Response.Cancel End If End Function End Module
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ThomasZwatz Ehrenmitglied V.I.P. h.c. cadadmin
Beiträge: 5397 Registriert: 19.05.2000
|
erstellt am: 19. Aug. 2010 15:42 <-- editieren / zitieren --> Unities abgeben: Nur für RH84
Zitat: Original erstellt von gfx-toxic.de: wp.GetStringAttribute("DB_PART_NO")gibt das Datenbankattribut von Teamcenter zurück. Sprich kein Teamcenter auch kein Attribut DB_PART_NO =) ...
Das Attribut DB_PART_NO ist in TC Umgebung hardwired, aber das heißt nicht daß das Attribut NXnative nicht vorhanden sein kann oder darf. Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2624 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-1980 3D Printer Prusa MK2 S
|
erstellt am: 19. Aug. 2010 16:08 <-- editieren / zitieren --> Unities abgeben: Nur für RH84
|
master001 Mitglied Projektingenieur
Beiträge: 454 Registriert: 25.02.2005
|
erstellt am: 19. Aug. 2010 19:27 <-- editieren / zitieren --> Unities abgeben: Nur für RH84
Moin Euch allen, ach ja ich hoffe mal Ihr redet nicht aneinander vorbei, also ID + Klammern kenne ich nur, wenn ich im Teile-Navigator in der ersten Spalte nicht den Dateinamen habe, sondern auf ein Attribut z.B. DB_Part_Number verweise --> Wenn das Bauteil dieses Attribut nicht besitzt, dann wird der Part Name in "<>"Klammern geschrieben. Gruß Patric
------------------ Internet: http://www.imtech.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RH84 Mitglied Diplomand
Beiträge: 20 Registriert: 10.08.2010 Windows XP 64Bit UG NX5
|
erstellt am: 20. Aug. 2010 10:30 <-- editieren / zitieren --> Unities abgeben:
Hallo Michael, besten Dank. Das hilft mir schonmal sehr weiter. Ich bin gerade dabei, die ganze Sache so anzupassen, dass ein Fenster mit RadioButtons zur Verfügung steht, über die man eine Kategorie auswählen kann, welche dann einem bestimmten Layer entspricht. Durch Abfrage, welcher RadioButton aktiv ist, soll das Verschieben dann auf den jeweiligen Layer erfolgen. Beim naiven Versuch es so zu machen, scheitere ich jedoch:
Code: Try Dim Kategorie As Integer = Nothing Select Case True Case RadioButton1.Checked Kategorie = 10 Case RadioButton2.Checked
Kategorie = 20 Case RadioButton3.Checked Kategorie = 30 Case Else End Select 'MsgBox(Kategorie) CType(obj, DisplayableObject).Layer = Kategorie Catch ex As Exception End Try
In Sachen NX werde ich erst im September eine Schulung erhalten, um mich da besser zurecht zu finden. VB ist für mich weitestgehend neu. Im Studium haben wir nur 2 Semester C++ gemacht, aber nicht wirklich tiefgründig, und der größte Teil ist leider auch wieder vergessen.
Ich fürchte, wenn ich VB von Grund auf versuche zu lernen, wird mir die Zeit für die Diplomarbeit extrem knapp werden! (auch wenn dieser Weg der richtigere wäre ) Bin hier halt auch nicht als Programmierer beschäftigt, sondern in Sachen Optik und Lichtsimulation. Deshalb probiere ich halt jetzt mit den konkreten Aufgabestellungen für die Automatisierung mir das ganze etwas anzueignen soweit ich es benötige, wobei es in Sachen NX wohl auf 2-3 kleinere Programme beschränkt sein wird. Der andere Part wird in einer Simulationssoftware für Optik stattfinden. Hier bekomm ich aber auch erst Ende September einen Lehrgang. [Diese Nachricht wurde von RH84 am 20. Aug. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gfx-toxic.de Moderator Konstruktion / Anwenderbetreuung
Beiträge: 501 Registriert: 09.06.2006 Teamcenter 11.3 / NX 11 Windows 10
|
erstellt am: 20. Aug. 2010 11:20 <-- editieren / zitieren --> Unities abgeben: Nur für RH84
Hey, eine Frage: Wenn du schon mal im Studium C++ hattest...wieso versuchst du das ganze nicht in C# zu schreiben? Das fällt dir vielleicht vom Syntax her etwas leichter. Und ich wäre nicht mehr ganz allein unter den C# Scriptlern ;-) ------------------ Gruß Matthias ------------------------------------ ICQ: 163190295 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RH84 Mitglied Diplomand
Beiträge: 20 Registriert: 10.08.2010 Windows XP 64Bit UG NX5
|
erstellt am: 20. Aug. 2010 11:29 <-- editieren / zitieren --> Unities abgeben:
Wie gesagt: Davon ist ohnehin nicht viel hängen geblieben, und VB hat wohl die meisten Anhänger und Beispiele in sachen UG Programmierung. Das blöde ist halt echt, dass hier vor Ort niemand ist, der in der Richtung arbeitet, sonst hätte ich da ja einen Ansprechpartner. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2624 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-1980 3D Printer Prusa MK2 S
|
erstellt am: 20. Aug. 2010 13:12 <-- editieren / zitieren --> Unities abgeben: Nur für RH84
Hallo RH, am Codeschnipsel ist nicht zu erkennen, warum das nicht laufen sollte. Zur Kontrolle (Ich nehm' mal an, Du machst ein reines Journal ohne .NET-Autoren-Lizenz) kannst Du in jedem Case eine MessageBox aufmachen oder ins ListingWindow reinschreiben. Alternative wäre ein sog. EventHandler (durch Doppelklick auf einen RadioButton im FormDesigner), der den Wert von "Kategorie" setzt. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RH84 Mitglied Diplomand
Beiträge: 20 Registriert: 10.08.2010 Windows XP 64Bit UG NX5
|
erstellt am: 20. Aug. 2010 13:25 <-- editieren / zitieren --> Unities abgeben:
Im Anhang mal der komplette Quellcode. Die Ausgabe des Inhaltes von Kategorie funktioniert ja. Nur kann das ausgewählte Objekt nicht auf die über die RadioButtons definierten Layer geschoben werden (Zeile 254, die Zeile ist auskommentiert). Edit: Hatte noch eine Idee, funktioniert aber auch nicht.. es passiert einfach keine Verschiebung: Zitat: ase RadioButton1.Checked Kategorie = 200 MsgBox(Kategorie) wp.Layers.MoveObjects(Kategorie, obj)
[Diese Nachricht wurde von RH84 am 20. Aug. 2010 editiert.] [Diese Nachricht wurde von RH84 am 20. Aug. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2624 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-1980 3D Printer Prusa MK2 S
|
erstellt am: 20. Aug. 2010 15:34 <-- editieren / zitieren --> Unities abgeben: Nur für RH84
Die Sub kompselect_Click erinnert doch sehr an eines meiner Schulungsbeispiele. Würde mich mal interessieren, wie das den Weg zu Dir gefunden hat. Aus der ersten Sub übergibst Du ein Array an die Sub obj_info, damit hat die Typumwandlung CType(obj, DisplayableObject) ein Problem. Ein lw.writeline(ex.Message) im Catch- Block hätte die Fehlerurache ausgegeben. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RH84 Mitglied Diplomand
Beiträge: 20 Registriert: 10.08.2010 Windows XP 64Bit UG NX5
|
erstellt am: 23. Aug. 2010 09:10 <-- editieren / zitieren --> Unities abgeben:
Hallo Michael, das Beispiel habe ich hier im Forum auch gefunden, und da Stand auch dabei, dass es aus Deiner Schulung kommt.
Zitat: Aus der ersten Sub übergibst Du ein Array an die Sub obj_info, damit hat die Typumwandlung CType(obj, DisplayableObject) ein Problem.
An welcher Stelle genau? Und wie umgehe ich das Problem? Gruß Rouven [Diese Nachricht wurde von RH84 am 23. Aug. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2624 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-1980 3D Printer Prusa MK2 S
|
erstellt am: 23. Aug. 2010 10:01 <-- editieren / zitieren --> Unities abgeben: Nur für RH84
|
RH84 Mitglied Diplomand
Beiträge: 20 Registriert: 10.08.2010 Windows XP 64Bit UG NX5
|
erstellt am: 23. Aug. 2010 14:58 <-- editieren / zitieren --> Unities abgeben:
|
atzlrein Mitglied Konstrukteur
Beiträge: 8 Registriert: 23.09.2001 NX6
|
erstellt am: 16. Nov. 2010 08:39 <-- editieren / zitieren --> Unities abgeben: Nur für RH84
|
| PreMaster - Testingeneur für MEMS Sensoren (w/m/div.) | Möchten Sie Ihre Ideen in nutzbringende und sinnvolle Technologien verwandeln? Ob im Bereich Mobility Solutions, Consumer Goods, Industrial Technology oder Energy and Building Technology - mit uns verbessern Sie die Lebensqualität der Menschen auf der ganzen Welt. Willkommen bei Bosch. Die Bosch Sensortec GmbH freut sich auf Ihre Bewerbung! Anstellungsart: Befristet Arbeitszeit: ... | Anzeige ansehen | Elektrotechnik, Elektronik |
|
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2624 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-1980 3D Printer Prusa MK2 S
|
erstellt am: 16. Nov. 2010 09:28 <-- editieren / zitieren --> Unities abgeben: Nur für RH84
Hallo atzlrein, den vollständigen Pfad des Parts kriegst Du über das Property Fullpath eines Parts, z.B.:
Code: dim wp as part = session.Getsession.parts.work dim pfad as string = wp.Fullpath
Den in ein (Part)Attribut zu schreiben ist auch kein Problem: Code: wp.setattribute ...
Die Ausgabe auf der Zeichnung (als Note ??) sollte auch kein Problem sein. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |