Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  Script to modify all NX files in a folder one by one

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:  Script to modify all NX files in a folder one by one (3349 mal gelesen)
Lenno
Mitglied
Naval Architect

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

Beiträge: 4
Registriert: 18.03.2008

Rhino 4.0
Autocad Mechanical 2007
Unigraphics NX5
NAPA<P>HP xw6400 workstation
Intel Xeon
5120 @ 2 GHZ
4 Gig Ram

erstellt am: 27. Mai. 2009 11:44    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,

I have to change the color of a large number of JT files in a folder. I recorded a journal in NX5 to change the color, but I can't find a way to let NX open all files in the folder one by one.  Now it only opens Part1, but I like to create some kind of a batch proces.

Any ideas? Replies in German are fine.

Thanks...

' NX 5.0.4.1
' Journal created by llu on Wed May 27 11:11:17 2009 W. Europe Daylight Time
'
Option Strict Off
Imports System
Imports NXOpen

Module NXJournal
Sub Main

Dim theSession As Session = Session.GetSession()
' ----------------------------------------------
'  Menu: File->Open...
' ----------------------------------------------
Dim basePart1 As BasePart
Dim partLoadStatus1 As PartLoadStatus
basePart1 = theSession.Parts.OpenBaseDisplay("C:\Documents and Settings\llu\Desktop\FOLDER1\FILE1.jt", partLoadStatus1)

Dim workPart As Part = theSession.Parts.Work

Dim displayPart As Part = theSession.Parts.Display

partLoadStatus1.Dispose()
Dim markId1 As Session.UndoMarkId
markId1 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Enter Gateway")

Dim markId2 As Session.UndoMarkId
markId2 = theSession.SetUndoMark(Session.MarkVisibility.Invisible, "Open Part Navigator")

Dim markId3 As Session.UndoMarkId
markId3 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Enter Gateway")

' ----------------------------------------------
'  Menu: View->Operation->Fit
' ----------------------------------------------
workPart.ModelingViews.WorkView.Fit()

' ----------------------------------------------
'  Menu: Edit->Object Display...
' ----------------------------------------------
Dim markId4 As Session.UndoMarkId
markId4 = theSession.SetUndoMark(Session.MarkVisibility.Invisible, "Start")

theSession.SetUndoMarkName(markId4, "Class Selection")

' Refer to the sample NXOpen application, Selection for "Select All" alternatives.
Dim markId5 As Session.UndoMarkId
markId5 = theSession.SetUndoMark(Session.MarkVisibility.Invisible, "Class Selection")

theSession.DeleteUndoMark(markId5, Nothing)

theSession.DeleteUndoMark(markId4, Nothing)

' ----------------------------------------------
'  Dialog Begin Edit Object Display
' ----------------------------------------------
Dim markId6 As Session.UndoMarkId
markId6 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Edit Object Display")

Dim displayModification1 As DisplayModification
displayModification1 = theSession.DisplayManager.NewDisplayModification()

displayModification1.ApplyToAllFaces = False

displayModification1.NewColor = 128

Dim objects1(0) As DisplayableObject
Dim facetedBody1 As Facet.FacetedBody = CType(workPart.FacetedBodies.FindObject("HANDLE R-96"), Facet.FacetedBody)

objects1(0) = facetedBody1
displayModification1.Apply(objects1)

displayModification1.Dispose()
' ----------------------------------------------
'  Menu: File->Save
' ----------------------------------------------
Dim partSaveStatus1 As PartSaveStatus
partSaveStatus1 = workPart.Save(BasePart.SaveComponents.True, BasePart.CloseAfterSave.False)

partSaveStatus1.Dispose()
Dim partCloseResponses1 As PartCloseResponses
partCloseResponses1 = theSession.Parts.NewPartCloseResponses()

workPart.Close(BasePart.CloseWholeTree.False, BasePart.CloseModified.UseResponses, partCloseResponses1)

workPart = Nothing
displayPart = Nothing
partCloseResponses1.Dispose()
' ----------------------------------------------
'  Menu: File->Open...
' ----------------------------------------------
' ----------------------------------------------
'  Menu: Tools->Journal->Stop
' ----------------------------------------------

End Sub
End Module

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

mseufert
Moderator
Freiberuflicher CAD/CAM Ingenieur


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

Beiträge: 2624
Registriert: 18.10.2005

HP Z420
WIN7 64 Win 10
UG NX6-1980
3D Printer Prusa MK2 S

erstellt am: 27. Mai. 2009 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 Lenno 10 Unities + Antwort hilfreich


batch_cleanup.txt

 
Hi Lenno,

appended you can find a sample to process all parts in a directory. With that, there are two further steps to perform: First, replace the actions that are done for each part with your own ones. Second, for modifying the display of an Object you'll need an ID of it - or any other way to find out, which object's display should be changed. May be for all faceted bodies in the part?

Michael

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

Lenno
Mitglied
Naval Architect

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

Beiträge: 4
Registriert: 18.03.2008

Rhino 4.0
Autocad Mechanical 2007
Unigraphics NX5
NAPA<P>HP xw6400 workstation
Intel Xeon
5120 @ 2 GHZ
4 Gig Ram

erstellt am: 28. Mai. 2009 09: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

Thanks a lot mseufert, I'm gonna try it!

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

Lenno
Mitglied
Naval Architect

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

Beiträge: 4
Registriert: 18.03.2008

Rhino 4.0
Autocad Mechanical 2007
Unigraphics NX5
NAPA<P>HP xw6400 workstation
Intel Xeon
5120 @ 2 GHZ
4 Gig Ram

erstellt am: 28. Mai. 2009 09:57    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

Hmm..

I modified the code, but there is problem with the difinition of the facetedbody1

' NX 5.0.4.1
' Journal created by llu on Wed May 27 11:11:17 2009 W. Europe Daylight Time
'
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

Dim basePart1 As BasePart

Dim partLoadStatus1 As PartLoadStatus

Dim markId1 As Session.UndoMarkId

Dim markId2 As Session.UndoMarkId

Dim markId3 As Session.UndoMarkId

Dim markId4 As Session.UndoMarkId

Dim markId5 As Session.UndoMarkId

Dim markId6 As Session.UndoMarkId

Dim objects1(0) As DisplayableObject

Dim facetedBody1 As Facet.FacetedBody = CType(workPart.FacetedBodies.FindObject("HANDLE R-96"), Facet.FacetedBody)

Dim displayModification1 As DisplayModification

Dim partSaveStatus1 As PartSaveStatus

Dim partCloseResponses1 As PartCloseResponses


For Each fileName As String In My.Computer.FileSystem.GetFiles(C:\Documents and Settings\llu\Desktop\BLK10\BLK10)


' ----------------------------------------------
'  Menu: File->Open...
' ----------------------------------------------


basePart1 = theSession.Parts.OpenBaseDisplay(fileName, partLoadStatus1)


partLoadStatus1.Dispose()


markId1 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Enter Gateway")


markId2 = theSession.SetUndoMark(Session.MarkVisibility.Invisible, "Open Part Navigator")


markId3 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Enter Gateway")

' ----------------------------------------------
'  Menu: View->Operation->Fit
' ----------------------------------------------
workPart.ModelingViews.WorkView.Fit()


' ----------------------------------------------
'  Menu: Edit->Object Display...
' ----------------------------------------------

markId4 = theSession.SetUndoMark(Session.MarkVisibility.Invisible, "Start")

theSession.SetUndoMarkName(markId4, "Class Selection")

' Refer to the sample NXOpen application, Selection for "Select All" alternatives.

markId5 = theSession.SetUndoMark(Session.MarkVisibility.Invisible, "Class Selection")

theSession.DeleteUndoMark(markId5, Nothing)

theSession.DeleteUndoMark(markId4, Nothing)


' ----------------------------------------------
'  Dialog Begin Edit Object Display
' ----------------------------------------------

markId6 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Edit Object Display")

displayModification1 = theSession.DisplayManager.NewDisplayModification()

displayModification1.ApplyToAllFaces = False

displayModification1.NewColor = 128


objects1(0) = facetedBody1
displayModification1.Apply(objects1)

displayModification1.Dispose()
' ----------------------------------------------
'  Menu: File->Save
' ----------------------------------------------

partSaveStatus1 = workPart.Save(BasePart.SaveComponents.True, BasePart.CloseAfterSave.False)

partSaveStatus1.Dispose()

partCloseResponses1 = theSession.Parts.NewPartCloseResponses()

workPart.Close(BasePart.CloseWholeTree.False, BasePart.CloseModified.UseResponses, partCloseResponses1)

workPart = Nothing
displayPart = Nothing
partCloseResponses1.Dispose()

Next


End Sub
End Module

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

Lenno
Mitglied
Naval Architect

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

Beiträge: 4
Registriert: 18.03.2008

Rhino 4.0
Autocad Mechanical 2007
Unigraphics NX5
NAPA<P>HP xw6400 workstation
Intel Xeon
5120 @ 2 GHZ
4 Gig Ram

erstellt am: 28. Mai. 2009 10:31    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

Its working... !!

Thanx

' NX 5.0.6.3
' Journal created by cwei on Thu May 28 10:21:44 2009 Westeuropäische Normalzeit
'
Option Strict Off
Imports System
Imports NXOpen

Module NXJournal
Sub Main

For Each fileName As String In My.Computer.FileSystem.GetFiles("Y:\NX\Makro Change Color\JTs")

Dim theSession As Session = Session.GetSession()
' ----------------------------------------------
'  Menu: File->Open...
' ----------------------------------------------
Dim basePart1 As BasePart
Dim partLoadStatus1 As PartLoadStatus
basePart1 = theSession.Parts.OpenBaseDisplay(fileName, partLoadStatus1)

Dim workPart As Part = theSession.Parts.Work

Dim displayPart As Part = theSession.Parts.Display

partLoadStatus1.Dispose()

' ----------------------------------------------
'  Dialog Begin Edit Object Display
' ----------------------------------------------
Dim displayModification1 As DisplayModification
displayModification1 = theSession.DisplayManager.NewDisplayModification()

displayModification1.ApplyToAllFaces = False

displayModification1.NewColor = 150

Dim objects1(0) As DisplayableObject
Dim facetedBody1 As Facet.FacetedBody = CType(workPart.FacetedBodies.FindObject("HANDLE R-96"), Facet.FacetedBody)

objects1(0) = facetedBody1
displayModification1.Apply(objects1)

displayModification1.Dispose()
' ----------------------------------------------
'  Menu: File->Save
' ----------------------------------------------
Dim partSaveStatus1 As PartSaveStatus
partSaveStatus1 = workPart.Save(BasePart.SaveComponents.True, BasePart.CloseAfterSave.False)

partSaveStatus1.Dispose()
Dim partCloseResponses1 As PartCloseResponses
partCloseResponses1 = theSession.Parts.NewPartCloseResponses()

workPart.Close(BasePart.CloseWholeTree.False, BasePart.CloseModified.UseResponses, partCloseResponses1)

workPart = Nothing
displayPart = Nothing
partCloseResponses1.Dispose()
' ----------------------------------------------
'  Menu: Tools->Journal->Stop
' ----------------------------------------------
Next
End Sub

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



Projektleiter Photovoltaik Sonder-/ Großprojekte (m/w/d) Techniker, Meister, Bau- / Elektroingenieur

Die Centroplan GmbH mit Sitz in Geilenkirchen (Nähe Aachen) ist ein international aufgestelltes Unternehmen, welches sich mit der Planung- und Umsetzung von Projekten im Bereich der Erneuerbaren Energien (Photovoltaik, Speicher, E-Mobility) beschäftigt. Das Unternehmen hat sich dabei auf gewerblich genutzte Gebäude (Handel und Logistik) spezialisiert und ist seit 2007 erfolgreich international tätig....

Anzeige ansehenProjektmanagement
mseufert
Moderator
Freiberuflicher CAD/CAM Ingenieur


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

Beiträge: 2624
Registriert: 18.10.2005

HP Z420
WIN7 64 Win 10
UG NX6-1980
3D Printer Prusa MK2 S

erstellt am: 28. Mai. 2009 19:15    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 Lenno 10 Unities + Antwort hilfreich

Hi Lenno,

fine, and also a little surprise. In your code, the entry workPart.FacetedBodies.FindObject("HANDLE R-96") looks for an object called "HANDLE R-96". This must be the same in all of the parts for the program to work. Seems you're a lucky man. 

Regards, Michael

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