| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Übergabe eines Strings an einen Dialog (2489 mal gelesen)
|
Ulr1ch Mitglied Konstrukteur
Beiträge: 75 Registriert: 18.12.2003 IV9 Windows XPpro Pentium 4 2,4GHz 1,5GB RAM
|
erstellt am: 04. Jun. 2004 10:55 <-- editieren / zitieren --> Unities abgeben:
Hallo liebe Forumsmitglieder, ich bin gerade dabei, die Ausgabe von idws als PDF zu automatisieren. Das möchte ich über den Adobe PDF Drucker realisieren. Das Ansteuern des Druckers funktioniert bereits. Nach absenden des Druckauftrag erhalte ich ein Dialogfeld in das ich den Speicherpfad übergeben muss und auf OK klicken muss. Weis jemand wie das geht? Bei der Suche nach einer anderen Funktion bin ich bereits auf die entsprechenden Anweisungen gestoßen. Aber weil ich sie ja nicht gebraucht habe... und jetzt such ich schon ewig in der Hilfe und finde es nicht mehr. Bitte helft mir! Vielen dank im Vorraus Ulrich Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VOSTA1 Mitglied techn. Angestellter
Beiträge: 108 Registriert: 23.12.2002
|
erstellt am: 08. Jun. 2004 12:27 <-- editieren / zitieren --> Unities abgeben: Nur für Ulr1ch
Hallo, woher kommt das Dialogfenster? Schau doch mal in der Programmierungshilfe im Inventor unter FileDialog.ShowSave Method This sample demonstrates the use of the FileDialog object. The only requirement to run this sample is to have Autodesk Inventor open. Public Sub TestFileDialog() ' Create a new FileDialog object. Dim oFileDlg As FileDialog Call ThisApplication.CreateFileDialog(oFileDlg) ' Define the filter to select part and assembly files or any file. oFileDlg.Filter = "Inventor Files (*.iam;*.ipt)|*.iam;*.ipt|All Files (*.*)|*.*" ' Define the part and assembly files filter to be the default filter. oFileDlg.FilterIndex = 1 ' Set the title for the dialog. oFileDlg.DialogTitle = "Open File Test" ' Set the initial directory that will be displayed in the dialog. oFileDlg.InitialDirectory = "C:\Temp" ' Set the flag so an error will be raised if the user clicks the Cancel button. oFileDlg.CancelError = True ' Show the open dialog. The same procedure is also used for the Save dialog. ' The commented code can be used for the Save dialog. On Error Resume Next oFileDlg.ShowOpen ' oFileDlg.ShowSave ' If an error was raised, the user clicked cancel, otherwise display the filename. If Err Then MsgBox "User cancelled out of dialog" ElseIf oFileDlg.FileName <> "" Then MsgBox "File " & oFileDlg.FileName & " was selected." End If End Sub MFG VOSTA Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ulr1ch Mitglied Konstrukteur
Beiträge: 75 Registriert: 18.12.2003 IV9 Windows XPpro Pentium 4 2,4GHz 1,5GB RAM
|
erstellt am: 08. Jun. 2004 14:59 <-- editieren / zitieren --> Unities abgeben:
Hallo Vosta, danke erstmal für die Hinweise. Leider war es nicht genau das was ich gesucht habe. Zur Verdeutlichung hier der Code den ich schon habe: Code:
Public Sub export2PDF() Dim i As Integer Dim oApp As Application Set oApp = ThisApplication Dim oDoc As DrawingDocument Set oDoc = oApp.ActiveDocument 'Printer Ansteuern On Error Resume Next Dim oPrintMgr As drawingprintmanager Set oPrintMgr = ThisApplication.ActiveDocument.PrintManager If Err.Number Then MsgBox "Adobe PDF Drucker ist nicht installiert" Err.Clear Exit Sub End If oPrintMgr.Printer = "Adobe PDF" oPrintMgr.ColorMode = kPrintColorPalette oPrintMgr.ScaleMode = kPrintBestFitScale If oDoc.ActiveSheet.Size = kA4DrawingSheetSize Then oPrintMgr.PaperSize = kPaperSizeA4 Else oPrintMgr.PaperSize = kPaperSizeA3 End If If oDoc.ActiveSheet.Orientation = kPortraitPageOrientation Then oPrintMgr.Orientation = kPortraitOrientation Else oPrintMgr.Orientation = kLandscapeOrientation End If oPrintMgr.PrintRange = kPrintAllSheets oPrintMgr.SubmitPrint End Sub
Soweit funktioniert das alles ganz gut. Wenn ich das Makro ausführe, erscheint ein Dialogfeld, das mich auffordert, den Speicherort und -namen des PDF-Dokuments einzugeben. An dieses bereits bestehende Dialogfeld möchte eigendlich nur den Speicherpfad übergeben und mit OK bestätigen. Vieleicht kann mir jetzt jemand weiterhelfen. Herzlichen Dank Ulrich Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VOSTA1 Mitglied techn. Angestellter
Beiträge: 108 Registriert: 23.12.2002
|
erstellt am: 08. Jun. 2004 16:55 <-- editieren / zitieren --> Unities abgeben: Nur für Ulr1ch
|
yamaha Mitglied Konstrukteur
Beiträge: 374 Registriert: 19.05.2004 Autocad/Inventor 2022, Windows 10 Pro 64Bit
|
erstellt am: 08. Jun. 2004 19:27 <-- editieren / zitieren --> Unities abgeben: Nur für Ulr1ch
Hallo Ulrich, mal ein anderer Ansatz von mir. 1. Befehl sendkeys Geht wahrscheinlich nur wenn das Dialogfeld auch den Foxus erhält. Die Frage ist wahrscheinlich das der Zeitpunkt bzw. der Augenblick wenn es den Focus erhält nicht eindeutig ist 2. Wieso Adobe Acrobat? Ich habe für eine ähnliche Funktion das Programm Freepdf genommen www.shbox.de Vorteil: - kostenlos - PDF-Dateien erhalten automatisch den Namen der Inventordatei - Der Ausgabeort der PDF kann eingestellt werden Nachteil: - Die PDF´s sind etwas größer wie bei Acrobat, fällt aber glaube ich nur bei mehrseiteigen Dokumenten auf. (also Inventor kaum)
------------------ Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ulr1ch Mitglied Konstrukteur
Beiträge: 75 Registriert: 18.12.2003 IV9 Windows XPpro Pentium 4 2,4GHz 1,5GB RAM
|
erstellt am: 09. Jun. 2004 14:00 <-- editieren / zitieren --> Unities abgeben:
Hallo Yamaha, 1. den Befehl sendkeys habe ich schon probiert, funktionierte aber nicht. 2. Auch bei freePDF bekomme ich ein Eingabefeld, das den Dateinamen benötigt. ==> leider bin ich wieder nicht weiter. Ulrich Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
yamaha Mitglied Konstrukteur
Beiträge: 374 Registriert: 19.05.2004 Autocad/Inventor 2022, Windows 10 Pro 64Bit
|
erstellt am: 09. Jun. 2004 17:40 <-- editieren / zitieren --> Unities abgeben: Nur für Ulr1ch
Hallo Vosta, das mit der Dialogabfrage des Dateinamen kannst du bei Freepdf abschalten. siehe Einstellungen - Ablegen Dialog Ich arbeite mit der Version 2.11; es gibt mittlerweile ja auch die XP-Version, da weiß ich nicht genau ob die Möglichkeit noch gibt; kann mir aber nicht vorstellen das die abgeschaft wurde. Zum Format: Ist auch kein Problem Bei der Version 2.11 mußt du dir das Patch von der Freepdf Seite besorgen; bei der xp-Version ist das glaube ich sogar garnicht mehr nötig. Auf der Freepdf-Seite ist eigentlich alles sehr gut erklärt. Der Programmierer hat sich wirklich Mühe gegeben, wurde wohl aber schon sehr oft angemailt mit immer den gleichen Fragen. Ich vermute dies weil auf dem Button der zum Einstellungsdialog führt steht "Ja, ich habe das Handbuch gelesen" ------------------ Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
yamaha Mitglied Konstrukteur
Beiträge: 374 Registriert: 19.05.2004 Autocad/Inventor 2022, Windows 10 Pro 64Bit
|
erstellt am: 06. Sep. 2004 16:30 <-- editieren / zitieren --> Unities abgeben: Nur für Ulr1ch
Hallo zusammen, auf Wunsch stelle ich ein Beispiel für das Drucken von Zeichnungen mit Freepdf zur Verfügung: Sub PDF_drucken() Dim oPrintMgr As DrawingPrintManager For Each s In ThisApplication.ActiveDocument.Sheets s.Activate Start_Zeit = Timer Do While Timer < Start_Zeit + 2 Loop Set oPrintMgr = ThisApplication.ActiveDocument.PrintManager oPrintMgr.NumberOfCopies = 1 oPrintMgr.Printer = "FreePDF" PapierFormat = s.Size oPrintMgr.Orientation = kPortraitOrientation Select Case PapierFormat Case 9993 'A0 oPrintMgr.PaperSize = kPaperSizeA0 Case 9994 'A1 oPrintMgr.PaperSize = kPaperSizeA1 Case 9995 'A2 oPrintMgr.PaperSize = kPaperSizeA2 Case 9996 'A3 oPrintMgr.PaperSize = kPaperSizeA3 Case 9997 'A4 oPrintMgr.PaperSize = kPaperSizeA4 End Select Ausrichtung = s.Orientation Select Case Ausrichtung Case 10243 'Hochformat oPrintMgr.Orientation = kPortraitOrientation Case 10242 'Querformat oPrintMgr.Orientation = kLandscapeOrientation End Select Start_Zeit = Timer Do While Timer < Start_Zeit + 5 Loop ThisApplication.ActiveView.WindowState = kMaximize oPrintMgr.SubmitPrint Start_Zeit = Timer Do While Timer < Start_Zeit + 5 Loop Next End Sub
------------------ Gruß Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |