Alles klar
Nun, ich habe nicht die Möglichkeit, den Namen der Datei anzuzeigen, was mir seltsam vorkommt ...
capture.png
Alles klar
Nun, ich habe nicht die Möglichkeit, den Namen der Datei anzuzeigen, was mir seltsam vorkommt ...
Es ist unter "Komponentennamen anzeigen" versteckt. Der Name der Komponente ist identisch mit dem Namen des Datensatzes.
Andernfalls sollten Sie in den allgemeinen Optionen auf der externen Referenzebene nachsehen, ob die Option "Komponentennamen aktualisieren, wenn Dokumente ersetzt werden" aktiviert ist.
Super, diese Option der externen Referenzen wurde :) nicht angekreuzt!
Ich habe es seit heute Morgen an mehreren Baugruppen getestet, und ich habe immer noch eine traurige Frage^^
Gibt es Fälle, in denen die Umbenennungsfunktion nicht funktioniert?
Da ich hier zwei Teile habe, die nicht umbenannt werden, ich aber das Programm Schritt für Schritt eingebe, gibt es sie weiter und löst die Zeile aus: errorsRename = swModel.Extension.RenameDocument(newName)
Aber benennen Sie es nicht um. Haben Sie eine Idee?
Schönes Wochenende
Hallo
nach intensiver Nutzung des Makros. Ich stelle fest, dass ich je nach Konfiguration meiner Teile oft einen Fehler habe, da wir beide Sprachen (Standard und Standard) haben. Wie können wir diesen Fehler überwinden und beide Fälle berücksichtigen?
Danke im Voraus,
Schönen Tag
Hallo
Ich hatte die erste Frage nicht gesehen.
Für das Umbenennungsproblem müssen Sie sich ansehen, was die Variable ErrorsRename zurückgibt und in der Hilfe sehen, was diesem Fehler entspricht:
http://help.solidworks.com/2020/english/api/swconst/SolidWorks.Interop.swconst~SolidWorks.Interop.swconst.swRenameDocumentError_e.html
Für den Rest müssen Sie eine zusätzliche Prüfung hinzufügen, wie im folgenden Code beschrieben:
Sub TraverseComponent(swComp As SldWorks.Component2, nLevel As Long)
Dim vChildComp As Variant
Dim swChildComp As Component2
Dim i As Long
Dim swModelChild As SldWorks.ModelDoc2
Dim swCustProp As CustomPropertyManager
Dim val As String
Dim valout As String
vChildComp = swComp.GetChildren
For i = 0 To UBound(vChildComp)
Set swChildComp = vChildComp(i)
TraverseComponent swChildComp, nLevel + 1
swChildComp.Select4 False, SwSelData, False
Set swModelChild = swChildComp.GetModelDoc2
Set swCustProp = swModelChild.Extension.CustomPropertyManager("Défaut") 'mettre le nom de la configuration comprenant la propriété
If swCustProp Is Nothing Then
Set swCustProp = swModelChild.Extension.CustomPropertyManager("Default")
End If
If Not swCustProp Is Nothing Then
status = swCustProp.Get4("SWOODCP_PanelStockLength", False, val, valout)
If valout <> "" Then
newName = NomParent & "-" & "000" & j
errorsRename = swModel.Extension.RenameDocument(newName)
swChildComp.Name2 = newName
Debug.Print swModelChild.GetTitle & " : " & j & " - " & errorsRename
j = j + 1
End If
End If
Next i
End Sub
Ja ich hatte darüber nachgedacht, aber schon beim "swCust set.... "Da es die Konfiguration nicht finden kann, stürzt es ab und ich weiß nicht, wie ich es machen soll.
Bei der ersten Frage geht es darum, dass das Teil bereits in den Explorer-Fenstern vorhanden war, aber nicht in der Baugruppe.
Hallo
Ich denke, es kommt von etwas anderem. Ich persönlich habe keine Probleme mit der Bedienung, auch wenn die Konfiguration nicht vorhanden ist.
swCustProp bleibt leer und daher gibt es keine Umbenennung oder irgendetwas anderes in der betreffenden Datei.
Wurde der Code unverändert in Ihr Makro eingebettet oder wurde er geändert, um ihn in Ihren Code zu integrieren?
Hallo Cyril,
Ich poste meinen gesamten Code. Ich habe zwei Schleifen gesetzt, denn wenn ich meine Figuren bereits umbenannt habe, hat es nicht funktioniert, also benenne ich sie zuerst mit einem Zähler um (1,2,3,4...), dann benenne ich sie mit dem Lineal um.
Option Explizit
Dim swApp als SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swRootComp als SldWorks.Component2
Dimmen von Kindern als Variante
Dim swChild As SldWorks.Component2
Dim SwSelData As SldWorks.SelectData
Dim ChildCount so lange
Dim oldName als Zeichenfolge
Dimmen newName als Zeichenfolge
Sonne j So lang
Sonne h So lange
Dim ParentName als Zeichenfolge
DimmfehlerUmbenennen wie lang
Status dimmen: Als boolescher Wert
Schwache Warnungen So lange
Sparen Sie so lange
Dim swModelDocExt als ModelDocExtension
Dim swCustProp As CustomPropertyManager
Dim bool als boolescher Wert
Dim val As String
Dim valout As String
Sub main()
Legen Sie swApp = Application.SldWorks fest
Festlegen von swModel = swApp.ActiveDoc
Übergeordneter Name = Links(swModel.GetTitle, 7)
Legen Sie swRootComp = swModel.ConfigurationManager.ActiveConfiguration.GetRootComponent3(True) fest.
j = 1
h = 1
TraverseComponent swRootComp, 1
swModel.ForceRebuild3 Wahr
status = swModel.Save3(swSaveAsOptions_SaveReferenced, errorsSave, Warnungen)
Ende Sub
Sub TraverseComponent(swComp As SldWorks.Component2, nLevel As Long)
Dim vChildComp als Variante
Dim swChildComp als Komponente2
Dim swModelChild als SldWorks.ModelDoc2
Dim swCustProp As CustomPropertyManager
Dim val As String
Dim valout As String
Sonne i So lang
Dim status2 als boolescher Wert
Dim val1 als Zeichenfolge
Dim valout1 als Zeichenfolge
vChildComp = swComp.GetChildren
Für i = 0 TB UBound(vChildComp)
Legen Sie swChildComp = vChildComp(i) fest.
TraverseComponent swChildComp, nLevel + 1
swChildComp.Select4 Falsch, SwSelData, Falsch
Legen Sie swModelChild = swChildComp.GetModelDoc2 fest
Set swCustProp = swModelChild.Extension.CustomPropertyManager("Default") ' setze den Namen der Konfiguration ein, einschließlich der
Wenn nicht, ist swCustProp nichts, dann
status = swCustProp.Get4("SWOODCP_PanelStockLength", False, val, valout)
status2 = swCustProp.Get4("HARDWARE", Falsch, val1, valout1)
If valout <> "" Or valout1 <> "" Dann
newName = h
errorsRename = swModel.Extension.RenameDocument(newName)
Debug.Print swModelChild.GetTitle & " : " & h & " - " & errorsUmbenennen
h = h + 1
Ende, wenn
Ende, wenn
Weiter i
Für i = 0 TB UBound(vChildComp)
Legen Sie swChildComp = vChildComp(i) fest.
TraverseComponent swChildComp, nLevel + 1
swChildComp.Select4 Falsch, SwSelData, Falsch
Legen Sie swModelChild = swChildComp.GetModelDoc2 fest
Set swCustProp = swModelChild.Extension.CustomPropertyManager("Default") ' Setze den Namen der Konfiguration, einschließlich der
Wenn nicht, ist swCustProp nichts, dann
status = swCustProp.Get4("SWOODCP_PanelStockLength", False, val, valout)
status2 = swCustProp.Get4("HARDWARE", Falsch, val1, valout1)
If valout <> "" Or valout1 <> "" Dann
newName = Übergeordneter Name & "-000" & j
Wenn Len(newName) > 12, dann
newName = Links(neuerName, 8) und Rechts(neuer Name, 4)
Ende, wenn
errorsRename = swModel.Extension.RenameDocument(newName)
Debug.Print swModelChild.GetTitle & " : " & j & " - " & errorsUmbenennen
j = d + 1
Ende, wenn
Ende, wenn
Weiter i
Ende Sub
Ich habe es noch nicht überprüft, aber beim ersten Ansatz denke ich, dass das Problem von der zweiten Schleife herrührt.
Die swChild-Variable wird wahrscheinlich geleert, nachdem die erste Ausführung übergeben wurde.
Hallo Cyril,
swChild wird nicht auf nichts zurückgesetzt, ich verstehe nicht, wie es leer sein soll.
Hallo
Ich persönlich habe kein Problem mit diesem Makro. So wie es aussieht, sehe ich nicht, was blockiert (ich habe Dateien, die keine benannte Konfiguration wie die anvisierten haben, und es geht ohne Probleme weiter).
Was ist die Fehlermeldung, die gemeldet wird?
Hallo
Ich habe mit GetActiveConfiguration eine Lösung gefunden, sodass ich alle Konfigurationen berücksichtige, keine Übersetzungsprobleme.
Hallo Cyril,
Ich habe einige weitere Tests durchgeführt und habe ein Beispiel, das ich in einer ZIP-Datei anhänge.
Ich habe den Eindruck, dass es nicht alle Dateien der Montage durchgeht und ich verstehe wirklich nicht, warum... Am Ende waren meine Ferien nicht :D!
Vielen Dank für Ihre Hilfe im Voraus,
Schönen Tag
Vincent