Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX CAM Programmierung
  NX 4 NXPLOT unter VB .NET

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
Autor Thema:   NX 4 NXPLOT unter VB .NET (2123 mal gelesen)
MAhrens
Mitglied
Dipl.-Ing.


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

Beiträge: 528
Registriert: 17.11.2000

SAP,TC8.3,NX7.5,T4S

erstellt am: 31. Mrz. 2007 06:18    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 NXler,

ich habe lange versucht unter VB .NET Zeichnungen über das SDI PLOT Tool als TIIF, JPEG auszugeben. Und dieses in verschiedenen Druckprofilen. Leider waren für meine Anwendung die Beispiele auf der UGS Support Seite bzw. die dargestellten UFPLOT Funktionen unzureichend. So wird dort die Zeichnung als erstes als CGM Datei gespeichert und dann über den Aufruf einer UFPlot.ConvertFile Methode in ein TIFF Format oder ein JPEG Format konvertiert.

Aus meiner Sicht haben diese Funktionen aber Nachteile:

UFPlot.ConvertFile Methode
[Visual Basic]
Public Sub ConvertFile( _
  ByVal cgm_or_tiff_file_name As String, _
  ByVal output_format As Format, _
  ByVal output_file_name As String _
)

Hier kann ich zum Beispiel kein Druckprofil mitgeben.

UFPlot.Print Methode
[Visual Basic]
Public Sub Print( _
  ByVal drawing_sheet As Tag, _
  ByRef job_options As JobOptions, _
  ByVal job_name As String, _
  ByRef banner_options As BannerOptions, _
  ByVal printer As String, _
  ByVal profile As String, _
  ByVal num_copies As Integer _
)

Hier kann ich zwar den Drucker (z.B. TIFF) und das Profil direkt angeben. Aber leider kann ich hier keine Ausgabedatei angeben. Wenn ich den Druckvorgang mit DBMON.EXE aus dem NXPLOT\bin Verzeichnis überwache, wird häufig der "Druck" in das TIFF Format abgeschlossen und die Ausgabe erfolgt als OUTPUT Datei ohne Dateiendung. Hierbei handelt es sich aber je nach Druckauftrag um die jeweiligen gewünschten Ergebnisse in TIFF oder JPEG.

UFPlot.PrintFile Methode
[Visual Basic]
Public Sub PrintFile( _
  ByVal filename As String, _
  ByVal printer As String, _
  ByVal profile As String, _
  ByVal num_copies As Integer _
)

Auch mit dieser Methode bin ich nicht zum Ziel gekommen. So habe ich in einem anderen Beitrag den Hinweis auf NXPLOT.EXE erhalten, welches auch zum Teil die Druckübergabe an das SDI Tool vornimmt. Nach ein wenig herumbasteln, habe ich nun einen VB. Code Snip, mit dem ich gezielt eine Eingangs - CGM Datei in eine TIFF Datei unter Angabe des Druckprofils ausgeben kann. Im Vergleich zu den UFPLOT Funktionen wird das NXPLOT.EXE direkt mit Argumenten aufgerufen. So kann ich direkt TIFF Dateien in unterschiedlichen Auflösungen generieren, wenn die entsprechenden Druckprofile im SDI angelegt sind. Vielleicht habe ich ja auch nur was bei den obigen Funktionen übersehen. Oder aber vielleicht hilft es ja dem ein oder anderen, der auch stundenlang eine Export - Routine in VB. NET gebastelt hat.

Meine Lösung sieht in etwa so aus.

Imports System
Imports NXOpen
Imports NXOpen.Drawings
Imports NXOpen.UF
Imports System.IO
Imports System.Threading
Module NXJournal
...
Sub Main()
Dim ufs As UFSession
Dim plot As UFPlot
Dim plotJobOptions As UFPlot.JobOptions
Dim plotBannerOptions As UFPlot.BannerOptions
Dim cgmFileName As String
Dim tifFileName As String
Dim status As Integer
 
Dim NXSDIPlot As New System.Diagnostics.Process()
Dim NXSDIPlotEngine As String
Dim NXSDIArgument As String
Dim NXSDIArgInput As String
Dim NXSDIArgPrinter As String
Dim NXSDIArgFormat As String
Dim NXSDIArgProfile As String
Dim NXSDIArgOutput As String
Dim NXSDIArgCopies As String
Dim NXSDIArgGroupDir As String
Dim NXSDIArgJobsDir As String
Dim NXSDIArgHomeDir As String
...

' ----------------------------------------------
'  Zeichnung als CGM ausgeben
' ----------------------------------------------
plot.AskDefaultJobOptions(plotJobOptions)
plot.AskDefaultBannerOptions(plotBannerOptions)
plot.AskDefaultPrinterAndProfile(SDIPrinterDefault,SDIProfileDefault)
plot.SaveCgm(DWGSheet.Tag, plotJobOptions, plotJobName, plotBannerOptions, cgmFileName)
' ----------------------------------------------
'  Prüfe ob Zeichnungsausgabe als CGM erfolgt ist
' ----------------------------------------------
Status = -1
Do
Thread.Sleep(1500)
ufs.Cfi.AskFileExist(cgmFileName, status)
Loop Until status = 0
' ----------------------------------------------
'  Zeichnung als TIFF Datei plotten
'  Variante B: mit Direktaufruf von NXPLOT.exe
' ----------------------------------------------
NXSDIPlotEngine = "C:\Programme\UGS\NX 4.0\NXPLOT\nxplot.exe"
NXSDIArgInput = " -input=" & cgmFileName
NXSDIArgPrinter = " -printer=TIFF"
NXSDIArgFormat = " -format=TIFF"
NXSDIArgProfile = " -profile=DRETIFF"
NXSDIArgOutput = " -output=" & tifFileName
NXSDIArgCopies = " -copies=1"
NXSDIArgGroupDir = " -group_dir=S:\Team\Shared\NXPrinters\GroupA"
NXSDIArgJobsDir = " -jobs_dir=c:\temp\GroupA"
NXSDIArgHomeDir = " -home_dir=S:\Team\Shared\NXPrinters\GroupA"

NXSDIArgument = NXSDIArgInput _
& NXSDIArgFormat _
& NXSDIArgProfile _
& NXSDIArgOutput _
& NXSDIArgCopies _
& NXSDIArgGroupDir _
& NXSDIArgJobsDir _
& NXSDIArgHomeDir

NXSDIPlot.StartInfo.FileName = NXSDIPlotEngine
NXSDIPlot.StartInfo.Arguments = NXSDIArgument
NXSDIPlot.StartInfo.UseShellExecute = False
NXSDIPlot.StartInfo.RedirectStandardOutput = True
NXSDIPlot.StartInfo.CreateNoWindow = True
NXSDIPlot.Start()
NXSDIPlot.WaitForExit()
NXSDIPlot.close()
' ----------------------------------------------
' Prüfe ob Zeichnungsausgabe als TIFF erfolgt ist
' ----------------------------------------------
Status = -1
Do
Thread.Sleep(1500)
ufs.Cfi.AskFileExist(tifFileName, status)
Loop Until status = 0
...
End Sub
End Module

Die NXPLOT.EXE Argumente kann man auch abfragen, wenn man das Prog mal mit irgeneinem Argument aufruft z.B. NXPLOT.EXE -h. Werden keine Argumente angegeben, so startet direkt das GUI vom SDI Druckmodul.

Kann jemand mit den UFPLOT Funktionen bzw. mit dem SDI Module richtig umgehen?

Gruß

Matthias

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

Wede
Mitglied



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

Beiträge: 334
Registriert: 03.02.2004

NX 6.0.5.3
NX 8.0.2
Win7 SP1

erstellt am: 10. Apr. 2007 11: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 MAhrens 10 Unities + Antwort hilfreich

Hallo Mathias!

Hast dich glaub ich "verklickt"

Diese Frage wird im UG Programmierung Forum wahrscheinlich schneller beantwortet werden als in der CAM Programmierung.

Gruß
Wede

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)2020 CAD.de | Impressum | Datenschutz