Ich habe ein kleines Makro, das Elemente des Dateinamens abruft. Bereit, das Formular auszufüllen, um Diskrepanzen zwischen " Dateiname " und " Nomenklaturinfo " für eine spätere automatisierte Verwaltung zu vermeiden... Die Eigenschaften lassen sich gut ausfüllen, aber das Formular wird leer angezeigt. Ich kann F5 machen oder neu erstellen, nichts passiert
Was kann ich am Ende meines Makros hinzufügen, um das Formular zu aktualisieren? Grundsätzlich müssen Sie das 3D öffnen, damit das Formular korrekt angezeigt wird, während zu diesem Zeitpunkt parallel die Kartusche des Teileplans fertiggestellt wird...
Hier ist mein Code
Dimmen swApp als Objekt Dim swModel As ModelDoc2 Dim-Konfiguration als SldWorks.Configuration Dim swCustProp As CustomPropertyManager Dim lRetVal so lange Dim myValue0 als Zeichenfolge Dim myValue1 als Zeichenfolge Dim myValue2 als Zeichenfolge Dim myValue3 als Zeichenfolge Dimmen myValue4 als Zeichenfolge Dim myValue5 als Zeichenfolge Dimmen myValue6 als Zeichenfolge Dim myValue7 als Zeichenfolge
Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
maValeur0 = swModel.GetTitle 'On récupère le nom du fichier
maValeur1 = Left(maValeur0, 6) 'On récupère les 6 premiers caractères du nom du fichier'
maValeur2 = Left(maValeur0, 12) 'On récupère les 12 premiers caractères du nom du fichier'
maValeur3 = Right(maValeur2, Len(maValeur2) - Len(maValeur1)) '2 moins 1'
maValeur4 = Right(maValeur0, 7) 'On récupère l'extension'
maValeur5 = Left(maValeur0, 13) 'On récupère les 13 premiers caractères du nom du fichier'
maValeur6 = Right(maValeur0, Len(maValeur0) - Len(maValeur5)) 'On récupére tout au delà du 13éme caractére'
maValeur7 = Left(maValeur6, Len(maValeur6) - Len(maValeur4)) 'on enlève l'extention à 5'
Set config = swModel.GetActiveConfiguration
Set cusPropMgr = config.CustomPropertyManager
lRetVal = cusPropMgr.Add3("N° Plan / Réf / Dim", swCustomInfoType_e.swCustomInfoText, maValeur3, swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd)
lRetVal = cusPropMgr.Add3("Désignation", swCustomInfoType_e.swCustomInfoText, maValeur7, swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd)
MsgBox "Formulaire complété" & Path, vbInformation
Strg+Q (Es ist so "weg" nach Hause, dass ich im SW nie darüber nachdenke!) Es funktioniert auf halbem Weg, es zeigt mir nur den Schiedsrichter ^^"
Zum Sparen... Nichts Besseres
Auf der anderen Seite sehe ich zufällig, dass, wenn ich von der Designbibliothek zum Formular gehe, es abgeschlossen neu geladen wird. Warum wird bei einer einfachen Neuerstellung das von den Eigenschaften ausgefüllte Formular nicht geladen?
STRG+Q gegen F5 ... Das F5 in Solidworks wird verwendet, um die Symbolleiste des Auswahlfilters ein-/auszublenden... Das heißt, ich beiße mir in die Finger, wenn ich in einer anderen Software STRG+Q mache... Fragen: Ist Ihr Formular aktiv, wenn Sie das Makro starten? Verwenden Sie Konfigurationen? (Wenn dies der Fall ist und die Rekonstruktion bereits Teil des Jobs ist, denke ich, dass diese Rekonstruktion auf alle Konfigurationen ausgeweitet werden sollte...) Ändern Sie ForceRebuilt in ForceRebuild3 (False). Entspricht STRG+UMSCHALT+Q
Leider der gleiche Effekt für die 2 "ForceRebuilds". Es wird nur meine Referenz angezeigt, nicht die Bezeichnung. Und wenn ich aufgefordert werde, das Formular zu speichern, wird die Bezeichnung in den Eigenschaften entfernt, als ob das Formular zum Master geworden wäre.
Also ja, das Formular ist immer noch aktiv. Bisher passte es mir gut, die Nachrichten in meinen Ensembles zu managen. Das Aus- und Einschalten funktioniert. Aber warum nicht in meinem Makro? grrr
Also ja, vielleicht ein Update der Konfigurationen. Aber bei diesem Teststück habe ich nur den Fehler.
→ Grundsätzlich simulieren wir eine Änderung im TaskPane-Panel (Registerkarten rechts neben Solidworks)
Dim swApp As Object
Dim swModel As ModelDoc2
Dim config As SldWorks.Configuration
Dim swCustProp As CustomPropertyManager
Dim lRetVal As Long
Dim maValeur0 As String
Dim maValeur1 As String
Dim maValeur2 As String
Dim maValeur3 As String
Dim maValeur4 As String
Dim maValeur5 As String
Dim maValeur6 As String
Dim maValeur7 As String
Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
swApp.ActivateTaskPane swDesignLibrary
maValeur0 = swModel.GetTitle 'On récupère le nom du fichier
maValeur1 = Left(maValeur0, 6) 'On récupère les 6 premiers caractères du nom du fichier'
maValeur2 = Left(maValeur0, 12) 'On récupère les 12 premiers caractères du nom du fichier'
maValeur3 = Right(maValeur2, Len(maValeur2) - Len(maValeur1)) '2 moins 1'
maValeur4 = Right(maValeur0, 7) 'On récupère l'extension'
maValeur5 = Left(maValeur0, 13) 'On récupère les 13 premiers caractères du nom du fichier'
maValeur6 = Right(maValeur0, Len(maValeur0) - Len(maValeur5)) 'On récupére tout au delà du 13éme caractére'
maValeur7 = Left(maValeur6, Len(maValeur6) - Len(maValeur4)) 'on enlève l'extention à 5'
Set config = swModel.GetActiveConfiguration
Set cusPropMgr = config.CustomPropertyManager
lRetVal = cusPropMgr.Add3("N° Plan / Réf / Dim", swCustomInfoType_e.swCustomInfoText, maValeur3, swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd)
lRetVal = cusPropMgr.Add3("Désignation", swCustomInfoType_e.swCustomInfoText, maValeur7, swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd)
swApp.ActivateTaskPane swCustomProps
MsgBox "Formulaire complété" & Path, vbInformation
End Sub`
Ich denke , @Maclane hält die Wahrheit oder kommt zumindest dem Test nahe! Ansonsten habe ich in einem deutschen Forum diesen gefunden, der auch nahe dran ist:
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
'Auf SW zugreifen
Set swApp = Application.SldWorks
'An aktives Dokument anklinken
Set swModel = swApp.ActiveDoc
swModel.CustomInfo("FTL-Besch") = "Hallo"
'Wechsel auf "SOLIDWORKS Ressourcen "
swApp.ActivateTaskPane (3) '(swTaskPaneTab_e.swResources)
'Wechsel auf "Benutzerdefinierte Eigenschaften"
swApp.ActivateTaskPane (5) '(swTaskPaneTab_e.swCustomProps)
End Sub
Die Lösung von @sbadenis funktioniert perfekt. Ein großes Dankeschön an euch alle für eure Hilfe.
Hier ist mein endgültiger Code, wenn er jemandem helfen kann
Dim swApp As Object
Dim swModel As ModelDoc2
Dim config As SldWorks.Configuration
Dim swCustProp As CustomPropertyManager
Dim lRetVal As Long
Dim maValeur0 As String
Dim maValeur1 As String
Dim maValeur2 As String
Dim maValeur3 As String
Dim maValeur4 As String
Dim maValeur5 As String
Dim maValeur6 As String
Dim maValeur7 As String
Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
maValeur0 = swModel.GetTitle 'On récupère le nom du fichier
maValeur1 = Left(maValeur0, 6) 'On récupère les 6 premiers caractères du nom du fichier'
maValeur2 = Left(maValeur0, 12) 'On récupère les 12 premiers caractères du nom du fichier'
maValeur3 = Right(maValeur2, Len(maValeur2) - Len(maValeur1)) '2 moins 1'
maValeur4 = Right(maValeur0, 7) 'On récupère l'extension'
maValeur5 = Left(maValeur0, 13) 'On récupère les 13 premiers caractères du nom du fichier'
maValeur6 = Right(maValeur0, Len(maValeur0) - Len(maValeur5)) 'On récupére tout au delà du 13éme caractére'
maValeur7 = Left(maValeur6, Len(maValeur6) - Len(maValeur4)) 'on enlève l'extention à 5'
Set config = swModel.GetActiveConfiguration
Set cusPropMgr = config.CustomPropertyManager
lRetVal = cusPropMgr.Add3("N° Plan / Réf / Dim", swCustomInfoType_e.swCustomInfoText, maValeur3, swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd)
lRetVal = cusPropMgr.Add3("Désignation", swCustomInfoType_e.swCustomInfoText, maValeur7, swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd)
swModel.CustomInfo("FTL-Besch") = "Hallo"
swApp.ActivateTaskPane (3)
swApp.ActivateTaskPane (5)
MsgBox "Formulaire complété" & Path, vbInformation
End Sub
Und schließlich isst ein kleines Backup am Ende kein Brot.
Ich kombiniere oft ein bisschen auf der Stelle, gebe ich zu. Es ist vielleicht nicht optimal, aber es funktioniert!
Dim swApp As Object
Dim part As Object
Dim swModel As ModelDoc2
Dim config As SldWorks.Configuration
Dim swCustProp As CustomPropertyManager
Dim lRetVal As Long
Dim maValeur0 As String
Dim maValeur1 As String
Dim maValeur2 As String
Dim maValeur3 As String
Dim maValeur4 As String
Dim maValeur5 As String
Dim maValeur6 As String
Dim maValeur7 As String
Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
maValeur0 = swModel.GetTitle 'On récupère le nom du fichier
maValeur1 = Left(maValeur0, 6) 'On récupère les 6 premiers caractères du nom du fichier'
maValeur2 = Left(maValeur0, 12) 'On récupère les 12 premiers caractères du nom du fichier'
maValeur3 = Right(maValeur2, Len(maValeur2) - Len(maValeur1)) '2 moins 1'
maValeur4 = Right(maValeur0, 7) 'On récupère l'extension'
maValeur5 = Left(maValeur0, 13) 'On récupère les 13 premiers caractères du nom du fichier'
maValeur6 = Right(maValeur0, Len(maValeur0) - Len(maValeur5)) 'On récupére tout au delà du 13éme caractére'
maValeur7 = Left(maValeur6, Len(maValeur6) - Len(maValeur4)) 'on enlève l'extention à 5'
Set config = swModel.GetActiveConfiguration
Set cusPropMgr = config.CustomPropertyManager
lRetVal = cusPropMgr.Add3("N° Plan / Réf / Dim", swCustomInfoType_e.swCustomInfoText, maValeur3, swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd)
lRetVal = cusPropMgr.Add3("Désignation", swCustomInfoType_e.swCustomInfoText, maValeur7, swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd)
swApp.ActivateTaskPane (3)
swApp.ActivateTaskPane (5)
Set part = swApp.ActiveDoc
Dim swErrors As Long
Dim swWarnings As Long
boolstatus = part.Save3(1, swErrors, swWarnings)
MsgBox "Formulaire complété" & Path, vbInformation
End Sub
Hallo zusammen und vor allem @Maclane, die mich gut entsperrt haben. Ich hatte es geschafft, etwas zu haben, das großartig funktioniert, und seit gestern funktioniert es nicht mehr. Ich hatte gebastelt, weil ich endlich keine Configs mehr schaffe, die mir übrigens Probleme bereiteten. Ich habe das codiert: Jetzt löscht es den Typ meiner " text " -Eigenschaft und füllt den Wert nicht mehr aus.
Dim swApp As Object
Dim part As Object
Dim swModel As ModelDoc2
Dim swCustProp As CustomPropertyManager
Dim lRetVal As Long
Dim maValeur0 As String
Dim maValeur1 As String
Dim maValeur2 As String
Dim maValeur3 As String
Dim maValeur4 As String
Dim maValeur5 As String
Dim maValeur6 As String
Dim maValeur7 As String
Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
maValeur0 = swModel.GetTitle 'On récupère le nom du fichier
maValeur1 = Left(maValeur0, 6) 'On récupère les 6 premiers caractères du nom du fichier'
maValeur2 = Left(maValeur0, 12) 'On récupère les 12 premiers caractères du nom du fichier'
maValeur3 = Right(maValeur2, Len(maValeur2) - Len(maValeur1)) '2 moins 1'
maValeur4 = Right(maValeur0, 7) 'On récupère l'extension'
maValeur5 = Left(maValeur0, 13) 'On récupère les 13 premiers caractères du nom du fichier'
maValeur6 = Right(maValeur0, Len(maValeur0) - Len(maValeur5)) 'On récupére tout au delà du 13éme caractére'
maValeur7 = Left(maValeur6, Len(maValeur6) - Len(maValeur4)) 'on enlève l'extention à 5'
lRetVal = swModel.DeleteCustomInfo("N° Plan / Réf / Dim")
lRetVal = swModel.AddCustomInfo3("", "N° Plan / Réf / Dim", PropertyManagerPage, maValeur3)
lRetVal = swModel.DeleteCustomInfo("Désignation")
lRetVal = swModel.AddCustomInfo3("", "Désignation", PropertyManagerPage, maValeur7)
'swApp.ActivateTaskPane (3)
'swApp.ActivateTaskPane (5)
Set part = swApp.ActiveDoc
Dim swErrors As Long
Dim swWarnings As Long
boolstatus = part.Save3(1, swErrors, swWarnings)
MsgBox "NOM : " + maValeur7 + " - N° :" + maValeur3 + " - Enregistré" & Path, vbInformation
End Sub
Ich denke, da geht es schief: lRetVal = swModel.AddCustomInfo3("", "N° Plan / Réf / Dim", PropertyManagerPage, maValeur3)
AddCustomInfo3 sollte wie folgt eingerichtet werden:
value = instance.AddCustomInfo3(Configuration, FieldName, FieldType, FieldValue)
Also denke ich, dass es FiledType ist, das falsch informiert ist... Fügen Sie anstelle von PorpertyManagerPage swCustomInfoType_e.swCustomInfoText ein.