Hallo nochmal...
ja genau, ich mache im Windows-Explorer einen Doppelklick auf die *.STP Datei. SW öffnet das Teil und führt die Import-Diagnose durch. 2x ENTER und dann soll das Makro ein paar sachen erledigen (Darstellung, Anzeige, Rohreilkonfiguration anlegen...) und dann gleich speichern.
In der Titelzeile steht eben der (falsche) Dateiname (tzjdDE4Atg9d *). Der Dateiname der STP-Datei ist aber (z.B. BE123457.STP) und so soll auch die SLDPRT-Datei heißen.
Da ich auf dem Gebiet der Makroprogrammierung (in SW) absoluter Beginner bin. Hier mal (nicht nur) meine bisherigen geistigen Ergüsse.
Dim swApp As Object
Dim Part As Object
Dim SelMgr As Object
Dim Dateiname As String
Dim retval As Long
Sub main()
' Wenn Sie das Makro aus SolidWorks heraus starten, muss vorher
' ein anderes Fenster den Focus haben, damit es funktioniert.
' Am einfachsten erledigen wir das mit einer Messagebox
MsgBox "Makro geladen und bereit ..." 'wegen SendKeys
'
Set swApp = Application.SldWorks
'Set Part = swApp.GetFirstDocument 'Für zukünftige Schleife
Set Part = swApp.ActiveDoc
'SendKeys "%azk{ENTER}", True 'Ansicht-Anzeige-Schattiert mit Kanten
'Set SelMgr = Part.SelectionManager
Part.ViewDisplayShaded '...WithEdges geht nicht
'SendKeys "f", True 'Zoom Fenster
Part.ViewZoomtofit2
'Dateiname = Part.GetTitle 'Falscher Dateiname
Dateiname = Part.GetPathName() 'Pfad ist leer???
'Dateiname = Part:: GetPathName
MsgBox "Dateiname: " & Dateiname
SendKeys "%du^v{ENTER}", True 'Datei speichern unter.. CTRL+V
'retval = Part.Save2(0) 'bis ich einen Dateinamen habe
'SendKeys "%dc", True 'Datei schliessen
Dateiname = Part.GetTitle
swApp.CloseDoc Dateiname
End Sub
Wie du siehst, stand am Anfang das SendKey-Makro von deiner API Hilfe Kapitel 1 (http://solidworks.cad.de/apitut_kap01.htm)
Aber vorher den Dateinamen im Windows-Explorere mit F2 und CTRL+C zu holen war mir zu "blöd". Deshalb der Vorstoß in die "Makro-Versuche"
Ach ja, ich hab in einem der vielen Makros die ich mir angeschaut habe diesen Befehl gesehen und wollte ihn verwenden, geht aber nicht.
Part.ViewDisplayShadedWithEdges
bei mir geht nur: Part.ViewDisplayShaded
weißt du dazu auch was?
Gruß und danke für die Hilfe
C.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP