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
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
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 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:
- 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.
- 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...
Ale i tak dobrze jest wiedzieć, że obrazy tam są! Może komuś to pomoże
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
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!