| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
Autor
|
Thema: Attribut-Zuweisung im Journal? (4790 mal gelesen)
|
Sirus Ehrenmitglied CAD Applikationsentwickler
Beiträge: 1564 Registriert: 03.06.2004 SolidWorks2022
|
erstellt am: 15. Jun. 2007 11:34 <-- editieren / zitieren --> Unities abgeben:
|
SMario Mitglied Konstrukteur/Designer
Beiträge: 114 Registriert: 31.03.2005 FSC Celsius Workstation CPU: Pentium 4 3.20GHz Speicher: 2.00GB RAM Grafik: Quadro FX 1400 Monitor: FSC P20-2 OS: Windows XP SP2 UG: NX4.0.2.2
|
erstellt am: 15. Jun. 2007 12:28 <-- editieren / zitieren --> Unities abgeben: Nur für Sirus
Hallo Sirus, sowas in der Art? (siehe auch Dateianhang): Code: Option Strict OnImports System Imports NXOpen Imports NXOpen.UF Module NXJournal Sub Main Dim theSession As Session = Session.GetSession() ' Setze Variablen Dim strPartMaterial As String = "1.2436" ' Setze Attribut theSession.Parts.Work.SetAttribute("MATERIAL", strPartMaterial) End Sub Public Function GetUnloadOption(ByVal dummy As String) As Integer GetUnloadOption = UFConstants.UF_UNLOAD_IMMEDIATELY End Function End Module
Ciao Mario
p.s. Mit dem Link konnte ich nichts anfangen -> "...was not found on this server" [Diese Nachricht wurde von SMario am 15. Jun. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sirus Ehrenmitglied CAD Applikationsentwickler
Beiträge: 1564 Registriert: 03.06.2004
|
erstellt am: 15. Jun. 2007 12:43 <-- editieren / zitieren --> Unities abgeben:
hallo mario ich bin mir nicht ganz sicher? ich möchte lediglich des fixe "@DB/12345/A" in der zeile unten von dem aktuellen attributen im part abholen: 123456=DB_PART_NO A=DB_PART_REV im journal soll anstelle "@DB/12345/A" die attribute "@DB/DB_PART_NO/DB_PART_REV" aus dem aktiven part "gesogen" werde: ---------------------------------------------------- Dim part1 As Part = CType(theSession.Parts.FindObject("@DB/12345/A"), Part) ---------------------------------------------------- -----------origina creativ-teil aus journal--------------
Dim markId1 As Session.UndoMarkId markId1 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Make Displayed Part") Dim part1 As Part = CType(theSession.Parts.FindObject("@DB/12345/A"), Part) Dim partLoadStatus1 As PartLoadStatus Dim status1 As PartCollection.SdpsStatus status1 = theSession.Parts.SetDisplay(part1, False, True, partLoadStatus1) workPart = theSession.Parts.Work displayPart = theSession.Parts.Display partLoadStatus1.Dispose() -------------------------------------- ------------------ gruss urs Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SMario Mitglied Konstrukteur/Designer
Beiträge: 114 Registriert: 31.03.2005 FSC Celsius Workstation CPU: Pentium 4 3.20GHz Speicher: 2.00GB RAM Grafik: Quadro FX 1400 Monitor: FSC P20-2 OS: Windows XP SP2 UG: NX4.0.2.2
|
erstellt am: 15. Jun. 2007 13:04 <-- editieren / zitieren --> Unities abgeben: Nur für Sirus
Hallo Sirus, Zitat: Original erstellt von Sirus: hallo marioich bin mir nicht ganz sicher? ich möchte lediglich des fixe "@DB/12345/A" in der zeile unten von dem aktuellen attributen im part abholen: 123456=DB_PART_NO A=DB_PART_REV im journal soll anstelle "@DB/12345/A" die attribute "@DB/DB_PART_NO/DB_PART_REV" aus dem aktiven part "gesogen" werde:
ahh OK, das habe ich falsch verstanden, du willst als Attribute auslesen, richtig? Das würde in etwa so für Die Partnummer funktionieren: theSession.Parts.Work.GetStringAttribute("DB_PART_NO") und so für die Revision: theSession.Parts.Work.GetStringAttribute("DB_PART_REV") Ich hoffe das war das was du meintest. Ciao Mario
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sirus Ehrenmitglied CAD Applikationsentwickler
Beiträge: 1564 Registriert: 03.06.2004
|
erstellt am: 15. Jun. 2007 13:12 <-- editieren / zitieren --> Unities abgeben:
hallo mario vielen dank für deine bemühungen, ich bin aber evtl. zu böd. wie unten, funkt es nicht? -------------------------- ' NX 4.0.2.2 ' Journal created by lehmannu on Fri Jun 15 08:06:19 2007 Westeuropäische Normalzeit ' Option Strict Off Imports System Imports NXOpen Module NXJournal Sub Main Dim theSession As Session = Session.GetSession() Dim workPart As Part = theSession.Parts.Work Dim displayPart As Part = theSession.Parts.Display ' ---------------------------------------------- ' Menü: Baugruppen->Context Control->Set Displayed Part ' ---------------------------------------------- Dim markId1 As Session.UndoMarkId markId1 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Make Displayed Part") theSession.Parts.Work.GetStringAttribute("DB_PART_NO") theSession.Parts.Work.GetStringAttribute("DB_PART_REV") Dim part1 As Part = CType(theSession.Parts.FindObject("@DB/DB_PART_NO/DB_PART_REV"), Part) Dim partLoadStatus1 As PartLoadStatus Dim status1 As PartCollection.SdpsStatus status1 = theSession.Parts.SetDisplay(part1, False, True, partLoadStatus1) workPart = theSession.Parts.Work displayPart = theSession.Parts.Display partLoadStatus1.Dispose() ' ---------------------------------------------- ' Menü: Werkzeuge->Journal->Stopp ' ---------------------------------------------- End Sub End Module ------------------ gruss urs Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SMario Mitglied Konstrukteur/Designer
Beiträge: 114 Registriert: 31.03.2005 FSC Celsius Workstation CPU: Pentium 4 3.20GHz Speicher: 2.00GB RAM Grafik: Quadro FX 1400 Monitor: FSC P20-2 OS: Windows XP SP2 UG: NX4.0.2.2
|
erstellt am: 15. Jun. 2007 13:57 <-- editieren / zitieren --> Unities abgeben: Nur für Sirus
Hallo Sirus, Zitat: Original erstellt von Sirus: hallo mariovielen dank für deine bemühungen, ich bin aber evtl. zu böd. wie unten, funkt es nicht?
naja, blöd nicht eher Anfängerfehler . Die holst zwar die Werte, benutzt diese aber nicht. Am besten benutzt du eine Variable bsplw. Dim MeineRevision As String = theSession.Parts.Work.GetStringAttribute("DB_PART_REV") und Dim MeinePartnummer As String = theSession.Parts.Work.GetStringAttribute("DB_PART_NO") und benutz nur noch diese (MeineRevision oder MeinePartnummer) um an die Werte zu kommen in den Funktionen wo du es benutzen willst. In deinem Fall also: Dim part1 As Part = CType(theSession.Parts.FindObject("@DB/MeinePartnummer/MeineRevision"), Part) Es müsste mit den oben genannten Änderungen schon funbktionieren, aber du solltest evtl. die Variablennamen noch etwas ändern.... Ciao und ein schönes Wochenende Mario
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sirus Ehrenmitglied CAD Applikationsentwickler
Beiträge: 1564 Registriert: 03.06.2004
|
erstellt am: 15. Jun. 2007 14:14 <-- editieren / zitieren --> Unities abgeben:
hallo mario wir sind noch nicht ganz am ziel... fehler in zeile 27: Dim part1 As Part = CType(theSession.Parts.FindObject("@DB/NO/REV"), Part) irgend etwas ist da noch falsch...(übrigens das ist über tce) danke für deine hilfe, auch ein schönes wochenende!!! ----------------------------- ' NX 4.0.2.2 ' Journal created by lehmannu on Fri Jun 15 08:06:19 2007 Westeuropäische Normalzeit ' Option Strict Off Imports System Imports NXOpen Module NXJournal Sub Main Dim theSession As Session = Session.GetSession() Dim workPart As Part = theSession.Parts.Work Dim displayPart As Part = theSession.Parts.Display ' ---------------------------------------------- ' Menü: Baugruppen->Context Control->Set Displayed Part ' ---------------------------------------------- Dim markId1 As Session.UndoMarkId markId1 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Make Displayed Part") Dim NO As String = theSession.Parts.Work.GetStringAttribute("DB_PART_NO") Dim REV As String = theSession.Parts.Work.GetStringAttribute("DB_PART_REV") Dim part1 As Part = CType(theSession.Parts.FindObject("@DB/NO/REV"), Part) Dim partLoadStatus1 As PartLoadStatus Dim status1 As PartCollection.SdpsStatus status1 = theSession.Parts.SetDisplay(part1, False, True, partLoadStatus1) workPart = theSession.Parts.Work displayPart = theSession.Parts.Display partLoadStatus1.Dispose() ' ---------------------------------------------- ' Menü: Werkzeuge->Journal->Stopp ' ---------------------------------------------- End Sub End Module ------------------ gruss urs Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SMario Mitglied Konstrukteur/Designer
Beiträge: 114 Registriert: 31.03.2005 FSC Celsius Workstation CPU: Pentium 4 3.20GHz Speicher: 2.00GB RAM Grafik: Quadro FX 1400 Monitor: FSC P20-2 OS: Windows XP SP2 UG: NX4.0.2.2
|
erstellt am: 15. Jun. 2007 14:30 <-- editieren / zitieren --> Unities abgeben: Nur für Sirus
Zitat: Original erstellt von Sirus: hallo mariowir sind noch nicht ganz am ziel... fehler in zeile 27: Dim part1 As Part = CType(theSession.Parts.FindObject("@DB/NO/REV"), Part)
Das ist genau die besprochene Änderung....
Zitat: irgend etwas ist da noch falsch...(übrigens das ist über tce) danke für deine hilfe, auch ein schönes wochenende!!!
....gibt es unter File -> Properties -> Attributes überhaupt die Attribute? Und welchen "Type" haben die? Die genannte Änderung funktioniert nur wenn der Type "String" ist. TCE benutze ich (noch) nicht, aber wir sind am migrieren, dann kann ich da auch genaueres sagen. Kann aber noch dauern.... Ciao und nochmals ein schönes Wochenende Mario
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SMario Mitglied Konstrukteur/Designer
Beiträge: 114 Registriert: 31.03.2005 FSC Celsius Workstation CPU: Pentium 4 3.20GHz Speicher: 2.00GB RAM Grafik: Quadro FX 1400 Monitor: FSC P20-2 OS: Windows XP SP2 UG: NX4.0.2.2
|
erstellt am: 15. Jun. 2007 14:34 <-- editieren / zitieren --> Unities abgeben: Nur für Sirus
|
SMario Mitglied Konstrukteur/Designer
Beiträge: 114 Registriert: 31.03.2005 FSC Celsius Workstation CPU: Pentium 4 3.20GHz Speicher: 2.00GB RAM Grafik: Quadro FX 1400 Monitor: FSC P20-2 OS: Windows XP SP2 UG: NX4.0.2.2
|
erstellt am: 15. Jun. 2007 14:43 <-- editieren / zitieren --> Unities abgeben: Nur für Sirus
Hallo Sirus, eben ist mir folgendes in der fehlerhaften Zeile aufgefallen: Dim part1 As Part = CType(theSession.Parts.FindObject("@DB/NO/REV"), Part) Alles was in doppelt Anführungszeichen (Gänsefüschen) gesetzt wird, ist normalerweise ein "String" und wird auch so interpretiert in der Zeile also wird nach @DB/NO/REV gesucht.
NO und REV sind aber Werte aus Funktionen und dürfen nicht in doppelten Anführungszeichen stehen, sonst werden sie als STring behandelt. Du müsstest deine Zeile etwas zerlegen (mit & kann man Werte aneinanderhängen): Dim part1 As Part = CType(theSession.Parts.FindObject("@DB/" & NO & "/" & REV"), Part) Was das @DB/ am Anfang bedeutet kann ich nicht sagen, aber jetzt müsste die resultierende Variable bsplw. so herauskommen @DB/12345/67890 ich hoffe mal, das war's. Ciao Mario
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sirus Ehrenmitglied CAD Applikationsentwickler
Beiträge: 1564 Registriert: 03.06.2004
|
erstellt am: 15. Jun. 2007 15:14 <-- editieren / zitieren --> Unities abgeben:
hallo mario vielen dank, ich bin leider schon im wochenende... schade, hätte das gerne noch heute getestet... werde deine ausführungen gleich am mo morgen testen. das wird sicher klappen. vielen dank für deine unterstützung!!!! wo lernt "mann" sowas überhaupt? auch noch einmal eins schönes und erholsames wochenende! ------------------ gruss urs Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SMario Mitglied Konstrukteur/Designer
Beiträge: 114 Registriert: 31.03.2005 FSC Celsius Workstation CPU: Pentium 4 3.20GHz Speicher: 2.00GB RAM Grafik: Quadro FX 1400 Monitor: FSC P20-2 OS: Windows XP SP2 UG: NX4.0.2.2
|
erstellt am: 15. Jun. 2007 15:34 <-- editieren / zitieren --> Unities abgeben: Nur für Sirus
Hallo Sirus, Zitat: Original erstellt von Sirus: hallo mariovielen dank, ich bin leider schon im wochenende... schade, hätte das gerne noch heute getestet... werde deine ausführungen gleich am mo morgen testen. das wird sicher klappen. vielen dank für deine unterstützung!!!! wo lernt "mann" sowas überhaupt? auch noch einmal eins schönes und erholsames wochenende!
ich habe HIERMIT angefangen in VB.NET (auf denen ja die Journals basieren) zu programmieren, weil ich eben auch die Journals erweitern wollte. Ich habe privat angefangen ein Programm geschrieben um mir es besser beizubringen, .... ....das war vor zwei Jahren (man wie die Zeit vergeht). Ciao Mario
[Diese Nachricht wurde von SMario am 15. Jun. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sirus Ehrenmitglied CAD Applikationsentwickler
Beiträge: 1564 Registriert: 03.06.2004
|
erstellt am: 18. Jun. 2007 10:25 <-- editieren / zitieren --> Unities abgeben:
hallo mario vielen dank für deine weiteren infos. leider funktioniert das journal immer noch nicht ganz, bin mir aber sicher, dass wir es bald schaffen werden. das ziel ist ja die zeile: Dim part1 As Part = CType(theSession.Parts.FindObject("@DB/12345678/A"), Part) und zwar muss nur das ("@DB/12345678/A") ersetzt werden durch die attribute. die nachfolgenden 2 zeiel zum abholen der attribute funktionieren scheinbar ja: (habe das mal native nachgespielt!) Dim NO As String = theSession.Parts.Work.GetStringAttribute("DB_PART_NO") Dim REV As String = theSession.Parts.Work.GetStringAttribute("DB_PART_REV") so wie auch native getestet habe müssen die 2 attribute in der " Ziel-zeile" ohne gänsefüsschen eingesetzt werden: Dim NO As String = theSession.Parts.Work.GetStringAttribute("DB_PART_NO") Dim part1 As Part = CType(theSession.Parts.FindObject(NO), Part)
also ist nur noch herauszufinden wie sich meine attribute mit dem "@DB" und "/" zusammensetzen? ("@DB/12345678/A") die gänsefüschen können weggelassen wwerden: (@DB/NO/REV) @DB = teamcenter-vorzeichen = @Datenbank die grosse farge ist also wie brimge ich den text in das () rein? wie kann ich also die attribute mit den zus. texten ine eine klammer rein-adieren? (@DB/NO/REV) wobei @DB und / zus. einfache zeichen sein können, wie kann ich das zusammensetzen? das kann ja auch vor der wichtigen ziel zeile stattfinden zB: -------------- Dim NO As String = theSession.Parts.Work.GetStringAttribute("DB_PART_NO") Dim REV As String = theSession.Parts.Work.GetStringAttribute("DB_PART_REV") NAME = "@DB"+"/"+"NO"+"/"+"REV" Dim part1 As Part = CType(theSession.Parts.FindObject(NAME), Part) ----------- ist sowas möglich`? ------------------ gruss urs Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SMario Mitglied Konstrukteur/Designer
Beiträge: 114 Registriert: 31.03.2005 FSC Celsius Workstation CPU: Pentium 4 3.20GHz Speicher: 2.00GB RAM Grafik: Quadro FX 1400 Monitor: FSC P20-2 OS: Windows XP SP2 UG: NX4.0.2.2
|
erstellt am: 18. Jun. 2007 11:07 <-- editieren / zitieren --> Unities abgeben: Nur für Sirus
Zitat: Original erstellt von Sirus: hallo mariovielen dank für deine weiteren infos. leider funktioniert das journal immer noch nicht ganz, bin mir aber sicher, dass wir es bald schaffen werden. das ziel ist ja die zeile: Dim part1 As Part = CType(theSession.Parts.FindObject("@DB/12345678/A"), Part) und zwar muss nur das ("@DB/12345678/A") ersetzt werden durch die attribute. die nachfolgenden 2 zeiel zum abholen der attribute funktionieren scheinbar ja: (habe das mal native nachgespielt!) Dim NO As String = theSession.Parts.Work.GetStringAttribute("DB_PART_NO") Dim REV As String = theSession.Parts.Work.GetStringAttribute("DB_PART_REV") so wie auch native getestet habe müssen die 2 attribute in der " Ziel-zeile" ohne gänsefüsschen eingesetzt werden: Dim NO As String = theSession.Parts.Work.GetStringAttribute("DB_PART_NO") Dim part1 As Part = CType(theSession.Parts.FindObject(NO), Part)
also ist nur noch herauszufinden wie sich meine attribute mit dem "@DB" und "/" zusammensetzen? ("@DB/12345678/A") die gänsefüschen können weggelassen wwerden: (@DB/NO/REV) @DB = teamcenter-vorzeichen = @Datenbank die grosse farge ist also wie brimge ich den text in das () rein? wie kann ich also die attribute mit den zus. texten ine eine klammer rein-adieren? (@DB/NO/REV)
(@DB/NO/REV) ist zumindets einen Versuch Wert. Du kannst auch "nur zum Testen der Variablen" einfach einen Messagebox ausgene lassen. Dazu mal irgendwo bsplw. System.Windows.Forms.MessageBox.Show("Hallo Welt") eintragen, bzw. "Hallo Welt" durch den String ersetzen, den du anzeigen lassen willst. SO komme ich zumindest meist schneller auf den Fehler....
Zitat:
wobei @DB und / zus. einfache zeichen sein können, wie kann ich das zusammensetzen?
Zusammensetzen von Variablen geht so: "Hallo" & "Welt" Das Beispiel würde "HalloWelt" ausgeben. Du kannst auch + zum zusammenfügen benutzen, aber es kann dann Probleme wenn du Integer-Variablen (Zahlen) hast, die werden dann nicht zusammengefügt sondern addiert.... Zitat: das kann ja auch vor der wichtigen ziel zeile stattfinden zB:-------------- Dim NO As String = theSession.Parts.Work.GetStringAttribute("DB_PART_NO") Dim REV As String = theSession.Parts.Work.GetStringAttribute("DB_PART_REV") NAME = "@DB"+"/"+"NO"+"/"+"REV" Dim part1 As Part = CType(theSession.Parts.FindObject(NAME), Part)
Ist "@DB" auch ein Attribut? Dann könnte man es genauso. wie die anderen Variablen holen.... Hier würde es sich anbieten eine MessageBox einzubauen, um zu sehen ob die Variable "NO" udn "REV" schon richtig rauskommen... Zusammengesetz würde deine Variable NAME vermutlich folgendes ausgeben: @DB/NO/REV da du alles in Gänsefüßchen gesetzt hast. Mit System.Windows.Forms.MessageBox.Show(NAME) kannst du es dir auch anzeigen lassen. Versuche mal die Variable NAME so zusammenzusetzen: "@DB"+"/" & NO & "/" & REV
Was zeigt die Messagebox an? Bei @DB bin ich ein bischen ratlos, im obigen Beispiel wird es bisher nur als String benutzt. Wenn es jedoch ein Attribut müsste man noch eine Variable (DB???) einfügen. Aber erstmal schauen, was bisherher in der MessageBox rauskommt.... Ciao Mario
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Fachplaner Heizung,- Klima,- Lüftung- und Sanitärtechnik (w|m|d) | Wir sind ein dynamisches Team in einer schnell wachsenden Unternehmensgruppe mit den Geschäftsfeldern Architektur, Ingenieurwesen, Energiewirtschaft und Gebäudetechnik. Mehr als 200 Mitarbeiter und über 13 Jahre Erfahrung innerhalb der technischen Gewerke machen das Unternehmen mit Sitz in Hamburg so erfolgreich. Ob die Planung oder der Bau von Neu- und Umbauprojekten, das Leistungsspektrum der KMLS-Gruppe ist breit gefächert.... | Anzeige ansehen | Projektmanagement |
|
Sirus Ehrenmitglied CAD Applikationsentwickler
Beiträge: 1564 Registriert: 03.06.2004
|
erstellt am: 18. Jun. 2007 11:54 <-- editieren / zitieren --> Unities abgeben:
hallo mario VIELEN DANK, ES KLAPPT!!!! ...und so habe ich es nun gemacht: --------------------------- Dim DB As String = ("@DB") Dim STRICH As String = ("/") Dim NO As String = theSession.Parts.Work.GetStringAttribute("DB_PART_NO") Dim REV As String = theSession.Parts.Work.GetStringAttribute("DB_PART_REV") Dim NAME As String = (DB+STRICH+NO+STRICH+REV) im part1 As Part = CType(theSession.Parts.FindObject(NAME), Part) ----------------------------------------------------------------- ich danke dir für deine hilfe und dein geduld! dies war nun mein erster teil, werde sicher in den nächsten stunden und tagen weiter fragen haben, und würde mich freuen deine hilfe weiterhin zu erhalten. noch einmal "VIELEN DANK"! ------------------ gruss urs Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SMario Mitglied Konstrukteur/Designer
Beiträge: 114 Registriert: 31.03.2005 FSC Celsius Workstation CPU: Pentium 4 3.20GHz Speicher: 2.00GB RAM Grafik: Quadro FX 1400 Monitor: FSC P20-2 OS: Windows XP SP2 UG: NX4.0.2.2
|
erstellt am: 18. Jun. 2007 11:58 <-- editieren / zitieren --> Unities abgeben: Nur für Sirus
|