Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  VB Bezugskoordinatensystem verschieben

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:  VB Bezugskoordinatensystem verschieben (2373 mal gelesen)
little_ug
Mitglied
CAX/PDM Admin / PM


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

Beiträge: 389
Registriert: 20.03.2003

erstellt am: 03. Dez. 2008 08:17    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 Zusammen habe folgendes Problem.
Möchte ein / alle Bezugskoordinatensysteme auf einen bestimmten Layer schieben.

Auszug aus dem Programm:

'Datum-Ksys Datums auf Layer 60 verschieben
        For Each obj As DisplayableObject In WP.Datums
            If Not obj.IsBlanked AndAlso WP.Layers.GetState(obj.Layer) <> Layer.State.Hidden Then
                objArray(0) = obj
                WP.Layers.MoveObjects(60, objArray)
            End If
        Next
'Datum-Ksys  Punkte auf Layer 60 verschieben
        For Each obj As DisplayableObject In WP.Points
            If Not obj.IsBlanked AndAlso WP.Layers.GetState(obj.Layer) <> Layer.State.Hidden Then
                objArray(0) = obj
                WP.Layers.MoveObjects(60, objArray)
            End If
        Next

Ich habe vorher schon alle anderen Ebenen und Punkte rausgefiltert.

Jetzt bleibt mit aber immer noch ein Csys liegen welches ich interaktiv nicht greifen kann und ich habe auch noch keine Möglichkeit gefunden dies im VB zu finden

Ideen?

Danke,

Michael

------------------
Gruß

Michael

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

Overcast
Mitglied



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

Beiträge: 111
Registriert: 21.12.2005

.

erstellt am: 04. Dez. 2008 12:40    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 little_ug 10 Unities + Antwort hilfreich

Hm, vermutlich ist es ein "Datum Coordinate System".
Die DatumCollection beinhaltet halt nur Datums (Plane, Axis).
Die CoordinateSystemCollection beinhaltet CoordinateSystems.

Try this:

Code:

Option Strict Off
Imports System
Imports NXOpen

Module NXJournal
Sub Main

Dim theSession As Session = Session.GetSession()
Dim WP as Part = theSession.Parts.Work
Dim objArray(0) As NXObject

'Datum-Ksys Datums auf Layer 60 verschieben
        For Each obj As DisplayableObject In WP.Datums
            If Not obj.IsBlanked AndAlso WP.Layers.GetState(obj.Layer) <> Layer.State.Hidden Then
                objArray(0) = obj
                WP.Layers.MoveObjects(60, objArray)
            End If
        Next

'Datum-Ksys  Punkte auf Layer 60 verschieben
        For Each obj As DisplayableObject In WP.Points
            If Not obj.IsBlanked AndAlso WP.Layers.GetState(obj.Layer) <> Layer.State.Hidden Then
                objArray(0) = obj
                WP.Layers.MoveObjects(60, objArray)
            End If
        Next

'Datum-Ksys Csys auf Layer 60 verschieben
        For Each obj As DisplayableObject In WP.CoordinateSystems
            If Not obj.IsBlanked AndAlso WP.Layers.GetState(obj.Layer) <> Layer.State.Hidden Then
                objArray(0) = obj
                WP.Layers.MoveObjects(60, objArray)
            End If
        Next

End Sub
End Module


Cheers

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

little_ug
Mitglied
CAX/PDM Admin / PM


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

Beiträge: 389
Registriert: 20.03.2003

erstellt am: 04. Dez. 2008 14:52    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

Super, vielen Dank hat funktioniert,
jetzt habe ich noch eine kleine... Frage

Ich verschiebe hier auch die Skizzenkurven diese sollen nicht einfach auf einen Layer sonder der user muss diesen eingeben:

'Skizzen auf Layer 40 verschieben
        For Each obj As DisplayableObject In WP.Sketches
            If Not obj.IsBlanked AndAlso WP.Layers.GetState(obj.Layer) <> Layer.State.Hidden Then
                objArray(0) = obj
Dim LayNum1 As String
LayNum1 = NXInputBox.GetInputString("Enter Layer Number, start with 40", "Enter Layer Number", LayNum1)
                WP.Layers.MoveObjects(LayNum1, objArray)
            End If
        Next

Ich habe jetzt das Problem das erstens irgendwie die jeweilige Skizze hervorheben muss und zweitens dass immer die 2. skizze die er findet zwei mal abgefragt wird.

Hat irgendwer eine Idee?

------------------
Gruß

Michael

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

Overcast
Mitglied



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

Beiträge: 111
Registriert: 21.12.2005

.

erstellt am: 04. Dez. 2008 15:16    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 little_ug 10 Unities + Antwort hilfreich

Keine Ahnung, ob es hilft, aber mir sind 2 Sachen aufgefallen:


Zitat:
Dim LayNum1 As String
...
WP.Layers.MoveObjects(LayNum1, objArray)

1)
Die Doku beschreibt den 1. Parameter für MoveObjects() als Integer, nicht als String!
Hier hilft die VB Funktion Val():
Dim LayNum2 = Val(LayNum1)

2)
In der NX6 Doku ist die Funktion MoveObjects() bereits obsolete.
In der NX5 Doku heisst es ebenfalls bereits "Deprecated in NX5"
Würde daher eher MoveDisplayableObjects() verwenden.

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

little_ug
Mitglied
CAX/PDM Admin / PM


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

Beiträge: 389
Registriert: 20.03.2003

erstellt am: 04. Dez. 2008 15:30    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

Vielen Dank,

hilft leider nicht.

------------------
Gruß

Michael

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

Overcast
Mitglied



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

Beiträge: 111
Registriert: 21.12.2005

.

erstellt am: 04. Dez. 2008 15:45    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 little_ug 10 Unities + Antwort hilfreich

Keine Ahnung, was bei Dir passiert oder was das Problem nun genau ist....?!

Der folgende Code arbeitet bei mir völlig korrekt:

Code:
Option Strict Off
Imports System
Imports NXOpen
Imports NXOpenUI

Module NXJournal
Sub Main

  Dim theSession As Session = Session.GetSession()
  Dim WP as Part = theSession.Parts.Work
  Dim objArray(0) As DisplayableObject
  Dim strLayer As String

  strLayer = NXInputBox.GetInputString("Enter a layer for Sketches:")
  For Each obj As DisplayableObject In WP.Sketches
    If Not obj.IsBlanked AndAlso WP.Layers.GetState(obj.Layer) <> Layer.State.Hidden Then
      objArray(0) = obj
      WP.Layers.MoveDisplayableObjects(Val(strLayer), objArray)
    End If
  Next

End Sub
End Module


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

little_ug
Mitglied
CAX/PDM Admin / PM


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

Beiträge: 389
Registriert: 20.03.2003

erstellt am: 05. Dez. 2008 10:41    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

Hi Overcast,

das Ziehl ist dass er für jeden Sketch den Layer abfrägt ihn highlighted und dann verschiebt. Bei dir verschiebt er ja alle auf einen Layer.

------------------
Gruß

Michael

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

little_ug
Mitglied
CAX/PDM Admin / PM


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

Beiträge: 389
Registriert: 20.03.2003

NX 7.5.4.4 mp1
Creo2 M020
TC UA 9.1.1.2

erstellt am: 05. Dez. 2008 13:03    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

Hi, mein Problem mit der doppelten abfrage habe ich hinbekommen, du hattest recht mit dem Integer....
Hast du eine Idee wie ich jetzt das Object (den Sketch) vor dem verschieben hervorheben kann?

Danke,

------------------
Gruß

Michael

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

little_ug
Mitglied
CAX/PDM Admin / PM


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

Beiträge: 389
Registriert: 20.03.2003

erstellt am: 05. Dez. 2008 18:16    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 habs jetzt hinbekommen, vielen Dank.

------------------
Gruß

Michael

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

Tobehoschi
Mitglied


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

Beiträge: 8
Registriert: 01.10.2007

erstellt am: 01. Apr. 2009 19: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 Nur für little_ug 10 Unities + Antwort hilfreich

Hallo Michael,

freut mich, dass Du eine Lösung gefunden hast. Ich habe das gleiche /ähnliche Problem wie Du mit den Skizzen. Ich möchte ein VB-Programm erstellen, welches nach Auswahl eines Volumenkörpers diesen auf einen angegebenen Layer veschiebt. AUf GETAC habe ich nur Beispielprogramme gefunden, wo alle Objekte eines Typs (alle Volumen, alle Skizzen, alle Bezugsobjekte) auf einen Layer schiebt. Wie kann ich nur das ausgewählte Objekt (Volumen)auf einen Layer legen. Kannst Du mir einen Tip geben, oder sogar Dein Beispiel (den entsprechenden Bereich) posten.

Vielen Dank schon einmal für Deine / eure Hilfe,
Sascha

------------------
hoschi

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

little_ug
Mitglied
CAX/PDM Admin / PM


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

Beiträge: 389
Registriert: 20.03.2003

NX 7.5.4.4 mp1
Creo2 M020
TC UA 9.1.1.2

erstellt am: 02. Apr. 2009 08:19    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 Hoschi,
ein vorschlag den ich mal auf die Schnelle aus schnipseln zusammenkopiert habe...
Also nicht sauber Programmiert aber es geht:-)
Los gehts:


Option Strict Off
Imports System
Imports NXOpen
Imports NXOpen.UF
Imports NXOpen.UI
Imports NXOpen.Utilities


Module NXJournal
Sub Main

Dim theSession As Session = Session.GetSession()
Dim ufs As UFSession = UFSession.GetUFSession()
Dim workPart As Part = theSession.Parts.Work
Dim workView As NXOpen.Tag = NXOpen.Tag.Null

Dim displayPart As Part = theSession.Parts.Display

        If theSession.Parts.Work Is Nothing Then
            Windows.Forms.MessageBox.Show("Kein Teil geladen! - No Part Loaded!")
            Exit Sub
        End If


theSession.SetUndoMark( Session.MarkVisibility.Visible, "Layer Verschieben")

' Definition für Layer
Dim Layern as Integer = 5

' SelectBody
Dim objects1() As NXObject
SelectFaces(objects1)

' Copy NXObject array to DisplayableObject array
Dim objects2(objects1.Length-1) As DisplayableObject
Dim ii as Integer = 0

For Each obj as NXObject in objects1
objects2(ii) = objects1(ii)
ii = ii+1
Next

workPart.Layers.MoveDisplayableObjects(Layern, objects2)

End Sub

  ' ----------------------------------------------
  '  sub to select faces
  ' ----------------------------------------------

  Sub SelectFaces(ByRef selectedObjects As NXObject())

      Dim ui As UI = NXOpen.UI.GetUI

      Dim message As String = "Select Body"
      Dim title As String = "Selection"

      Dim scope As Selection.SelectionScope = Selection.SelectionScope.WorkPart
      Dim keepHighlighted As Boolean = False
      Dim includeFeatures As Boolean = False
      Dim response As Selection.Response

      Dim selectionAction As Selection.SelectionAction = _
          Selection.SelectionAction.ClearAndEnableSpecific

      Dim selectionMask_array(1) As Selection.MaskTriple
      With selectionMask_array(0)
        .Type = UFConstants.UF_solid_type
        '.Subtype = 0
        '.SolidBodySubtype = UFConstants.UF_UI_SEL_FEATURE_ANY_FACE
      End With

      response = ui.SelectionManager.SelectObjects(message, title, scope, _
                                      selectionAction, includeFeatures, _
                                  keepHighlighted, selectionMask_array, _
                                                    selectedObjects)

      If response = Selection.Response.Cancel Or response = _
                    Selection.Response.Back Then
        Return
      End If

  End Sub

      Public Function GetUnloadOption(ByVal dummy As String) As Integer

      Return Session.LibraryUnloadOption.Immediately

  End Function
 
End Module


Hier Kannst du deinen Ziellayer definieren:
Dim Layern as Integer = 5


------------------
Gruß

Michael

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



Digitalisierungsexperte (w/m/d) für datenbankgestützte Planungsprozesse
Als führendes europäisches Beratungs-, Planungs- und Projektmanagementunternehmen bietet Drees & Sommer Lösungen für erfolgreiche Gebäude, renditestarke Portfolios, leistungsfähige Infrastruktur und lebenswerte Städte. In interdisziplinären Teams unterstützen unsere über 5.100 Mitarbeiterinnen und Mitarbeiter an 59 internationalen Standorten Auftraggeber unterschiedlichster Branchen. Bei uns gestalten Sie Ihren individuellen Karriereweg aktiv mit....
Anzeige ansehenMaschinenbau
Tobehoschi
Mitglied


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

Beiträge: 8
Registriert: 01.10.2007

erstellt am: 07. Apr. 2009 14:37    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 little_ug 10 Unities + Antwort hilfreich

Hallo Michael,

vielen Dank für Deine Hilfe. Ich habe mit Deinem Beispiel mein Programm fertig machen könnnen (auch wenn nicht mit der NX4).

Schönen Gruß,
Sascha

------------------
hoschi

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