Hallo zusammen,
ich habe nun in Richtung "Makro" etwas experimentiert und auch schon einige Teilerfolge.
Damit das Ganze letztendlich komplett meinen Vorstellungen entspricht habe ich noch einige Punkte,
die noch offen sind und zu denen ich noch keine Lösung gefunden habe.
Den Ausgangscode "Dateieigenschaften erzeugen" habe ich von der Seite "http://solidworks.cad.de/mm_35.htm" von Stefan Berlitz.
Ich konnte ihn soweit abändern, dass nun bei manuellem Ausführen des Makros der Dateiname ausgelesen wird
siehe>Teilenamen = swApp.GetFirstDocument.GetTitle<
und dieser beim Eintrag in die Dateieigenschaften bei Wert auf die ersten drei Stellen gekürzt wird
siehe>Debug.Print ModelDoc.AddCustomInfo3(Config, Prop, swCustomInfoText, Mid(Teilenamen, 1, 3))<.
Das funktioniert soweit ganz gut.
Doch nun zum Feinschliff:
1.) Das Makro überschreibt den Eintrag nicht (ist aber nötig, falls der Name Mal geändert wird)
Was muß im Code geändert werden, damit bei jedem Ausführen des Makros der Eintrag überschrieben wird?
2.) Momentan muß ich das Makro manuell ausführen.
Ist es möglich das Makro immer automatisch gleichzeitig beim Speichern des Teils mit auszuführen,
d.h. den Makro-Ausführbefehl irgendwo in der Part-Template (Teil.prtdot) fest zu hinterlegen?
3.) kann man bei SolidWorks einen VBA-Code fest in das Dokument mit einbinden (so wie bei Excel)?
Wenn nicht, wo sollte der VBA-Code (das Makro) abgelegt sein, damit der "automatische" Ausführbefehl in der Teile-Datei das Makro findet?
Oder kann man den Pfad zum Makro dazu festlegen?
Das sind sicher noch eine Menge Informationen die ich noch brauche, aber leider kenne ich mich nur in Excel-VBA einigermaßen gut aus.
Bei SolidWorks beginne ich erst damit und ich habe schon bemerkt, dass vieles ganz anders ist.
Hier noch der ganze VBA-Code:
' **********************************************************************
' Wenn konfigurationsspezifische Werte eingetragen werden sollen den
' Parameter "AllConfigs" auf 1 setzen.
'
' ACHTUNG:
' * ggf. vorhandene Attribute werden NICHT überschrieben
' * alle Dateieigenschaften werden als Typ Text angelegt
'
' 17.11.2006 Stefan Berlitz
' Stefan.Berlitz@solidworks.cad.de
' http://solidworks.cad.de
' http://swtools.cad.de
' **********************************************************************
Const AllConfigs = 0
Option Explicit
Const swDocPART = 1
Const swDocASSEMBLY = 2
Const swDocDRAWING = 3
Public Enum swCustomInfoType_e
swCustomInfoUnknown = 0
swCustomInfoText = 30 ' VT_LPSTR
swCustomInfoDate = 64 ' VT_FILETIME
swCustomInfoNumber = 3 ' VT_I4
swCustomInfoYesOrNo = 11 ' VT_BOOL
End Enum
Sub Main()
Dim swApp As Object
Dim ModelDoc As Object
Dim ConfigCount As Long
Dim ConfigNames As Variant
Dim PropConfigs As New Collection
Dim PropNames As New Collection
Dim Prop As Variant
Dim Config As Variant
Dim PropType As Long
Dim PropText As String
Dim Teilenamen As String
Dim i As Long
Set swApp = CreateObject("SldWorks.Application")
Set ModelDoc = swApp.ActiveDoc
Teilenamen = swApp.GetFirstDocument.GetTitle
If ModelDoc Is Nothing Then
' Call MsgBox("Keine Datei geöffnet", vbOKOnly, "Information")
Exit Sub
End If
PropNames.Add "Nummer"
ConfigCount = ModelDoc.GetConfigurationCount
ConfigNames = ModelDoc.GetConfigurationNames
If AllConfigs = 0 Then
PropConfigs.Add ""
Else
For i = 0 To ConfigCount - 1
PropConfigs.Add ConfigNames(i)
Next i
End If
For Each Config In PropConfigs
For Each Prop In PropNames
Debug.Print ModelDoc.AddCustomInfo3(Config, Prop, swCustomInfoText, Mid(Teilenamen, 1, 3))
Next
Next
End Sub
Herzlichen Dank für eine Unterstützung
Gruß Jakob
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP