CGM extern konvertieren / NX
Lilu2Go 20. Mrz. 2017, 09:58

Hallo,

ich möchte .prt Dateien per batch (also extern) in .cgm konvertieren. So etwas machen wir z.B. schon mit dem jt Format für unsere 3D-Modelle.
Meine Frage also: geht das?

Grüßle Lilu 

mseufert 20. Mrz. 2017, 13:30

Zitat:
Original erstellt von Lilu2Go:

Meine Frage also: geht das?

Hallo Lilu2Go,

schau' Dir mal das Thema Journaling/NXOpen an. Da gibt's alles, was man zur Automatisierung wiederkehrender Aufgaben braucht.

Gruß, Michael

Lilu2Go 20. Mrz. 2017, 17:45

Hallo,

ja das habe ich ansatzweise schon gemacht. Nochmal zur Klarstellung:
Eine jt datei kann man ja mit einem externen Converter --> nx10\PVTRANS\ugtopv.exe erstellen. Eine cgm-Datei kann man aber nur über das "geöffnete" NX erzeugen. Liege ich da richtig? 

ThomasZwatz 20. Mrz. 2017, 19:48

Einen OOTB Translator wie für JT gibt's da IMHO nicht.

Beim CGM Export geht's wahrscheinlich um DrawingSheets (?), d.h. du wirst dabei angeben müssen, welche das sind / sein sollen.

Ein "geöffnetes NX" braucht man dazu nicht unbedingt, das kann man auch über ein Journal oder Programm machen lassen ( diese "öffnen" dann ein NX, aber ohne Grafik ).

Poseida 21. Mrz. 2017, 07:03

Hallo,

man kann ein Journal schreiben was die Übersetzung in CGM übernimmt und dann über die CMD mit run_journal.exe ausführen. Liegt in deiner NX Installation. http://ww3.cad.de/foren/ubb/Forum4/HTML/010341.shtml#000001

Lilu2Go 21. Mrz. 2017, 09:39

Guten Morgen,

danke für die Antworten. Mit den Infos werd ichs schon hinbekommen 

Lilu2Go 23. Mrz. 2017, 10:06

Hallo,

soweit funktioniert jetzt alles. Allerdings versuche ich gerade eine Variable an meine vb Datei zu übergeben (zu konvertierende Datei) und irgendwie krieg ich es nicht hin. Vielleicht kann mir nochmal einer helfen. Wie genau muss ich im Code sArgs(0) angeben?!

Das ist meine Kommandozeile:
C:\UGS\NX10\UGII\run_journal.exe C:\Users\krithast\Desktop\Neu\cgm_export_220317.vb -args "C:\Users\krithast\Desktop\Neu\710_2502_001.prt"


Und hier ist mein Journal:

Option Strict Off
Imports System
Imports NXOpen

Module NXJournal
Sub Main (ByVal args() As String)

Dim theSession As Session = Session.GetSession()

Dim basePart1 As BasePart
Dim partLoadStatus1 As PartLoadStatus
basePart1 = theSession.Parts.OpenBaseDisplay(sArgs(0), 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.Invisible, "Start")

Dim cGMBuilder1 As CGMBuilder
cGMBuilder1 = workPart.PlotManager.CreateCgmBuilder()

cGMBuilder1.Colors = CGMBuilder.Color.BlackOnWhite

cGMBuilder1.XDimension = 215.9

cGMBuilder1.YDimension = 279.4

cGMBuilder1.OutputText = NXOpen.CGMBuilder.OutputTextOption.Polylines

cGMBuilder1.VdcCoordinates = NXOpen.CGMBuilder.Vdc.Real

cGMBuilder1.RasterImages = True

cGMBuilder1.ImageResolution = NXOpen.CGMBuilder.ImageResolutionOption.High

theSession.SetUndoMarkName(markId1, "CGM exportieren-Dialogfenster")


Dim markId2 As Session.UndoMarkId
markId2 = theSession.SetUndoMark(Session.MarkVisibility.Invisible, "CGM exportieren")

Dim sheets1(0) As NXObject
Dim drawingSheet1 As Drawings.DrawingSheet = CType(workPart.DrawingSheets.FindObject("BLATT"), Drawings.DrawingSheet)

sheets1(0) = drawingSheet1
cGMBuilder1.SourceBuilder.SetSheets(sheets1)

Dim filenames1(0) As String
filenames1(0) = "C:\Users\krithast\Desktop\Neu\710_2502_001.cgm"
cGMBuilder1.SetFilenames(filenames1)

Dim nXObject1 As NXObject
nXObject1 = cGMBuilder1.Commit()

theSession.DeleteUndoMark(markId2, Nothing)

theSession.SetUndoMarkName(markId1, "CGM exportieren")

cGMBuilder1.Destroy()

theSession.DeleteUndoMark(markId1, Nothing)

theSession.Parts.CloseAll(BasePart.CloseModified.CloseModified, Nothing)

End Sub
End Module


Oder ok, ich hab eigentlich zwei Probleme  
Unsere Zeichnungsblätter heissen auch manchmal auch Drawing statt Blatt. Da dachte ich mir ich schreib:

.... CType(workPart.DrawingSheets.FindObject("*B*"), Drawings.DrawingSheet)...

Das nimmt er aber nicht an. Hat einer ne Idee wie ich das löse?

Vielen Dank Ihr seid alle suuuper! *schleim*

[Diese Nachricht wurde von Lilu2Go am 23. Mrz. 2017 editiert.]

Poseida 23. Mrz. 2017, 10:15

auf die schnelle würde ich sagen simpler Syntaxfehler  . Nimm mal das "s" vor "Args(0)" heraus in Zeile "basePart1 = theSession.Parts.OpenBaseDisplay(sArgs(0), partLoadStatus1)"

Lilu2Go 23. Mrz. 2017, 10:20

OOOHHH NEEEIN !!!!!!! 2 Stunden für die katz 

dann bleibt nur noch die letzte kleinigkeit mit den zeichnungsblättern

Poseida 23. Mrz. 2017, 10:52

Hast du keine Entwicklungsumgebung? Da kann man solche "Schreibfehler" sehr leicht erkennen.
Zu den Zeichnungsblättern: auf die schnelle kannst du ja probieren noch eine Zeile mit "drawingSheet1 = CType(workPart.DrawingSheets.FindObject("Drawing"), Drawings.DrawingSheet)" einzufügen.