Problem bei der Anzeige des Komponentennamens

Hallo

 

Ich habe gerade ein Makro "fertiggestellt", das eine automatische Montage durchführt und sogar eine Komponente durch eine andere Komponente, die zweite Baugruppenebene, ersetzt. Sobald die Montage abgeschlossen ist, zeigt jeder gespeicherte Baum die alten Nummern an und aktualisiert nichts. Ich habe sogar meinen Computer neu gestartet, falls es sich um ein Cache-Problem handelte. Auf dem Rechner eines Kollegen hat es das richtige Display und es gibt sogar die richtigen Referenzen....

 

Meine Zusammenstellung ist gut, es gibt kein Problem außer der Anzeige der Namen und es ist nur auf meinem Computer, nachdem ich mein Makro verwendet habe. Ich habe keinen Zugriff mehr auf das "Referenz"-Fenster, wenn ich die besagte Datei öffne.

Ich raufe mir bei diesem 'kleinen' Problem die Haare aus, ich bin ein bisschen perfektionistisch...

 

Mit freundlichen Grüßen, Mandrake.


capture.png

Hallo

Sie müssen überall temporäre Dateien haben, Solidworks ausschneiden und dann versuchen, eine Systembereinigung mit Solidworks RX durchzuführen:

Herzliche Grüße

Vielen Dank für Ihre schnelle Antwort, keine Änderung auf meinem Computer, ich erinnere Sie daran, dass ich meinen Computer in der Zwischenzeit heruntergefahren und neu gestartet habe, also logischerweise alle Caches bereinigt.

 

Herzliche Grüße

 

 


capture.png

Hallo

Entschuldigung für die vorherige Antwort, ich hatte den Punkt am Ende des Satzes " Meine Assembly ist gut, es gibt kein Problem außer der Anzeige der Namen und es ist nur auf meinem Computer, nachdem ich mein Makro verwendet habe" nicht gesehen.

Ich schließe daraus, dass dies nach der Verwendung Ihres Makros geschieht, aber was ist, wenn Sie die neue Baugruppe, die so gespeichert wurde, auf Ihren Computer laden, ohne Ihr Makro zu verwenden? Und was ist, wenn Sie Ihr Makro auf dem Computer Ihres Kollegen verwenden?

Herzliche Grüße

Ich habe mich auch schlecht ausgedrückt, ich habe das Makro nur einmal benutzt. Da ich beim Öffnen der Baugruppe immer das gleiche Display, die berühmte 9800 anstelle von F90149800 Namen und Referenz der Baugruppe in meinem F90149900 habe.

 

Ich werde versuchen, es klarer zu sagen, so einfach ist es nicht! Heute Morgen habe ich das Makro gestartet.

Zusammenbau meiner 8500, 9800, 8700, 9200 und 9900 Komponenten. Datei 85 existiert bereits , also beschließe ich, sie zu ersetzen, da ich noch an meinem Makro arbeite. Um die Aufzeichnung jeder meiner Assemblys abzuschließen.

 

Auf dem Computer eines Kollegen ist die Anzeige beim Öffnen der Datei korrekt. Die Montage F90149900 besteht aus F90149800 und F90149200 .... Du verstehst, was ich meine. Der Zugriff auf die festgelegte Referenztabelle und die Dateinamen sind korrekt.

 

Auf der anderen Seite zeigt mein Baum auf meinem Computer, wenn ich die Datei F90149900 öffne, 9800 und 9200 an, wobei sich in 9800 die F90148500 Datei befindet (die Datei, die ich während des Makroprozesses durch eine andere ersetzt habe).

Das  Referenzfenster der F90149900 Datei kann nicht geöffnet werden (nur auf meinem Computer) 

 

Da ich heute Morgen versucht habe, den Cache mit Rx zu leeren, habe ich meinen Computer neu gestartet und weiß nicht mehr, was ich tun soll :'(

 

Nämlich, dass meine Basisdateien, 8500, 8700, 9200, etc. hat kein Bauteil und wenn ich das F90149900 öffne, sind alle Bauteildateien sichtbar. Es gibt also nur ein Problem mit der Anzeige des Namens im Baum auf dem Computer, der das Makro startet. 

 

Ich habe das Makro noch nicht in anderen Beiträgen ausprobiert, ich ziehe es vor, Probleme zu vermeiden! Ich verteile genug davon, ohne es absichtlich zu tun;)

 

Ich hoffe, ich war klarer. Ich stehe Ihnen weiterhin zur Verfügung!

 

Herzliche Grüße

Hallo

Nach einem kleinen Test ist es mir gelungen, einen Teil des Problems zu reproduzieren. Um dies zu beheben, versuchen Sie, die ReloadOrReplace-Funktion nach jedem Speichern einer Assembly hinzuzufügen, achten Sie auf die rekursive Analysefunktion Ihrer Assembly, hier ist ein Beispiel:

(BEARBEITEN) Das Beispiel wurde entfernt, es gibt noch einige Arbeitsprobleme.

Herzliche Grüße

Eine andere Lösung, hier ist ein Beispiel für Code, der zu Hause auf einer Assembly mit mehr als 2 Ebenen ausgeführt wird, die Kopien sind gut gemacht und dies ohne Anzeigefehler, wie Sie möglicherweise in der Struktur haben. Das Prinzip besteht darin, die untergeordnete Assembly unter einem neuen Namen zu speichern und  ihren übergeordneten Assembly sofort erneut zu registrieren. Am Ende des Zyklus registriere ich die Assembly auf höherer Ebene neu, schließe sie und öffne sie dann erneut:

Option Explicit

Dim swApp As SldWorks.SldWorks
Dim chemin As String
Dim asmTitle As String
Dim boolstatut As Boolean
Dim lErrors As Long
Dim lWarnings As Long

Sub main()
    Dim swModel As SldWorks.ModelDoc2
    Dim swConfMgr As SldWorks.ConfigurationManager
    Dim swConf As SldWorks.Configuration
    Dim swRootComp As SldWorks.Component2
    
    Set swApp = CreateObject("SldWorks.Application")
    Set swModel = swApp.ActiveDoc
    Set swConfMgr = swModel.ConfigurationManager
    Set swConf = swConfMgr.ActiveConfiguration
    Set swRootComp = swConf.GetRootComponent3(True)
    
    chemin = "C:\Users\DRO\Desktop\Temp PDF\"
    asmTitle = swModel.GetTitle
    
    If swModel.GetType = SwConst.swDocASSEMBLY Then
        boolstatut = swModel.SaveAs3(chemin & "new-" & asmTitle, 0, 1)
        
        TraverseComponent swRootComp
        
        swModel.ForceRebuild3 True
    
        boolstatut = swModel.Save3(swSaveAsOptions_e.swSaveAsOptions_Silent + swSaveAsOptions_e.swSaveAsOptions_SaveReferenced, lErrors, lWarnings)
    
        swApp.CloseDoc swModel.GetTitle
        Set swModel = swApp.OpenDoc6(chemin & "new-" & asmTitle, 2, swOpenDocOptions_Silent, "", lErrors, lWarnings)
    End If
End Sub

Sub TraverseComponent(swComp As SldWorks.Component2)
    Dim vChildComp As Variant
    Dim swChildComp As SldWorks.Component2
    Dim swSelModelFils As SldWorks.ModelDoc2
    Dim swSelModelPere As SldWorks.ModelDoc2
    Dim i As Long
    vChildComp = swComp.GetChildren
    For i = 0 To UBound(vChildComp)
        Set swChildComp = vChildComp(i)
        Set swSelModelFils = swChildComp.GetModelDoc2
        If swSelModelFils.GetType = 2 Then
            boolstatut = swSelModelFils.SaveAs3(chemin & "new-" & swSelModelFils.GetTitle, 0, 1)
            Set swSelModelPere = swComp.GetModelDoc2
            boolstatut = swSelModelPere.Save3(swSaveAsOptions_e.swSaveAsOptions_Silent + swSaveAsOptions_e.swSaveAsOptions_SaveReferenced, lErrors, lWarnings)
            TraverseComponent swChildComp
        End If
    Next i
End Sub

Herzliche Grüße

Das ist in der Tat das, was mein Makro am Anfang gemacht hat, indem es das Kind, dann den Vater und so weiter aufzeichnete, indem es den Baum auf eine "logische" Weise hochging, es funktioniert ohne Probleme und man erhält die richtigen Referenzen und die richtige Anzeige im Baum.  Aber als ich ein Kind durch eine andere Baugruppe ersetzte, Die Namen der anderen Assemblys wurden nach der Registrierung nicht aktualisiert. Es war nur die Baumansicht, die falsch war.

 

Vielen Dank, dass Sie sich die Zeit genommen haben, das Problem zu beheben. Ihr Makro ist praktisch, um alle Komponenten einer zweistufigen Baugruppe unter einem neuen Namen zu speichern! Es ist ein gutes altes Pack & Go;)

 

Jemand hat die Lösung gefunden, ich habe das Kontrollkästchen "Komponentennamen aktualisieren, wenn Dokumente ersetzt werden" nicht aktiviert:

 

Warum es einfach machen, wenn man es kompliziert machen kann =)

 

Auf der anderen Seite verstehe ich nicht, warum die Namen beim zweiten Öffnen des Computers oder am nächsten Tag, nach dem Neustart des Computers, nicht aktualisiert werden, sicherlich eines der Geheimnisse von SolidWorks.