Hallo,
ich habe folgendes Problem, und zwar hab ich ein Programm programmiert, dass aus unserem PDM System mehrere Zeichnungen
öffnet und automatisch ausdruckt. Teilweise funktioniert es und oft leider auch nicht.
Das Problem ist das Hochformat A4 Zeichnungen, auf Querformat A4 gedruckt werden mit einen weißen Rand links und rechts (A5)
Wenn eine A3 Zeichnung gedruckt wird, kommt sie auf A4 raus.
Können Sie mir da weiterhelfen?
ZEICHNUNGEN DRUCKEN
Public Sub Zeichnungdrucken(ByVal sDateipfad As String, ByVal Format As Long, ByVal oSwModel As SldWorks.ModelDoc2, ByVal swapp As SldWorks.SldWorks)
Dim bRet As Boolean = False
Dim retval As Boolean = False
Dim i As Integer = 0
'SolidWorks belegen
'Erstes Dokument belegen
'oSwModel = oSwApp.GetOpenDocument(sDateipfad)
'Mal schauen was alles offen ist und die Dokumente drucken
Do While Not oSwModel Is Nothing
'Debug.Print(oSwModel.GetPathName)
'Nur sichtbare Dokumente drucken
If oSwModel.Visible Then
'Dokument in SolidWorks aktivieren
swapp.ActivateDoc(oSwModel.GetTitle)
'Dokument auf den Standarddrucker Drucken
Dim Drucker As String = ""
'oSwModel.Extension.AppPageSetup.PrinterPaperSize = 8
'oSwModel.Extension.Document.IPageSetup.Orientation = 2
'oSwModel.Extension.Document.IPageSetup.PrinterPaperSize = 8
'oSwModel.Extension.Document.PrintOut2(1, 1, 1, False, Zeichnungen.PrinterA3, False, False, oSwModel.GetTitle.ToString)
Dim myPageSetup As Object
myPageSetup = oSwModel.Extension.AppPageSetup
myPageSetup.HighQuality = True
If Zeichnungen.Farbe_temp = "Schwarz u. Weiß" Then
myPageSetup = oSwModel.PageSetup
myPageSetup.DrawingColor = swPageSetupDrawingColor_e.swPageSetup_BlackAndWhite
Else
myPageSetup = oSwModel.PageSetup
myPageSetup.DrawingColor = swPageSetupDrawingColor_e.swPageSetup_AutomaticDrawingColor
End If
If Format = 7 Then
oSwModel.Extension.Document.Printer = Zeichnungen.PrinterA4
Select Case Zeichnungen.A4ausgabe_temp
Case "A4"
oSwModel.Extension.Document.IPageSetup.Orientation = 1
oSwModel.Extension.Document.IPageSetup.PrinterPaperSize = 9
Case "A3"
oSwModel.Extension.Document.IPageSetup.Orientation = 2
oSwModel.Extension.Document.IPageSetup.PrinterPaperSize = 8
oSwModel.Extension.Document.IPageSetup.ScaleToFit = True
Case "A2"
oSwModel.Extension.Document.IPageSetup.Orientation = 2
oSwModel.Extension.Document.IPageSetup.PrinterPaperSize = 272
oSwModel.Extension.Document.IPageSetup.ScaleToFit = True
Case "A1"
oSwModel.Extension.Document.IPageSetup.Orientation = 2
oSwModel.Extension.Document.IPageSetup.PrinterPaperSize = 271
oSwModel.Extension.Document.IPageSetup.ScaleToFit = True
Case "A0"
oSwModel.Extension.Document.IPageSetup.Orientation = 2
oSwModel.Extension.Document.IPageSetup.PrinterPaperSize = 270
oSwModel.Extension.Document.IPageSetup.ScaleToFit = True
End Select
Drucker = Zeichnungen.PrinterA4
End If
If Format = 8 Then
oSwModel.Extension.Document.Printer = Zeichnungen.PrinterA3
Select Case Zeichnungen.A3ausgabe_temp
Case "A4"
oSwModel.Extension.Document.IPageSetup.Orientation = 2
oSwModel.Extension.Document.IPageSetup.PrinterPaperSize = 9
oSwModel.Extension.Document.IPageSetup.ScaleToFit = True
Case "A3"
oSwModel.Extension.Document.IPageSetup.Orientation = 2
oSwModel.Extension.Document.IPageSetup.PrinterPaperSize = 8
Case "A2"
oSwModel.Extension.Document.IPageSetup.Orientation = 2
oSwModel.Extension.Document.IPageSetup.PrinterPaperSize = 272
oSwModel.Extension.Document.IPageSetup.ScaleToFit = True
Case "A1"
oSwModel.Extension.Document.IPageSetup.Orientation = 2
oSwModel.Extension.Document.IPageSetup.PrinterPaperSize = 271
oSwModel.Extension.Document.IPageSetup.ScaleToFit = True
Case "A0"
oSwModel.Extension.Document.IPageSetup.Orientation = 2
oSwModel.Extension.Document.IPageSetup.PrinterPaperSize = 270
oSwModel.Extension.Document.IPageSetup.ScaleToFit = True
End Select
Drucker = Zeichnungen.PrinterA3
End If
If Format = 9 Then
oSwModel.Extension.Document.Printer = Zeichnungen.PrinterA2
Select Case Zeichnungen.A2ausgabe_temp
Case "A4"
oSwModel.Extension.Document.IPageSetup.Orientation = 2
oSwModel.Extension.Document.IPageSetup.PrinterPaperSize = 9
oSwModel.Extension.Document.IPageSetup.ScaleToFit = True
Case "A3"
oSwModel.Extension.Document.IPageSetup.Orientation = 2
oSwModel.Extension.Document.IPageSetup.PrinterPaperSize = 8
oSwModel.Extension.Document.IPageSetup.ScaleToFit = True
Case "A2"
oSwModel.Extension.Document.IPageSetup.Orientation = 2
oSwModel.Extension.Document.IPageSetup.PrinterPaperSize = 272
Case "A1"
oSwModel.Extension.Document.IPageSetup.Orientation = 2
oSwModel.Extension.Document.IPageSetup.PrinterPaperSize = 271
oSwModel.Extension.Document.IPageSetup.ScaleToFit = True
Case "A0"
oSwModel.Extension.Document.IPageSetup.Orientation = 2
oSwModel.Extension.Document.IPageSetup.PrinterPaperSize = 270
oSwModel.Extension.Document.IPageSetup.ScaleToFit = True
End Select
Drucker = Zeichnungen.PrinterA2
End If
If Format = 10 Then
oSwModel.Extension.Document.Printer = Zeichnungen.PrinterA1
Select Case Zeichnungen.A1ausgabe_temp
Case "A4"
oSwModel.Extension.Document.IPageSetup.Orientation = 2
oSwModel.Extension.Document.IPageSetup.PrinterPaperSize = 9
oSwModel.Extension.Document.IPageSetup.ScaleToFit = True
Case "A3"
oSwModel.Extension.Document.IPageSetup.Orientation = 2
oSwModel.Extension.Document.IPageSetup.PrinterPaperSize = 8
oSwModel.Extension.Document.IPageSetup.ScaleToFit = True
Case "A2"
oSwModel.Extension.Document.IPageSetup.Orientation = 2
oSwModel.Extension.Document.IPageSetup.PrinterPaperSize = 272
oSwModel.Extension.Document.IPageSetup.ScaleToFit = True
Case "A1"
oSwModel.Extension.Document.IPageSetup.Orientation = 2
oSwModel.Extension.Document.IPageSetup.PrinterPaperSize = 271
Case "A0"
oSwModel.Extension.Document.IPageSetup.Orientation = 2
oSwModel.Extension.Document.IPageSetup.PrinterPaperSize = 270
oSwModel.Extension.Document.IPageSetup.ScaleToFit = True
End Select
Drucker = Zeichnungen.PrinterA1
End If
If Format = 11 Then
oSwModel.Extension.Document.Printer = Zeichnungen.PrinterA0
Select Case Zeichnungen.A0ausgabe_temp
Case "A4"
oSwModel.Extension.Document.IPageSetup.Orientation = 2
oSwModel.Extension.Document.IPageSetup.PrinterPaperSize = 9
oSwModel.Extension.Document.IPageSetup.ScaleToFit = True
Case "A3"
oSwModel.Extension.Document.IPageSetup.Orientation = 2
oSwModel.Extension.Document.IPageSetup.PrinterPaperSize = 8
oSwModel.Extension.Document.IPageSetup.ScaleToFit = True
Case "A2"
oSwModel.Extension.Document.IPageSetup.Orientation = 2
oSwModel.Extension.Document.IPageSetup.PrinterPaperSize = 272
oSwModel.Extension.Document.IPageSetup.ScaleToFit = True
Case "A1"
oSwModel.Extension.Document.IPageSetup.Orientation = 2
oSwModel.Extension.Document.IPageSetup.PrinterPaperSize = 271
oSwModel.Extension.Document.IPageSetup.ScaleToFit = True
Case "A0"
oSwModel.Extension.Document.IPageSetup.Orientation = 2
oSwModel.Extension.Document.IPageSetup.PrinterPaperSize = 270
End Select
Drucker = Zeichnungen.PrinterA0
End If
oSwModel.Extension.Document.IPageSetup.HighQuality = True
oSwModel.Extension.Document.PrintOut2(1, 1, 1, True, Drucker, False, False, oSwModel.GetTitle.ToString)
End If
'Nächstes Dokument
oSwModel = oSwModel.GetNext
Loop
End Sub
ZEICHNUNGEN AUSLESEN
Public Function Zeichnungsformat_auslesen(ByVal sDateipfad As String, ByVal oSwModel As SldWorks.ModelDoc2)
Dim oSwDrawing As SldWorks.DrawingDoc
Dim oSwCurrentSheet As SldWorks.Sheet
Dim oSheetPropertys As SheetPropertys
'Aktuelle Zeichnung
oSwDrawing = CType(oSwModel, SldWorks.DrawingDoc)
'Aktuelles Blatt ermitteln
oSwCurrentSheet = CType(oSwDrawing.GetCurrentSheet, _
SldWorks.Sheet)
'Blatteigenschaften ermitteln
oSheetPropertys = GetSheetPropertys(oSwCurrentSheet)
'Blattgröße
Return oSheetPropertys.PaperSize
End Function
Public Structure SheetPropertys
Dim sName As String
Dim sTemplateName As String
Dim ePaperSize As SwConst.swDwgPaperSizes_e
Dim eTemplateIn As SwConst.swDwgTemplates_e
Dim dScale1 As Double
Dim dScale2 As Double
Dim bFirstAngle As Boolean
Dim dWidth As Double
Dim dHeight As Double
''' <summary>
''' Name des Zeichnungsblatts
''' </summary>
Public Property Name() As String
Get
Return sName
End Get
Set(ByVal value As String)
sName = value
End Set
End Property
''' <summary>
''' Dateipfad der Zeichnungsblattvorlage (*.slddrt)
''' </summary>
Public Property TemplateName() As String
Get
Return sTemplateName
End Get
Set(ByVal value As String)
sTemplateName = value
End Set
End Property
''' <summary>
''' Format des Blatt, definiert in durch SwConst.swDwgPaperSizes_e
''' </summary>
Public Property PaperSize() As SwConst.swDwgPaperSizes_e
Get
Return ePaperSize
End Get
Set(ByVal value As SwConst.swDwgPaperSizes_e)
ePaperSize = value
End Set
End Property
''' <summary>
''' Format der Blattvorlage,
''' definiert in durch SwConst.swDwgTemplates_e
''' </summary>
Public Property TemplateIn() As SwConst.swDwgTemplates_e
Get
Return eTemplateIn
End Get
Set(ByVal value As SwConst.swDwgTemplates_e)
eTemplateIn = value
End Set
End Property
''' <summary>
''' Maßstabswert 1 des Blatts. Maßstab = Scale1:Scale2
''' </summary>
Public Property Scale1() As Double
Get
Return dScale1
End Get
Set(ByVal value As Double)
dScale1 = value
End Set
End Property
''' <summary>
''' Maßstabswert 2 des Blatts. Maßstab = Scale1:Scale2
''' </summary>
Public Property Scale2() As Double
Get
Return dScale2
End Get
Set(ByVal value As Double)
dScale2 = value
End Set
End Property
''' <summary>
''' Projektionstyp. Erster oder dritter Winkel
''' </summary>
Public Property FirstAngle() As Boolean
Get
Return bFirstAngle
End Get
Set(ByVal value As Boolean)
bFirstAngle = value
End Set
End Property
''' <summary>
''' Breite des Blatts in Meter
''' </summary>
Public Property Width() As Double
Get
Return dWidth
End Get
Set(ByVal value As Double)
dWidth = value
End Set
End Property
''' <summary>
''' Höhe des Blatts in Meter
''' </summary>
Public Property Height() As Double
Get
Return dHeight
End Get
Set(ByVal value As Double)
dHeight = value
End Set
End Property
End Structure
Public Function GetSheetPropertys( _
ByVal oSwSheet As SldWorks.Sheet) As SheetPropertys
Try
Dim oSheetPropertysSaveArray As Object
Dim dSheetPropertysArray() As Double
'Eigenes Strukturobjekt
Dim oSheetPropertys As New SheetPropertys
'Blatteigenschaften ermitteln
oSheetPropertysSaveArray = oSwSheet.GetProperties
'SaveArray umwandeln und ...
dSheetPropertysArray = CType( _
oSheetPropertysSaveArray, Double())
'... in die eigene Strukur übertragen
oSheetPropertys.PaperSize = CType( _
dSheetPropertysArray(0), SwConst.swDwgPaperSizes_e)
oSheetPropertys.TemplateIn = CType( _
dSheetPropertysArray(1), SwConst.swDwgTemplates_e)
oSheetPropertys.Scale1 = dSheetPropertysArray(2)
oSheetPropertys.Scale2 = dSheetPropertysArray(3)
oSheetPropertys.FirstAngle = _
CBool(dSheetPropertysArray(4))
oSheetPropertys.Width = dSheetPropertysArray(5)
oSheetPropertys.Height = dSheetPropertysArray(6)
'Allgemeine Blattinformationen ermitteln
'und in die Strukur ablegen
oSheetPropertys.Name = oSwSheet.GetName
oSheetPropertys.TemplateName = oSwSheet.GetTemplateName
'Befüllte Struktur zurückgeben
Return oSheetPropertys
Catch ex As Exception
Debug.Assert(False)
Trace.WriteLine("Fehler: Wo: " & _
ex.StackTrace & " Was: " & ex.Message)
Return Nothing
End Try
End Function
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP