| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| Cloud Computing mit 3DEXPERIENCE® und Abaqus |
Autor
|
Thema: Frage zu Tiff-Makro (1066 mal gelesen)
|
zbir Mitglied Technischer Zeichner
Beiträge: 8 Registriert: 08.01.2001
|
erstellt am: 26. Feb. 2001 10:28 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich habe vor einiger Zeit schwierigkeiten gehabt, das aktuelle bild als Tiff-Vormat über ein Makro abzuspeichern. Dieses Problem wurde dank dem Solid Works Forum gelöst. Das momentane Makro sieht so aus: Dim swApp As Object
Dim Part As Object Dim boolstatus As Boolean Dim longstatus As Long Dim Annotation As Object Dim Gtol As Object Dim DatumTag As Object Dim FeatureData As Object Dim Feature As Object Dim Component As Object dim Pfad_str as string dim Dateiname_str as string dim msgtxt as string Sub main() Set swApp = CreateObject ("SldWorks.Application") Set modeldoc = swApp.ActiveDoc Pfad_str =inputbox ("Pfad?","Pfadeingabe","m:\ek\Tiff-SW\") Dateiname_str= inputbox ("Dateiname ohne Endung?","Dateinameingabe","test") Datei_str=Pfad_str & Dateiname_str &".tif" modeldoc.SaveAs2 Datei_str,0, TRUE, FALSE msgtxt="Datei wurde unter " & Datei_str & " gespeichert!" msgbox msgtxt End Sub Meine Frage: Ist es möglich vielleicht anstelle der Textvorgabe: "Test", den aktuellen Zeichnungsnamen als Auswahl anzuzeigen?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stefanie Dieterich Mitglied Vertrieb
Beiträge: 173 Registriert: 18.08.2000
|
erstellt am: 26. Feb. 2001 11:52 <-- editieren / zitieren --> Unities abgeben: Nur für zbir
Den Namen des aktiven Dokuments erhält man durch DocTitle = ModelDoc.GetTitle Die Variable DocTitle läßt sich dann in der InputBox verwenden. DocTitle enthält den Named des Dokuments, so wie er in der Kopfzeile des SWX-Fensters angezeigt wird. Das bedeutet, daß je nach Windowseinstellung die Dateiendung enthalten oder nicht enthalten sein kann. Bei Zeichnungen enthält die Variable zusätzlich die Angabe des aktiven Blattes. Gruß, ------------------ Stefanie Dieterich SOLID LINE Sales & Support GmbH [Diese Nachricht wurde von Stefanie Dieterich am 26. Februar 2001 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
A.Oertel Mitglied Dipl.Ing.
Beiträge: 270 Registriert: 12.10.2000
|
erstellt am: 26. Feb. 2001 12:36 <-- editieren / zitieren --> Unities abgeben: Nur für zbir
Hallo zbir, hallo Stefanie, bezüglich der Verwendung von modeldoc.gettitle wäre ich vorsichtig, da der Titel (unter Datei Eigenschaften) nicht mit dem Dateinamen übereinstimmen muss. Sicherer ist meiner Ansicht nach die Funktion: Modeldoc.GetPathName() die den Dateinamen zurrückgibt (oder leere Zeichenfolge falls Datei nicht gespeichert ist). Gruss A.Oertel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zbir Mitglied Technischer Zeichner
Beiträge: 8 Registriert: 08.01.2001
|
erstellt am: 26. Feb. 2001 13:11 <-- editieren / zitieren --> Unities abgeben:
Schön und gut, aber kann mir jemand auch sagen wie ich diesen Befehl einsetzen muß damit es funktioniert? ich verstehe noch nicht viel von dieser Makroprogramierung und währe dankbar wenn mir jemand anhand der Vorlage zeigen könnte wie das auszusehen hat. Gruß Bir 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: 26. Feb. 2001 20:01 <-- editieren / zitieren --> Unities abgeben: Nur für zbir
Hi Bir, könnte dann so aussehen (habs mit dem GetTitle gemacht): Dim swApp As Object Dim modeldoc As Object dim Pfad_str as string dim Vorgabe as string dim Dateiname_str as string dim msgtxt as string Sub main() Set swApp = CreateObject ("SldWorks.Application") Set modeldoc = swApp.ActiveDoc Vorgabe = left(modeldoc.GetTitle,instr(modeldoc.GetTitle,".sld")-1) Pfad_str =inputbox ("Pfad?","Pfadeingabe","f:\temp\") Dateiname_str= inputbox ("Dateiname ohne Endung?","Dateinameingabe",Vorgabe) Datei_str=Pfad_str & Dateiname_str &".tif" modeldoc.SaveAs2 Datei_str,0, TRUE, FALSE msgtxt="Datei wurde unter " & Datei_str & " gespeichert!" msgbox msgtxt End Sub Das drumherum in der zeile mit Vorgabe ist nur um die Endung abzuschneiden, falls die mit angezeigt wird. Analog kannst du das mit ModelDoc.GetPathName machen, aber dann mußt du halt auch noch den Pfad vorne abtrennen.
Ciao, Stefan ------------------ -- Inoffizielle Solidworks Hilfeseite http://solidworks.cad.de EMail: Stefan.Berlitz@solidworks.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zbir Mitglied Technischer Zeichner
Beiträge: 8 Registriert: 08.01.2001
|
erstellt am: 28. Feb. 2001 09:33 <-- editieren / zitieren --> Unities abgeben:
Danke erstmal an alle und für das Makro, aber irgendwie scheint da ein Fehler noch zu sein, es kommt immer eine Fehlermeldung wenn ich das Makro ausführen will. Gibt es eigentlich kurse in denen man das programmieren dieser Programmiersprache erlernen kann? Hätte sehr großes Interesse daran. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stefanie Dieterich Mitglied Vertrieb
Beiträge: 173 Registriert: 18.08.2000
|
erstellt am: 28. Feb. 2001 09:43 <-- editieren / zitieren --> Unities abgeben: Nur für zbir
|
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: 02. Mrz. 2001 08:39 <-- editieren / zitieren --> Unities abgeben: Nur für zbir
Hallo Bir, ja, sorry, lag an der Art, wie ich die Endung abgeschnitten hab, wenn keine Endung mit angezeigt wird gibts einen Fehler. So sollte es jetzt aber klappen: ----------- Dim swApp As Object Dim modeldoc As Object dim Pfad_str as string dim Titel as string dim Vorgabe as string dim Dateiname_str as string dim msgtxt as string Sub main() Set swApp = CreateObject ("SldWorks.Application") Set modeldoc = swApp.ActiveDoc ' erstmal nur den Dokumentnamen holen Titel = modeldoc.GetTitle ' und die Endung abschneiden, wenn vorhanden if (instr(Titel,".sld") > 0) then Vorgabe = left(Titel,instr(Titel,".sld")-1) else Vorgabe = Titel end if Pfad_str =inputbox ("Pfad?","Pfadeingabe","f:\temp\") Dateiname_str= inputbox ("Dateiname ohne Endung?","Dateinameingabe",Vorgabe) Datei_str=Pfad_str & Dateiname_str &".tif" msgtxt="Datei wurde unter " & Datei_str & " gespeichert!" msgbox msgtxt
End Sub ----------- Er überprüft jetzt erst, ab überhaupt die Endung mit angezeigt wird bevor er die abschneidet. Es fehlen auch noch ein paar Abfragen um die Sache etwas sicherer zu machen, so kommt z.B. die Erfolgsmeldung zum Schluss auch, wenn gar nichts abgespeichert wurde sondern ein Fehler passiert ist.
Das hat aber gar nichts mit der API von SolidWorks zu tun sondern ist "normales" Visual Basic. Ich empfehle dir in jedem Fall einen Grundkurs in VB, wenn du es dir nicht selbst beibringen willst. Ohne die Grundlagen nützt dir ein API-Kurs nichts. Ciao, Stefan
------------------ -- Inoffizielle Solidworks Hilfeseite http://solidworks.cad.de EMail: Stefan.Berlitz@solidworks.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |