Um meine Dateien zu benennen, verwende ich eine ziemlich einfache Regel: "Plannummer- Beschreibung"
Ist es mit SOLIDWORKS möglich, diese beiden Informationen in 2 verschiedenen benutzerdefinierten Eigenschaften mit einem Makro oder ähnlichem abzurufen?
Früher habe ich Creo verwendet und es war recht einfach, diese Manipulation durchzuführen, aber ich habe den Eindruck, dass es mit Solidworks viel komplizierter ist...
Ja, es ist möglich, Sie können benutzerdefinierte Eigenschaften und sogar die spezifischen Eigenschaften für die Konfiguration abrufen.
Möchten Sie Zeichnungsinformationen abrufen? Möchten Sie benutzerdefinierte Eigenschaften basierend auf dem Dateinamen ausfüllen ? Oder erstellen Sie eine Schaltfläche "Speichern", die die Datei gemäß den Eigenschaften "Plannummer" und "Beschreibung" speichert?
Um den Dateinamen abzurufen und in eine benutzerdefinierte Eigenschaft einzufügen, können Sie im Prinzip wie folgt vorgehen:
Dim swApp As Object
Dim swModel As ModelDoc2
Dim config As SldWorks.Configuration
Dim swCustProp As CustomPropertyManager
Dim lRetVal As Long
Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set config = swModel.GetActiveConfiguration
Set cusPropMgr = config.CustomPropertyManager
lRetVal = cusPropMgr.Add3("FileName", swCustomInfoType_e.swCustomInfoText, swModel.GetTitle, swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd)
End Sub
Alles, was Sie tun müssen, ist, den Text, den Sie aus swModel.GetTitle abrufen, zu überarbeiten, um die 2 Werte zu erhalten, an denen Sie interessiert sind, und diese 2 Werte in 2 separaten Eigenschaften zu speichern.
Hallo Ein Makro, wie es von @d.roger vorgeschlagen wird, kann den Zweck erfüllen. Werfen Sie auch einen Blick auf die Präsentation aller Werkzeuge der myCADtools-Suite. Dabei handelt es sich um etwa fünfzig Dienstprogramme, die sich wiederholende Aufgaben automatisieren. Das Dienstprogramm SmartProperties ist das richtige Werkzeug für Sie! Ich lade Sie ein, sich dieses Dokument anzusehen. https://www.lynkoa.com/contenu/pr%C3%A9sentation-des-utilitaires-mycadtools-2018 Alle Tools sind SW2016-2017 und 2018 kompatibel. Herzliche Grüße
@mandragore versuche ich nur, die im Dateinamen enthaltenen Informationen abzurufen.
@d.Roger, in der Tat scheint es (so wenig ich VB verstehe), dass dies mein Problem teilweise beantwortet. Da ich noch nie Makros auf SW verwendet habe, werde ich versuchen, mit all dem auszukommen, ich werde Sie auf dem Laufenden halten, wenn ich eine Lösung finden kann.
@d. Rogers Lösungsvorschlag erscheint mir interessant. Aber ich habe noch nie Makros verwendet und weiß nicht, wo ich anfangen soll . Und offensichtlich habe ich nicht die Grundlagen, um ihre Programmierung zu verstehen. Wenn es Ihnen nicht allzu viel ausmacht, könnten Sie mir im Detail erklären, wie man dieses Makro verwendet.
Danke @sbadenis für diese Antwort, obwohl sie sarkastisch ist.
Ich hatte diese Seite bereits gelesen und den von @d.roger bereitgestellten Rohcode in VBA integriert.
Ich habe offensichtlich versucht, das Makro so auszuführen, wie es von SolidWorks ist, was nicht funktioniert hat, wie Sie sich vorstellen können.
Da ich die Vor- und Nachteile dieses Skripts nicht verstehe, weiß ich nicht, was ich ändern soll, damit es in meinem Fall funktioniert.
Ich habe jedoch einen zweiten Versuch unternommen, indem ich den Namen meines Stückes anstelle des "Dateinamens" integriert habe, der im Originaltext rot geschrieben ist. Was anscheinend nicht besser funktioniert hat.
Ich möchte zwei benutzerdefinierte Eigenschaften aus dem Namen meines Teils abrufen. Der erste besteht aus den ersten 14 Buchstaben des Namens meines Teils und der zweite aus den folgenden Buchstaben, aus denen sich der Name meines Teils zusammensetzt.
Wenn sich hier jemand bereit erklärt, mir zu erklären, wie man das erreicht, danke ich ihm im Voraus.
Zu der Bemerkung "Ich habe offensichtlich versucht, das Makro so auszuführen, wie es von SolidWorks ist, was nicht funktioniert hat, wie Sie sich vorstellen können.", sind Sie sicher, dass es nicht funktioniert hat? Mit diesem Makro können Sie lediglich eine benutzerdefinierte Eigenschaft (in der aktiven Konfiguration) mit dem Namen "Dateiname" erstellen, deren Wert der Name des Teils ist. Sind Sie also zu den benutzerdefinierten Eigenschaften gegangen, um zu sehen, ob diese neue Eigenschaft erstellt wurde?
Um also 2 benutzerdefinierte Eigenschaften aus dem Dateinamen zu erstellen, müssen Sie den Dateinamen mit der Funktion "swModel.GetTitle" abrufen, dann diesen Wert überarbeiten, um ihn entsprechend der gewünschten Aufteilung in 2 zu schneiden und schließlich jedes Ende dieses Wertes in 2 verschiedenen Eigenschaften speichern:
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
Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
maValeur0 = swModel.GetTitle 'On récupère le nom du fichier
maValeur1 = Left(maValeur0, 8) 'On récupère les 8 premiers caractères du nom du fichier
maValeur2 = Right(maValeur0, 12) 'On récupère les 12 derniers caractères du nom du fichier
Set config = swModel.GetActiveConfiguration
Set cusPropMgr = config.CustomPropertyManager
lRetVal = cusPropMgr.Add3("MaPropriete-1", swCustomInfoType_e.swCustomInfoText, maValeur1, swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd)
lRetVal = cusPropMgr.Add3("MaPropriete-2", swCustomInfoType_e.swCustomInfoText, maValeur2, swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd)
End Sub
Nachdem ich meine zweite Nachricht gepostet hatte, bemerkte ich, dass diese Werte in den konfigurationsspezifischen Eigenschaften erstellt worden waren.
Dank Ihrer Erklärung verstehe ich Ihre Skripte besser.
Und die zweite Version hat mich enorm weitergebracht, ich bekomme fast das gewünschte Ergebnis.
Alles, was ich jetzt tun muss, ist, einen Weg zu finden, alle Charaktere nach dem 14. wiederherzustellen. Da die Anzahl der Zeichen, die der Teilenummer entsprechen, im Gegensatz zur Anzahl der Zeichen im Teilenamen konstant ist.
Vielen Dank für diese Klarstellung. Ich habe herausgefunden, wie ich die Dateierweiterung filtern und die ersten Zeichen vermeiden kann, sodass ich nur einen Teil der Referenz in der Plannummer habe. Perfekt. Vielen Dank.
Also teile ich ^^
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 pour avoir le n° du plan'
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 du fichier à 5'
Set config = swModel.GetActiveConfiguration
Set cusPropMgr = config.CustomPropertyManager
lRetVal = cusPropMgr.Add3("N° plan", swCustomInfoType_e.swCustomInfoText, maValeur3, swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd)
lRetVal = cusPropMgr.Add3("Nom de la pièce", swCustomInfoType_e.swCustomInfoText, maValeur7, swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd)
End Sub