Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  Attribute an den Part vergeben

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX
Autor Thema:  Attribute an den Part vergeben (2510 mal gelesen)
l.pesch
Mitglied



Sehen Sie sich das Profil von l.pesch an!   Senden Sie eine Private Message an l.pesch  Schreiben Sie einen Gästebucheintrag für l.pesch

Beiträge: 312
Registriert: 22.01.2004

erstellt am: 14. Nov. 2005 13:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo alle zusammen,

hab da wieder mal ein Problem, habe in meinem Produkt einen Part mit dem Namen "stift". Dem Part "stift"m öchte ich die Attribute vergeben "Durchmesser" "=6mm". Jetzt habe ich ein makro aufgezeichnet.
In diesem Produkt funktioniert es, aber sobald ich ein anderes Produkt benutze mit einem Part namens "stift" bring er mir eine Fehlermeldung.
Wie kann ich "HANDLE O-41" durch den Namen des Partnamens "stift" ersetzten. Damit das Programm einfach nach diesem Namen im Produkt sucht und ihm dann die Attribute vergibt.

Code:
Dim stift As String
funktioniert nicht.


Code:
Imports System
Imports NXOpen

Module NXJournal
Sub Main

Dim theSession As Session = Session.GetSession()
Dim assemblies_Component1 As Assemblies.Component = CType(theSession.Parts.Work.ComponentAssembly.FindObject("HANDLE O-41"), Assemblies.Component)

Dim partLoadStatus1 As PartLoadStatus
theSession.Parts.SetWorkComponent(assemblies_Component1, partLoadStatus1)

partLoadStatus1.Dispose()

Dim session_UndoMarkId1 As Session.UndoMarkId
session_UndoMarkId1 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Edit Properties")

theSession.Parts.Work.SetAttribute("Durchmesser", "=6mm")

Dim nullAssemblies_Component As Assemblies.Component = Nothing

Dim partLoadStatus2 As PartLoadStatus
theSession.Parts.SetWorkComponent(nullAssemblies_Component, partLoadStatus2)

partLoadStatus2.Dispose()

End Sub
End Module



Danke in voraus für eure hilfe.

Gruß l.pesch

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

l.pesch
Mitglied



Sehen Sie sich das Profil von l.pesch an!   Senden Sie eine Private Message an l.pesch  Schreiben Sie einen Gästebucheintrag für l.pesch

Beiträge: 312
Registriert: 22.01.2004

erstellt am: 17. Nov. 2005 10:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Keiner eine Idee,

wie man so etwas realisieren könnte?

Gruß l.pesch

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



Konstrukteur (m/w/d) Sondermaschinenbau
Leidenschaft für technologischen Fortschritt ausleben? Dabei sein, wenn Innovationen Wirklichkeit werden? Bei FERCHAU suchen wir Menschen mit dem gleichen Anspruch: als Expert:innen für unseren Kunden. Wir realisieren spannende Projekte für namhafte Kunden in allen Technologiebereichen und für alle Branchen und übernehmen Verantwortung für komplexe Entwicklungsprojekte. Als Berufseinsteiger:in unterstützt du deine Kolleg:innen mit neuen Ideen und festigst dein Wissen durch praktische Erfahrungen....
Anzeige ansehenKonstruktion, Visualisierung
MarckyMON
Mitglied
Programmierer


Sehen Sie sich das Profil von MarckyMON an!   Senden Sie eine Private Message an MarckyMON  Schreiben Sie einen Gästebucheintrag für MarckyMON

Beiträge: 35
Registriert: 07.07.2008

erstellt am: 08. Jul. 2008 22:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für l.pesch 10 Unities + Antwort hilfreich

Hi I.Pesch,

vor wenigen Tagen habe ich mich auch dieselbe Frage wie Du gestellt.

Heute hatte ich eine meogliche Loesung gefunden. Was ich von der NXOpen .NET API bzw. Journaling verstanden habe (und da bin ich auch frisch eingestiegen  ), habe ich fesgestellt, dass Strings wie "HANDLE O-41" von einem Journal ausgegeben werden. Diese Strings verweisen auf bestimmte Objekte (Compenents, usw), dessen IDs von jedem Journal-Ablauf ausgegeben werden. Deswegen ist es unmoeglich (soviel ich es verstanden habe) diese bestimmte ID im Voraus herauszubekommen).

Also, um dieses Problem umzugehen, und was ich in den letzten zwei Tagen als Loesungen kenne, ist folgendes:
* Durch die ganze Produkt laufen, bis dein Part bzw. Component gefunden wird, und die Attribute dann setzen, oder
* das Part durch eine Selektion auswaehlen und dann die Attribute setzen.

Wenn Du mit "Produkt" dasselbe wie "Assembly" meinst, dann hoffe ich , dass der folgende Code Dich weiterhilft (ist die Loesung 1 von der obere Liste):

Code:

Imports NXOpen
Imports NXOpen.Assemblies

Module SetComponentAttrib
    Sub Main()
        'Retrieve the current session / instance of NX
        Dim theSession As Session = Session.GetSession()
        'Retrieve the current work part (in this case, the root assembly)
        Dim workPart As Part = theSession.Parts.Work

        'Create an undo mark, in case the user wishes to undo the action
        Dim setAttribMark As Session.UndoMarkId
        setAttribMark = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Set Attribute")

        'Retrieve all child components / parts of the root assembly
        Try
            RetrieveChild(workPart.ComponentAssembly.RootComponent)
        Catch
        End Try

    End Sub

    Private Sub RetrieveChild(ByVal component As Component)
        'Retrieve all child components / part of the passed component / part
        Dim childcomponents() As Component = component.GetChildren()

        'Loop through all found child parts
        For index As Integer = 0 To childcomponents.Length - 1
            'HIER MUSST DU DEN NAMEN DEINES TEILS ANPASSEN SOWIE DEINE ATTRIBUTE
            'Sobald das Component/Teil mit dem Namen "stift" gefunden wird, dann setze die Attribute und danach die Schleife verlassen
            If childcomponents(index).Name = "stift" Then
                childcomponents(index).SetAttribute("Durchmesser", "6mm")
                Exit For
            End If
            'Retrieve all children for the current child component
            RetrieveChild(childcomponents(index))
        Next
    End Sub
End Module


Sorry fuer die englischen Kommentaren, meine Muttersprache ist Englisch. Ich hoffe mein Deutsch war gut genug, dass Du meine Antwort verstanden hast!! 

Uebrigens wenn die zweite Loesung auch von Dir gebraucht wird, dann sag einfach bescheid.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz