Pobierz obraz podglądu w PDM

Witam

Chciałbym znaleźć sposób na znalezienie lokalizacji lub sposobu użycia obrazu podglądu części lub złożenia, który jest wyświetlany na karcie PDM w SolidWorks.

Umożliwiłoby to brak konieczności ponownego generowania tych obrazów do późniejszego wykorzystania (na przykład w dokumentacji), ale umożliwiłoby bezpośrednie udostępnienie obrazu.

Jeśli ktoś ma pomysł, z góry dziękuję!

1 polubienie

Witam

Obraz musi być obrazem hermetyzowanym w pliku Solidworks. To jest ten, który jest generowany podczas rejestracji. A priori niemożliwe do odzyskania teraz (ponieważ Solidworks szyfruje pliki .sldprt, .sldasm i .slddrw).

Z drugiej strony nie mam tego widoku 3D w moim EPDM 2022 Sp3.0. Czy to nowość, czy jest to parametr, którego nie mogę znaleźć?

2 polubienia

Witam
Normalnie jest ona widoczna i zawsze istniała jeśli pamięć mi dobrze służy.
Może być ukryty, ponieważ 3 widoczne elementy (arbo PDM, widok ISO i informacje o magistrali) można zmieniać.

Witam @Cyril_f
Dobra robota: funkcje zostały nałożone...

Dziękuję

2 polubienia

Witam
Szukałem, więc za pomocą makra możemy odzyskać podgląd obrazu. Poniżej znajduje się fragment kodu do uruchomienia z programu Excel:

Sub TestExportBitmap()
Dim sFilename As String
Dim file15 As IEdmFile17
Dim folder              As IEdmFolder6
Dim vault               As EdmVault5

Dim Image As stdole.IPictureDisp

Set vault = New EdmVault5

vault.LoginAuto "<Nom de coffre>", 0

sFilename = "xxx" 'Renseigner le chemin d'accès au fichier
Set file15 = vault.GetFileFromPath(sFilename, folder)
Set Image = file15.GetThumbnail2(file15.CurrentVersion)

stdole.SavePicture Image, "C:\PDF\Test.BMP"
End Sub

EDIT: Ten fragment kodu jest bardzo prosty, w zależności od potrzeb mogę go upiększyć funkcjami. Zgodnie z kodem pobiera obraz tylko z predefiniowanego pliku i w wersji załadowanej lokalnie.

4 polubienia

Dziękuję, w ten sposób jest idealny!

Dziękujemy za udostępnienie @Cyril_f !
Z mojej strony mam mały problem dotyczący Twojego fragmentu kodu... którego nie mogę rozwiązać i chciałem wiedzieć, czy masz podobny problem, czy wcale...

Obecnie próbuję pobrać podglądy części zestawu za pomocą zestawienia materiałów wyeksportowanego z PDM do Excela z kolumną zawierającą " ID " każdego pliku.
A kiedy uruchamiam kod, otrzymuję błąd w jakimś pliku w wierszu ' Set Image =...  ›:

a kiedy próbuję pobrać za pomocą makra z SolidWorks podgląd tych samych części, również pojawia się błąd:

Czy masz pomysł, skąd może wynikać problem?

Witam
Plik może nie być przechowywany lokalnie w pamięci podręcznej.
Nie używam tego makra, więc potrzebowałbym kompletnego kodu do przetestowania i zobaczenia, gdzie może być problem.

1 polubienie

Nie głupi za to, że nie ma go w lokalnej pamięci podręcznej... Muszę sprawdzić, jak załadować je lokalnie, zanim uzyskam obraz do testowania!

Oto szczegóły kodu, o którym mowa :slight_smile:
Aby dać pewne wyjaśnienie, umieszcza to obraz podglądu pliku w komentarzu komórki Excela (kolumna F) na podstawie identyfikatora każdego pliku (kolumna B)!
Po prostu zmień nazwę skarbca PDM i ścieżkę pliku dla obrazu i działa :wink:

a oto moja struktura plików Excel, z której uruchamiam makro:

Sub TestExportBitmap()
Dim sFilename As String
Dim file15 As IEdmFile17
Dim vault As EdmVault5
Dim Image As stdole.IPictureDisp

Set vault = New EdmVault5

vault.LoginAuto "NOM_COFFRE", 0
CheminImg = CHEMIN_IMAGE

For i = 2 To Cells(1, 1).End(xlDown).Row

On Error Resume Next
        
        Set file15 = vault.GetObject(EdmObject_File, Range("B" & i).Value)
        Set Image = file15.GetThumbnail2(file15.CurrentVersion)

        stdole.SavePicture Image, CheminImg

        If Dir(CheminImg) <> "" Then

            If Not Range("F" & i).Comment Is Nothing Then Range("F" & i).Comment.Delete

            Range("F" & i).AddComment
                With Range("F" & i).Comment.Shape
                    .Fill.UserPicture CheminImg
                    .Width = 300
                    .Height = 250
                End With

        End If
        
    Kill CheminImg
    Set Image = Nothing
    
On Error GoTo 0
    Next

End Sub

Efekt:

Widzimy, że nie ma komentarzy do niektórych części, a zatem podgląd...

1 polubienie

Witam
Należy użyć metody BatchGet magazynu . CreateUtility, osobiście użyłem tego fragmentu kodu:

Sub PDMBatch()
Set PDMBatchGetUtil = vault.CreateUtility(EdmUtil_BatchGet)
PDMSelItems(0).mlDocID = File.ID
PDMSelItems(1).mlProjID = Folder.ID
PDMBatchGetUtil.AddSelectionEx vault, File.ID, Folder.ID, iNbVers
PDMBatchGetUtil.CreateTree 0, EdmGetCmdFlags.Egcf_AsBuilt
PDMBatchGetUtil.CreateTree 0, EdmGetCmdFlags.Egcf_SkipExisting
PDMBatchGetUtil.GetFiles 0
End Sub

Z iNbVers = numer wersji pliku, który ma zostać uzyskany.
Oprogramowanie powykonawcze pobiera plik w takiej postaci, w jakiej został zapisany w repozytorium (linki do wersji), a druga opcja SkipExisting pozwala nie ładować plików już lokalnie (zrobiłem to, ponieważ miałem cały magazyn w skanowaniu, więc szybciej).
Aby sprawdzić, czy potrzebna jest również funkcja opróżniania pamięci podręcznej między dwoma pobraniami, ten kod działa:

Sub ClearCache()
Set ClearLocalCache = vault.CreateUtility(EdmUtil_ClearLocalCache)
ClearLocalCache.AddFolder (cCoffre)
ClearLocalCache.CommitClear
End Sub

cVault = Nazwa twojego skarbca PDM

1 polubienie

No to przetestowałem i to nic nie zmienia... niemożliwe jest posiadanie obrazu na niektórych częściach :confused: Jednak dobrze sprawdziłem, mam pliki, o których mowa, lokalnie.
Nie rozumiem, skąd bierze się problem!

Witam @yves-marie.freyssinet

Jeśli masz dostęp do serwera archiwum (więc hack zarezerwowany dla administratora), zawsze możesz przejść i pobrać obrazy, których szukasz.
Podglądy znajdują się w katalogach, w których przechowywane są wersje plików.
W praktyce wygląda na to, że nazwa jpg została zmieniona na .img (tylko po to, aby otwarcie było bolesne);

Nb:

  1. Logika przechowywania na serwerze archiwum jest dziwna: musisz mieć ref pliku (ID), ale w systemie szesnastkowym (inaczej nie jest to zabawne), a pliki są klasyfikowane w 16 katalogach.
    wszystkie pliki z tym samym zakończeniem identyfikatora znajdują się w tym samym katalogu. Na powyższej ilustracji szesnastkowy identyfikator pliku kończy się liczbą 4, więc katalog jest klasyfikowany w katalogu kończącym się na 4.
  2. Nazwa plików graficznych jest jeszcze dziwniejsza: może to być numer chrono i może istnieć tabela SQL, która tworzy powiązanie między nazwą pliku/jego wersją a plikiem podglądu. Myślę, że musisz grzebać w tabelach sql, aby go znaleźć.
1 polubienie

Dzięki za @froussel utwór! Ale niestety nie mam dostępu do serwera archiwum... :confused:
Ale i tak dobrze jest wiedzieć, że obrazy tam są! Może komuś to pomoże :slight_smile:

Witam
Właśnie testowałem i faktycznie mam ten sam problem z niektórymi plikami. Nie znalazłem jeszcze, skąd się bierze (na razie jedyne, co widzę, to to, że plik, w którym się zawiesza, jest konwertowany do wersji 2023, co nie ma miejsca w przypadku pliku testowego, na który wskazywałem, proponując kod). Na razie nie ma więcej pomysłów.
Edycja: @froussel , dobrze widzę, jestem tak przyzwyczajony do plików Thumbs, które nie mają nic wspólnego z plikami graficznymi, że nigdy się nad tym nie zastanawiałem. Dla numeracji tak musi być dla linku z bazą danych SQL, z drugiej strony z datami rejestracji plików może nam to ujść na sucho (nie zaznaczone w przypadku plików przekonwertowanych do podmiany wersji, jeśli obraz został zregenerowany).

Więc odpowiadam sobie, myślę, że to znalazłem. Właśnie zajrzałem do folderu plików, który zwraca błąd i nie mam obrazu odpowiadającego dacie zapisania pliku.
Wydaje się więc, że skarbiec radzi sobie dobrze, ale za pośrednictwem interfejsów API nie działa.

1 polubienie

Dzięki za śledztwo :slight_smile:
Cóż, myślę, że w tym przypadku pozostanie to tajemnicą... Chciałbym mieć więcej wyjaśnień, dlaczego i jak w API PDM pomaga, ale nic nie ma!