| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | | | | FACTORY OF THE FUTURE - Von der traditionellen Fertigung zur vernetzten Fabrik |
Autor
|
Thema: PhotoWorks API, hier: CallBack Variablenübergabe (1027 mal gelesen)
|
Ralf Tide Moderator -
Beiträge: 4978 Registriert: 06.08.2001 Sehr seltsame Dinge passiern <Klaus Lage - Toy Story> .-)
|
erstellt am: 06. Dez. 2004 09:01 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich weiß das es keine offiziell unterstütze API für Photoworks gibt , mit dem Macro-Recorder lassen sich aber ein paar Befehle aufzeichnen So z.B. das Rendern in eine Datei: Code: Sub main()Set swApp = Application.SldWorks Set Part = swApp.ActiveDoc result = swApp.CallBack("pworks@MiEval", 0, "RenderToFile Filename ""G:\EigeneDateien\Linse.bmp""") result = swApp.CallBack("pworks@MiEval", 0, "RenderToFile Size 320 240") result = swApp.CallBack("pworks@MiEval", 0, "RenderToFile Format bmp") result = swApp.CallBack("pworks@MiEval", 0, "RenderToFile Render") End Sub
Leider hab' ich's noch nicht geschafft den Dateinamen durch eine Variable zu ersetzen. Folgendes hab' ich schon erfolglos probiert: Code: PfadUndDateiName= "G:\Bilder\Linse.bmp" result = swApp.CallBack("pworks@MiEval", 0, "RenderToFile Filename ""PfadUndDateiName""")
Ergebnis ist schon eine Bilddatei, aber im Rootverzeichnis : G:\PfadUndDateiName ohne Dateiendung Also weiter... Das ersetzen der Hochkommas durch Chr$(34) Code: PfadUndDateiName= Chr$(34) & Chr$(34) & "G:\Bilder\Linse.bmp" Chr$(34) & Chr$(34) result = swApp.CallBack("pworks@MiEval", 0, "RenderToFile Filename PfadUndDateiName")
Ergebnis ist wie oben eine Bilddatei, aber im Rootverzeichnis : G:\PfadUndDateiName ohne Dateiendung (hat sich wohl was gemerkt ) Noch ein Versuch ... Den kompletten Ausdruck als Variable: Code: PfadUndDateiName= Chr$(34) & "RenderToFile Filename " & Chr$(34) & Chr$(34) & "G:\Bilder\Linse.bmp" & Chr$(34) Chr$(34) & Chr$(34) result = swApp.CallBack("pworks@MiEval", 0, PfadUndDateiName)
Gibt eine Fehlermeldung: Photoworks2: Error while evaluating macro: "RenderToFile Filename ""G:\Bilder\Linse.bmp""" Rendert dann aber wieder wie oben. Hat jemand von Euch Erfahrung mit callback-Aufrufen? Vielleicht noch irgendein anderer Tip den Dateinamen und Pfad innerhalb des Macros anzugeben? Ich dank' Euch schon mal fürs lesen und freu' mich mal auf zahlreiche Antworten Bis demnäx, Ralf ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)
Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 06. Dez. 2004 09:24 <-- editieren / zitieren --> Unities abgeben: Nur für Ralf Tide
Hallo Ralf, ich würde diese Variante versuchen: Code:
PfadUndDateiName= Chr$(34) & "G:\Bilder\Linse.bmp" & Chr$(34) result = swApp.CallBack("pworks@MiEval", 0, "RenderToFile Filename " & PfadUndDateiName)
Dadurch bekommt der Dateiname seine Extra-Gänsefüsschen (wobei ich mir nicht sicher bin, dass es das überhaupt braucht, wenn kein Leerzeichen im Pfad ist) und im Callback-Aufruf wird als dritter Parameter eben der String erst zusammengesetzt. Hab's allerdings nicht probiert, aber Theorie ist ja manchmal auch ganz schön Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ralf Tide Moderator -
Beiträge: 4978 Registriert: 06.08.2001 Sehr seltsame Dinge passiern <Klaus Lage - Toy Story> .-)
|
erstellt am: 06. Dez. 2004 09:57 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von StefanBerlitz: ...Hab's allerdings nicht probiert, aber Theorie ist ja manchmal auch ganz schön ...
Hallo Stefan, Theorie gut und schön In der Praxis funktioniert es sogar Ganz herzlichen Dank, Ralf ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ralf Tide Moderator -
Beiträge: 4978 Registriert: 06.08.2001 Sehr seltsame Dinge passiern <Klaus Lage - Toy Story> .-)
|
erstellt am: 06. Dez. 2004 10:30 <-- editieren / zitieren --> Unities abgeben:
Will noch jemand spielen? Anbei mal ein Gerüst Code: Dim swApp As Object Dim Part As Object Dim TeileName, TextAufMsgBox, MsgBoxTitel, Vorgabe, DateiName, A, Pfad, PfadUndDateiName As String Dim Start, Dauer, Ende As Variant Dim result As BooleanOption Explicit Sub main() Set swApp = CreateObject("SldWorks.Application") Set Part = swApp.ActiveDoc TeileName = Part.GetTitle 'Titel für Vorgabe holen TextAufMsgBox = "Ausgabedateiname angeben" A = "png" 'Ausgabeformat MsgBoxTitel = "Ausgabe als 320x240 Pixel " & A & "-Datei .-)" Vorgabe = TeileName DateiName = InputBox(TextAufMsgBox, MsgBoxTitel, Vorgabe) DateiName = DateiName & "." & A 'Endung hinzufügen Pfad = "C:\EigeneDateien\Eigene Bilder\" 'Existierendes Verzeichnis angeben ,-) PfadUndDateiName = Chr$(34) & Pfad & DateiName & Chr$(34) 'Dateiname und Pfad zusammensetzen
Start = Now 'Anfangszeitpunkt festhalten result = swApp.CallBack("pworks@MiEval", 0, "RenderToFile Filename " & PfadUndDateiName) 'Pfad und Dateiname an Photoworks result = swApp.CallBack("pworks@MiEval", 0, "RenderToFile Size 320 240") 'Auflösung result = swApp.CallBack("pworks@MiEval", 0, "RenderToFile Format " & A) 'Ausgabeformat result = swApp.CallBack("pworks@MiEval", 0, "RenderToFile Render") 'Startbefehl Ende = Now 'Endzeitpunkt festhalten Dauer = Ende - Start 'Dauer berechnen MsgBox "Rendern dauerte " & FormatDateTime(Dauer, 0), vbDefaultButton1, ".-)" 'Ausgabe der Zeit End Sub
BTW - Ich übernehm natürlich kein Haftung! (wenn z.B. die Festplatte ihre strukturelle Integrität verliert ) ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KMassler Ehrenmitglied V.I.P. h.c. CAD Admin + Mädchen für Alles...
Beiträge: 2675 Registriert: 06.11.2000 SolidWorks Start 1999 ** CSWP 01/2008 ** ------------------ Zuletzt beruflich: - SWX2020 SP5; - SAP/PLM+ECTR; - DriveWorks Pro; - Programmierung: VBA, aktuell Visual Studio 2022/VB.Net ------------------ ab 2024 (privat): Onshape und anderes
|
erstellt am: 06. Dez. 2004 12:45 <-- editieren / zitieren --> Unities abgeben: Nur für Ralf Tide
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|