Problem z wyświetlaniem nazwy komponentu

Witam

 

Właśnie "skończyłem" makro, które wykonuje automatyczny montaż, a nawet podmienia komponent wewnątrz innego komponentu, drugiego poziomu złożenia. Po zakończeniu montażu wszystkie zapisane moje drzewo wyświetla stare numery i niczego nie aktualizuje. Zrestartowałem nawet komputer na wypadek, gdyby był to problem z pamięcią podręczną. Na komputerze kolegi ma odpowiedni wyświetlacz i są nawet odpowiednie referencje....

 

Mój montaż jest dobry, nie ma problemu poza wyświetlaniem nazw i jest tylko na moim komputerze, po użyciu mojego makra. Nie mam już dostępu do okna "odniesienie" podczas otwierania wspomnianego pliku.

Rwę sobie włosy z głowy na tym "małym" problemie, jestem trochę perfekcjonistką...

 

Z poważaniem, Mandragora.


capture.png

Witam

Musisz mieć wszędzie pliki tymczasowe, wyciąć Solidworks, a następnie spróbować zrobić czyszczenie systemu za pomocą Solidworks RX:

Pozdrowienia

Dziękuję za szybką odpowiedź, bez zmian na moim komputerze, przypominam, że w międzyczasie wyłączyłem i ponownie uruchomiłem komputer, więc logicznie czyszczę wszystkie pamięci podręczne.

 

Pozdrowienia

 

 


capture.png

Witam

Przepraszam za poprzednią odpowiedź, nie widziałem sensu na końcu zdania "Mój montaż jest dobry, nie ma problemu poza wyświetlaniem nazw i to tylko na moim komputerze, po użyciu mojego makra".

Wnioskuję, że dzieje się tak po użyciu makra, ale co jeśli załadujesz nowy zestaw, zapisany w ten sposób, na komputer bez użycia makra. A co, jeśli użyjesz swojego makra na komputerze kolegi?

Pozdrowienia

Ja też źle się wyraziłem, makro użyłem tylko raz. Od kiedy otwieram montaż mam zawsze ten sam wyświetlacz, słynny 9800 zamiast F90149800 nazwy i referencji zespołu w moim F90149900.

 

Postaram się wyrazić jaśniej, to nie jest takie proste! Dziś rano uruchomiłem makro.

Montaż moich komponentów 8500, 9800, 8700, 9200 i 9900. Plik 85 już istnieje, więc postanawiam go zastąpić, wciąż w trakcie mojego makra. Aby zakończyć nagrywanie każdego z moich zgromadzeń.

 

Na komputerze kolegi wyświetlacz podczas otwierania pliku jest poprawny. Montaż F90149900 składa się z F90149800 i F90149200 .... Wiesz, o co chodzi. Dostęp do ustawionej tabeli referencyjnej i nazw plików jest poprawny.

 

Z drugiej strony, na moim komputerze gdy otwieram plik F90149900 moim drzewie pokazuje 9800 i 9200, a wewnątrz 9800 znajduje się F90148500 plik (plik, który podmieniłem na inny podczas procesu makra).

Nie można otworzyć okna "odwołania"  pliku F90149900 (tylko na moim komputerze) 

 

Od dzisiejszego ranka próbowałem wyczyścić pamięć podręczną za pomocą Rx, zrestartowałem komputer i już nie wiem, co robić :'(

 

Mianowicie, że moje podstawowe pliki, 8500, 8700, 9200 itp. nie ma części, a kiedy otwieram F90149900 wszystkie pliki części są widoczne. Jest więc tylko problem z wyświetlaniem nazwy w drzewie na komputerze uruchamiającym makro. 

 

Nie próbowałem jeszcze makra w innych postach, wolę uniknąć problemów z rozprzestrzenianiem się! Rozsmarowałem go wystarczająco dużo, nie robiąc tego celowo ;)

 

Mam nadzieję, że wyraziłem się jaśniej. Pozostaję do Waszej dyspozycji!

 

Pozdrowienia

Witam

Po małym teście udało mi się odtworzyć część problemu. Aby rozwiązać ten problem, spróbuj dodać funkcję ReloadOrReplace po każdym zapisaniu zestawu, zwróć uwagę na rekurencyjną funkcję parsowania zestawu, oto przykład:

(EDIT) usunął przykład, pozostały pewne problemy z działaniem.

Pozdrowienia

Innym rozwiązaniem, oto przykład kodu działającego w domu na zestawie z więcej niż 2 poziomami, kopie są wykonane dobrze i to bez błędów wyświetlania, jakie możesz mieć w drzewie. Zasada jest taka, aby zapisać zespół potomny pod nową nazwą i  natychmiast ponownie zarejestrować jego ojca, na końcu cyklu ponownie rejestruję zespół wyższego poziomu, zamykam go, a następnie ponownie otwieram:

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

Pozdrowienia

To jest rzeczywiście to, co moje makro zrobiło na początku, nagrywając dziecko, potem ojca i tak dalej, wchodząc na drzewo w "logiczny" sposób, działa to bez problemu i otrzymujesz właściwe odniesienia i właściwe wyświetlanie w drzewie.  Ale kiedy zastąpiłem dziecko innym zespołem, Nazwy pozostałych zespołów nie były aktualizowane po rejestracji. Tylko widok drzewa był zły.

 

Dziękujemy za poświęcenie czasu na próbę rozwiązania problemu. Twoje makro jest miłe, aby zapisać wszystkie komponenty zespołu dwupoziomowego pod nową nazwą! To stary, dobry Pack & Go ;)

 

Ktoś znalazł rozwiązanie, którego nie zaznaczyłem pola "aktualizuj nazwy komponentów po zastąpieniu dokumentów" :

 

Po co to upraszczać, skoro można to skomplikować =)

 

Z drugiej strony nie rozumiem, dlaczego nazwy nie aktualizują się przy drugim otwarciu komputera lub następnego dnia, po ponownym uruchomieniu komputera, co na pewno jest jedną z tajemnic SolidWorks.