Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Solid Edge
  Vb. Net PrintDft / sedraftx Problem

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 SolidEdge
Autor Thema:  Vb. Net PrintDft / sedraftx Problem (3028 mal gelesen)
Dark Solid-Worker
Mitglied
Ingenieur


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

Beiträge: 51
Registriert: 05.12.2003

ST5 64bit Classic MP7 / Win 7 64bit / Smap3D V9.6

erstellt am: 04. Mrz. 2010 16:29    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 Solid-Edger

Habe ein Programmiertechnisches Problem
Ich und VB6 oder VB6 und VB.Net vertragen sich nicht so 

Versuche Beispiel um ein EMF vom Clipboard auf einem Drucker auszudrucken.
Das untenstehende Beispiel ist von VB6 und funktioniert dort soweit.
Wie kriege ich das in Vb.Net 2008 hin. Alle meine Versuche scheiterten.
Ins Clipboard bring ich die Zeichnung noch, aber Drucken is nix.

Wäre um einen Tip, Codebeispiel sehr dankbar.

Freundliche Grüsse
Heinz


Private Sub PrintBtn_Click()

'This Sub is called when the "Print Active Sheet" button is clicked.
'Here, we get the control's active sheet to copy its enhanced
'metafile (EMF) into the system clipboard. We then read this EMF into
'a "Picture" object. Finally, we call our procedure, PrintDrawing, to print
'the picture.

Dim sts As Boolean
Dim PicObj As Picture
Dim AspectRatio As Double
Dim BnWPrint As Boolean


' First check if a draft file has been opened
If (SEDraftX1.ReadyState <> 4) Then
    MsgBox (" A SE draft file has to be open")
    Exit Sub
End If

'Show the hour-glass cursor
OldMousePointer = Form1.MousePointer
Form1.MousePointer = vbHourglass

AspectRatio = 1#
If (CheckBnWPrint.Value = 1) Then
  BnWPrint = True
Else
  BnWPrint = False
End If

Call SEDraftX1.ActiveSheet.CopyEMFToClipboard(AspectRatio, BnWPrint)

sts = Clipboard.GetFormat(vbCFMetafile)
If (sts = True) Then
    Set PicObj = Clipboard.GetData(vbCFMetafile)
    PrintDrawing PicObj, Printer, SEDraftX1.ActiveSheet.Name, AspectRatio
End If
   
'Restore the old cursor
Form1.MousePointer = OldMousePointer

End Sub


Sub PrintDrawing(PicObj As Picture, Device As Printer, Name As String, AspectRatio As Double)

'This Sub takes in a picture object and sends it to the printer object
'(2nd parameter) for printing.
'By using the width and height information of the picture and the printer
'device we fit the picture to the paper. Also, we set the paper orientation
'to landscape

Dim LeftMargin As Single
Dim TopMargin As Single
Dim PaperWidth As Single
Dim PaperHeight As Single
Dim PicWidth As Single
Dim PicHeight As Single
Dim PaperRatio As Double
Dim PicRatio As Double
Dim OldFontSize As Integer

'Set paper size to A4
'Device.PaperSize = vbPRPSA4  'UNCOMMENT AND MODIFY THIS LINE TO SET DESIRED PAPER SIZE

'Set paper orientation to landscape.
Device.Orientation = vbPRORLandscape

'Calculate the Left and Top margins (in TWIPS)
LeftMargin = 1000
TopMargin = LeftMargin

'Calculate the actual drawing area on the page (in TWIPS)
PaperWidth = Device.Width - LeftMargin * 2
PaperHeight = Device.Height - TopMargin * 2
   
'To maintain the aspect ratio re-calculate the paper width or height
PaperRatio = Device.Width / Device.Height
'PicRatio = PicObj.Width / PicObj.Height
PicRatio = AspectRatio
If (PaperRatio >= PicRatio) Then
    PaperWidth = PaperHeight * PicRatio
Else
    PaperHeight = PaperWidth / PicRatio
End If
   
'Convert Picture size from HIMETRIC to TWIPS
PicWidth = 567 * (PicObj.Width / 1000)
PicHeight = 567 * (PicObj.Height / 1000)

'Print the drawing
Device.PaintPicture PicObj, LeftMargin, TopMargin, PaperWidth, PaperHeight, 0, 0, PicWidth, PicHeight

Device.EndDoc

End Sub

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

wksyspro
Mitglied
Dipl.-Ing.


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

Beiträge: 200
Registriert: 19.11.2004

erstellt am: 07. Mrz. 2010 10:22    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 Dark Solid-Worker 10 Unities + Antwort hilfreich

Hallo,

ist leider nicht so einfach zu lösen (wie so oft). Denn das Enhanced Metafile wird durch die Solid Edge DraftX-Komponente wohl auf das Clipboard geschrieben, kann von dort auch problemlos in eine andere Anwendung, z.B. Word, eingefügt werden, ist aber leider unter .NET unsichtbar und deshalb auch erst einmal unzugänglich für die weitere Verarbeitung in einer Bitmap oder einem Image Steuerelement.
Unter folgendem Link findest Du eine Diskussion und einen möglichen Lösungsvorschlag für das Problem des Zugriffs auf eine im Clipboard liegende EMF-Grafik über .NET mit Hilfe der Win32 API.
Steht das MetaFile Objekt dann zur Verfügung, muss man allerdings, um dieses zu drucken,  gänzlich anders damit umgehen, als in dem oben dargestellten VB6-Code aus dem Solid Edge SDK Samples Verzeichnis. Viel Spaß!

------------------
Viele Grüße,

Wolfgang Kunert
www.wksyspro.de

[Diese Nachricht wurde von wksyspro am 07. Mrz. 2010 editiert.]

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

Dark Solid-Worker
Mitglied
Ingenieur


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

Beiträge: 51
Registriert: 05.12.2003

ST5 64bit Classic MP7 / Win 7 64bit / Smap3D V9.6

erstellt am: 12. Mrz. 2010 20:55    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 Wolfgang Kunert

Danke für die Antwort

Scheint wirklich nicht so einfach zu sein.
Habe jetzt einen anderen (besseren) weg gewählt.
Habe in SE ST2 eine neue API gefunden DraftDataApi
Speichere jetzt das EMF in eine Datei, und dann ist es mit VB.net ein Kinderspiel das weiter zu verwenden.
Und ja, musste mich in die VB.Net Druckerschnitstelle erst etwas einarbeiten. Ging aber recht gut.

Grüsse

Heinz


User’s Guide to the DraftDataAPI


Introduction

It is often useful to display CAD data using a light-weight viewing tool that allows access to part or assembly drawings for review or redlining.  Each Solid Edge Draft file contains viewer information that is stored as a compressed metafile for each sheet in the draft file.  This information is now accessible through an ATL-generated DLL that can be linked into Visual Basic or C/C++ programs.  This document describes the API provided by the DLL and sample Visual Basic code.


Section 1:  API Definition

The following draft file properties are available:
• Version information for the draft viewer library (not the draft file itself)
• Number of sheets in the draft document.  For each sheet in the draft file, the sheet’s name and the sheet’s metafile data is also available.
• Current active sheet index.
• Geometric version.
• Units of measurement used.

The following functions provide access to this information:


1. Open
2. GetViewerVersionNumber
3. GetSheetCount
4. GetCurrentSheetIndex
5. GetGeometricVersion
6. GetSheetName
7. GetUnitsUsed
8. GetUnitsDescription
9. SetMetafileName
10. GetEnhMetafile

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

wksyspro
Mitglied
Dipl.-Ing.


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

Beiträge: 200
Registriert: 19.11.2004

erstellt am: 13. Mrz. 2010 16:43    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 Dark Solid-Worker 10 Unities + Antwort hilfreich

Hallo Heinz,

danke für den Hinweis auf diese API - war mir bislang gar nicht aufgefallen.

Wie sieht es mit der Druckqualität aus? Ist diese bei z.B. DIN A0 Größe vergleichbar mit einer per Solid Edge Automation unter Verwendung der PrintOut-Methode erzeugten Ausgabe?

------------------
Viele Grüße,

Wolfgang Kunert
www.wksyspro.de

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

Dark Solid-Worker
Mitglied
Ingenieur


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

Beiträge: 51
Registriert: 05.12.2003

ST5 64bit Classic MP7 / Win 7 64bit / Smap3D V9.6

erstellt am: 24. Mrz. 2010 13:35    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

Druckqualität sieht sehr gut aus und läuft sehr schnell. (Habe nur bis A2 getestet, habe aber kein Unterschied zur Ausgabe mit Solid-Edge gefunden.)

Grüsse

Heinz

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