| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| Innovationstag mit SolidCAM und Plogmann bei HEDELIUS in Meppen |
Autor
|
Thema: gleichzeitiges Rendern mehrer Konfigurationen? (961 mal gelesen)
|
TomDerXte Mitglied technischer Zeicner
Beiträge: 8 Registriert: 15.01.2007
|
erstellt am: 15. Jan. 2007 14:35 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich wollte mal nachfragen ob es irgendwie möglich ist, in einer Baugruppe mehrere Konfigurationen auf ein mal Rendern zu lassen. Oder das SolidWorks/PhotoWorks die Aufträge nacheinander abarbeitet. Dann könnte ich den Rechner über Nacht arbeiten lassen. Evtl. über Zusatzprogramm oder so. Ich benötige die Bilder für einen Katalog und das Rendern eines Bildes dauert 45-60 Minuten. Bei (im Momment noch) 60 Bildern hält mich das einfach zu lange auf. Ich arbeite auf SolidWorks 2007 SP2.1 Schonmal danke für die Mühen Tom 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: 15. Jan. 2007 15:26 <-- editieren / zitieren --> Unities abgeben: Nur für TomDerXte
|
TomDerXte Mitglied technischer Zeicner
Beiträge: 8 Registriert: 15.01.2007
|
erstellt am: 16. Jan. 2007 14:21 <-- editieren / zitieren --> Unities abgeben:
Danke für den Tipp, leider behersche ich kein VBA. Allrdings hat mich das auf die Makro-Funktionen von SolidWorks aufmerksam gemacht und das mal probiert. Ich habe also auf Aufzeichnen geklickt, zwei Baugruppen gerendert und gespeichert und abschliesend nochmal die Konfiguration gewechselt. Hab das Makro gespeichert, mir mal angesehen und mit etwas gesunden Menschenverstand sogar verstanden. Bin mir auch sicher das ich das Makro manuell auf alle Konfigurationen ausdehnen kann (nicht schön, aber funktionell). ABER... Als ich das (noch unveränderte) Makro nochmal gestartet habe (um zu sehen ob es auch wirklich läuft)habe ich folgende Fehlermeldung erhalten: Fehler beim Kmpilieren: Benutzerdefinierter Typ nicht definiert und die folgende Zeile (die 11te Textzeile) wurde makiert: Dim pwPhotoWorks As PhotoWorks.PhotoWorks Da ich wie schon gesagt kein VBA behersche stehe ich jetzt ziemlich am Schlauch und hoffe das mir jemand sagen kann was da schiefgelaufen ist. So, jetzt noch das Makro und nochmal ein dickes Danke für Eure mühen. Gruß Tom --------------------------------------------------------------------Dim swApp As Object Dim Part As Object Dim SelMgr As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Dim Feature As Object Sub main() Set swApp = Application.SldWorks Set Part = swApp.ActiveDoc Set SelMgr = Part.SelectionManager Dim pwPhotoWorks As PhotoWorks.PhotoWorks Set pwPhotoWorks = swApp.GetAddInObject("PhotoWorks.PhotoWorks") Dim pwOpt As PhotoWorks.PwOptions Set pwOpt = pwPhotoWorks.PwOptions Part.ShowConfiguration "Konfig1" pwPhotoWorks.RenderFilename = "C:\Konfig1.bmp" pwPhotoWorks.RenderFileHeight = 4500 pwPhotoWorks.RenderFileWidth = 6000 pwPhotoWorks.RenderFileFormat = PW_RenderFileFormat.pwFileFormatBMP pwPhotoWorks.RenderFileUnits = PW_RenderFileUnits.pwCentimeters pwPhotoWorks.RenderFileDotsPerUnit = 600 pwPhotoWorks.RenderToFile (True) boolstatus = Part.Extension.SelectByID2("Konfig2", "CONFIGURATIONS", 0, 0, 0, False, 0, Nothing, 0) Part.ShowNamedView2 "*Isometrisch", 7 Part.ShowConfiguration "Konfig2" pwPhotoWorks.RenderFilename = "C:\Konfig2.bmp" pwPhotoWorks.RenderFileHeight = 4500 pwPhotoWorks.RenderFileWidth = 6000 pwPhotoWorks.RenderFileFormat = PW_RenderFileFormat.pwFileFormatBMP pwPhotoWorks.RenderFileUnits = PW_RenderFileUnits.pwCentimeters pwPhotoWorks.RenderFileDotsPerUnit = 600 pwPhotoWorks.RenderToFile (True) boolstatus = Part.Extension.SelectByID2("Konfig3", "CONFIGURATIONS", 0, 0, 0, False, 0, Nothing, 0) Part.ShowNamedView2 "*Isometrisch", 7 Part.ShowConfiguration "7Konfig3" End Sub 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: 20. Jan. 2007 13:12 <-- editieren / zitieren --> Unities abgeben: Nur für TomDerXte
Hallo Tom, passiert bei mir auch ( SolidWorks2007SP2). Würde ich auf alle Fälle beim Reseller melden! Ich habe festgestellt, das beim aufzeichnen des Macros der Verweis auf die Typenbibliothek (mit SolidWorks/PhotoWorks2007) nicht gesetzt wird. Selbst wenn man den Verweis von Hand (im VBA-Editor-Fenster Extras->Verweise) mit Durchsuchen anlegt (ist nicht mal in der Liste), funktioniert es auch nicht vollständig. Du findest die photoworks.tlb im Installationsverzeichnis\Photoworks. Wenn Du noch eine 2006er PhotoWorks.tlb hast, nimm diese. Damit funktioniert es. Mit SolidWorks 2006 SP4 funktioniert das noch ohne Probleme: Code: Option Explicit Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim vConfNameArr As Variant Dim sConfigName As String Dim sRenderFileName As String Dim i As Long Dim bShowConfig As Boolean Dim bRebuild As Boolean Dim bRet As Boolean Dim pwPhotoWorks As PhotoWorks.PhotoWorks Dim pwOpt As PhotoWorks.PwOptionsSub main() Set swApp = CreateObject("SldWorks.Application") Set swModel = swApp.ActiveDoc Set pwPhotoWorks = swApp.GetAddInObject("PhotoWorks.PhotoWorks") Set pwOpt = pwPhotoWorks.PwOptions pwPhotoWorks.RenderFileFormat = PW_RenderFileFormat.pwFileFormatTIF pwPhotoWorks.RenderFileUnits = PW_RenderFileUnits.pwPixels pwPhotoWorks.RenderFileHeight = 450 pwPhotoWorks.RenderFileWidth = 600 vConfNameArr = swModel.GetConfigurationNames For i = 0 To UBound(vConfNameArr) sConfigName = vConfNameArr(i) bShowConfig = swModel.ShowConfiguration2(sConfigName) bRebuild = swModel.ForceRebuild3(False) swModel.GraphicsRedraw2 sRenderFileName = "C:\temp\Konfig" & i & ".tif" pwPhotoWorks.RenderFilename = sRenderFileName pwPhotoWorks.RenderToFile (True) Next i End Sub
HTH & bis demnäx, RalfPS: übernehme keine Haftung schon gar nicht für eventuelle Schäden ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TomDerXte Mitglied technischer Zeicner
Beiträge: 8 Registriert: 15.01.2007
|
erstellt am: 25. Jan. 2007 11:15 <-- editieren / zitieren --> Unities abgeben:
Danke für die Hinweise. Die Datei ist leider nicht im SolidWorks 2006-Format vorhanden (wurde erst mit 2007 erstellt). Von meinen Reseller hör ich nur das die keine VBA-Probleme entgegennehmen. Und nachdem ich stinkig geworden bin (iss ja schließlich ne Standartfunktion von SW) und sich dann doch jemand der Sache angenommen hat, fällt der Bearbeiter für unbestimmte Zeit wegen Krankheit aus. Hab heute mit nem Bekannten geredet der hier im Forum sehr aktiv ist. Leider konnte er mir nur 2 Namen nennen. Deinen als Experten in Sachen Rendern. Und gismo als Experten in Sachen VBA.
Werd gismo mal ne PM Schicken, vielleicht weiß er ja wie man das lösen kann. Bis dann mal Tom
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gismo Mitglied SWX Support
Beiträge: 1047 Registriert: 05.03.2001 HP Z Book17 G5; 32GB Ram; Quadro P4200 WIN10 Pro; Alle SWX ;)
|
erstellt am: 25. Jan. 2007 12:57 <-- editieren / zitieren --> Unities abgeben: Nur für TomDerXte
|
Thomas Liebezeit Mitglied Dipl.-Ing. Maschinenbau, CSWP
Beiträge: 114 Registriert: 01.07.2005 2007 SP5.0 2008 SP4.0 2009 SP3.0
|
erstellt am: 25. Jan. 2007 14:45 <-- editieren / zitieren --> Unities abgeben: Nur für TomDerXte
Hallo Tom, habe die PhotoWorks.tlb von 2007 eingebunden und den Code ein wenig verändert. Anstatt die Konstantennamen zu benutzen habe ich den Wert benutzt. Das Makro funktioniert für Baugruppen und für Einzelteile. Habe noch ein par Komentare hinzugefügt. Option Explicit Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim vConfNameArr As Variant Dim sConfigName As String Dim sRenderFileName As String Dim i As Long Dim bShowConfig As Boolean Dim bRebuild As Boolean Dim bRet As Boolean Dim pwPhotoWorks As PhotoWorks.PhotoWorks Dim pwOpt As PhotoWorks.PwOptions Sub main() Set swApp = CreateObject("SldWorks.Application") Set swModel = swApp.ActiveDoc Set pwPhotoWorks = swApp.GetAddInObject("PhotoWorks.PhotoWorks") Set pwOpt = pwPhotoWorks.PwOptions 'Rendereigenschaften pwPhotoWorks.RenderFileFormat = 5 '5 fuer tif pwPhotoWorks.RenderFileUnits = 0 '0 fuer Pixels pwPhotoWorks.RenderFileHeight = 450 pwPhotoWorks.RenderFileWidth = 600 vConfNameArr = swModel.GetConfigurationNames 'Alle Konfis durchlaufen For i = 0 To UBound(vConfNameArr) sConfigName = vConfNameArr(i) bShowConfig = swModel.ShowConfiguration2(sConfigName) bRebuild = swModel.ForceRebuild3(False) swModel.GraphicsRedraw2 'Pfad für Bilder 'Achtung: schon vorhandene Bilder mit gleichem Dateinamen 'werden ohne Rückfrage überschrieben!!! 'Pfad muß vorhanden sein, sonst kein Rendern sRenderFileName = "D:\Schrott\Konfig" & i & ".tif" pwPhotoWorks.RenderFilename = sRenderFileName pwPhotoWorks.RenderToFile (True) Next i End Sub Ich hoffe es hilft Dir weiter. Grüße, Thomas
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 25. Jan. 2007 15:32 <-- editieren / zitieren --> Unities abgeben: Nur für TomDerXte
Wow, cool!!! Das funkt ja einwandfrei!!! Auch mit SWX 2006 SP5.1 Fehlt nur noch eine kleine Eingabemaske von Speicherort/Dateiname und Bildgrösse und es wäre perfekt! ------------------ SolidWorks is my friend... SolidWorks, frieeeend! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TomDerXte Mitglied technischer Zeicner
Beiträge: 8 Registriert: 15.01.2007
|
erstellt am: 26. Jan. 2007 13:17 <-- editieren / zitieren --> Unities abgeben:
|
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 26. Jan. 2007 13:52 <-- editieren / zitieren --> Unities abgeben: Nur für TomDerXte
Das Makro noch einmal mit einer kleiner "Verbesserung"! Es speichert die Bilder unter Dateiname_KonfigName.tif. Somit ist garaniert, dass nichts überschrieben werden kann, dass nicht sowieso schon den gleichen Namen hat. Viel Spass, wers gebrauchen kann. PS: Danke HenryV Nein, die Speicherorteingabemaske habe ich noch nicht integriert! ------------------ SolidWorks is my friend... SolidWorks, frieeeend! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Werkstudent im Bereich Maschinenbau / Maschinenentwicklung (m/w/d) | der führende Hersteller von Zangen für professionelle Anwender in aller Welt. Mit über 1.800 Beschäftigten in Wuppertal entwickeln und fertigen wir Lösungen für effektives, leichtes und sicheres Arbeiten. Wir sind seit 140 Jahren ein unabhängiges Familienunternehmen. Hohe Qualität und Leistungsfähigkeit, ständige Verbesserung und die Orientierung an menschlichen Werten sind Grundlagen unseres Handelns.... | Anzeige ansehen | Maschinenbau |
|
Ralf Tide Moderator -
Beiträge: 4978 Registriert: 06.08.2001 Sehr seltsame Dinge passiern <Klaus Lage - Toy Story> .-)
|
erstellt am: 28. Jan. 2007 08:23 <-- editieren / zitieren --> Unities abgeben: Nur für TomDerXte
Zitat: Original erstellt von G. Dawg: ...Es speichert die Bilder unter Dateiname_KonfigName.tif...
Hallo Gilbert, so hatte ich das zunächst auch angelegt Ich hatte aber ein Schweißteil mit Konfigurationen Code: ... sRenderFileName = "C:\temp\SWX_Render\" & filename & "_" & sConfigName & ".tif" ...
sorgt dafür das dann der Dateiname zu "teil1Standard<Wie bearbeitet>.tif" und "teil1Standard<Wie geschweißt>.tif" generiert wurde. Und da streikt Windows An dieser Stelle fängt dann das Echte programmieren an . Fehler abfangen, Formatierungen, User Interface (z.B. für Speicherort ) ...@Thomas: sehr schön, hätte ich nicht anders gemacht Beste Grüße, Ralf ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |