Abrufen des Vorschaubildes in PDM

Hallo

Ich möchte einen Weg finden, den Speicherort zu finden oder das Vorschaubild eines Teils oder einer Baugruppe zu verwenden, das auf der Registerkarte PDM in SolidWorks angezeigt wird.

Dies würde es ermöglichen, diese Bilder für die spätere Verwendung (z. B. in der Dokumentation) nicht neu generieren zu müssen, sondern es würde ermöglichen, dass ein Bild direkt verfügbar ist.

Wenn jemand eine Idee hat, danke ich Ihnen im Voraus!

1 „Gefällt mir“

Hallo

Bei dem Bild muss es sich um das Bild handeln, das in der Solidworks Datei gekapselt ist. Dies ist dasjenige, das bei der Registrierung generiert wird. A priori ist es jetzt unmöglich, wiederhergestellt zu werden (da Solidworks die Dateien .sldprt, .sldasm und .slddrw verschlüsselt).

Auf der anderen Seite habe ich diese 3D-Ansicht nicht in meinem EPDM 2022 Sp3.0. Ist es eine Neuheit oder ist es ein Parameter, den ich nicht finden kann?

2 „Gefällt mir“

Hallo
Normalerweise ist es sichtbar und hat schon immer existiert, wenn mein Gedächtnis mir richtig dient.
Es kann ausgeblendet werden, da die 3 sichtbaren Elemente (arbo PDM, ISO-Ansicht und Trunk-Info) in der Größe veränderbar sind.

Hallo @Cyril.f
Gut gemacht: Die Features wurden überlagert...

Vielen Dank

2 „Gefällt mir“

Hallo
Ich habe gesucht, damit wir mit dem Makro das Vorschaubild wiederherstellen können. Im Folgenden finden Sie den Codeausschnitt, der in Excel ausgeführt werden soll:

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

BEARBEITEN: Dieser Codeausschnitt ist sehr einfach, je nach Bedarf kann ich ihn mit Funktionen ausschmücken. Wie codiert, ruft es das Bild nur aus einer vordefinierten Datei und in seiner lokal geladenen Version ab.

4 „Gefällt mir“

Danke, so ist es perfekt!

Vielen Dank, dass Sie @Cyril.f geteilt haben!
Auf meiner Seite habe ich ein kleines Problem mit Ihrem Stück Code... das ich anscheinend nicht lösen kann, und ich wollte wissen, ob Sie ein ähnliches Problem haben oder gar nicht...

Ich versuche gerade, die Teilevorschauen eines Satzes über eine Stückliste abzurufen, die von PDM nach Excel exportiert wurde, mit einer Spalte, die die " IDs " jeder Datei enthält.
Und wenn ich den Code ausführe, erhalte ich einen Fehler in einer Datei in der Zeile " Set Image = ...  ›:

und wenn ich versuche, über ein Makro aus SolidWorks die Vorschau dieser Teile abzurufen, erhalte ich auch eine Fehlermeldung:

Haben Sie eine Idee, woher das Problem kommen könnte?

Hallo
Die Datei wird möglicherweise nicht lokal zwischengespeichert.
Ich verwende dieses Makro nicht, daher bräuchte ich den vollständigen Code, um zu testen und zu sehen, wo das Problem liegen kann.

1 „Gefällt mir“

Nicht dumm für die Tatsache, dass es nicht im lokalen Cache ist... Ich muss mir ansehen, wie ich sie lokal lade, bevor ich das Bild zum Testen bekomme!

Hier ist das Detail des fraglichen Codes :slight_smile:
Nur zur Erklärung: Dies fügt das Dateivorschaubild in einen Kommentar einer Excel-Zelle (Spalte F) ein, basierend auf der ID jeder Datei (Spalte B)!
Ändern Sie einfach den PDM-Tresornamen und den Dateipfad für das Bild und es funktioniert :wink:

und hier ist meine Excel-Dateistruktur, von der aus ich das Makro starte:

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

Das Ergebnis:

Wir können sehen, dass es zu einigen Teilen keine Kommentare gibt und daher die Vorschau...

1 „Gefällt mir“

Hallo
Sie müssen die BatchGet-Methode des Tresors verwenden. CreateUtility, persönlich habe ich diesen Code verwendet:

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

Mit iNbVers = Versionsnummer der zu beziehenden Datei.
AsBuilt ruft die Datei so ab, wie sie im Tresor gespeichert ist (Versionsverknüpfungen) und die zweite SkipExisting-Option ermöglicht es Ihnen, die Dateien nicht bereits lokal zu laden (ich habe dies getan, weil ich den gesamten Tresor so schneller gescannt hatte).
Um zu sehen, ob Sie auch eine Cache-Flush-Funktion zwischen zwei Abrufen benötigen, funktioniert dieser Code:

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

cVault = Name Ihres PDM-Tresors

1 „Gefällt mir“

Nun, ich habe getestet und es ändert nichts... Es ist unmöglich, das Bild auf einigen Teilen :confused: zu haben, jedoch habe ich gut überprüft, ich habe die betreffenden Dateien lokal.
Ich verstehe nicht, woher das Problem kommt!

Hallo @yves-marie.freyssinet

Wenn Sie Zugriff auf den Archivserver haben (also Hack für einen Admin reserviert), können Sie jederzeit die Bilder bekommen, die Sie suchen.
Die Vorschau befindet sich in den Verzeichnissen, in denen die Versionen der Dateien gespeichert sind.
In der Praxis scheint es jpg in .img umbenannt zu haben (nur um schmerzhaft zu öffnen);

Nb:

  1. Die Speicherlogik auf dem Archivserver ist seltsam: Sie müssen die Datei ref (die ID) haben, aber in hexadezimaler Form (sonst ist es nicht lustig) und die Dateien werden in 16 Verzeichnisse klassifiziert.
    Alle Dateien mit der gleichen ID-Endung befinden sich im selben Verzeichnis. In der obigen Abbildung endet die hexadezimale ID der Datei mit 4, sodass das Verzeichnis in das Verzeichnis eingeordnet wird, das mit 4 endet.
  2. Der Name der Bilddateien ist noch seltsamer: Es kann sich um eine Chrono-Nummer handeln und es kann eine SQL-Tabelle geben, die die Verbindung zwischen dem Namen der Datei/ihrer Version und der Vorschaudatei herstellt. Man muss die SQL-Tabellen durchwühlen, um es zu finden, denke ich.
1 „Gefällt mir“

Danke für den @froussel Track! Aber leider habe ich keinen Zugriff auf den Archivserver... :confused:
Aber es ist trotzdem gut zu wissen, dass die Bilder da sind! Vielleicht hilft es jemand anderem :slight_smile:

Hallo
Ich habe gerade getestet und habe tatsächlich das gleiche Problem bei einigen Dateien. Ich habe noch nicht herausgefunden, woher es kommt (im Moment sehe ich nur, dass die Datei, in der es abstürzt, in die Version 2023 konvertiert wird, was bei der Testdatei, auf die ich gezeigt habe, als ich den Code vorgeschlagen habe, nicht der Fall ist). Mehr Ideen gibt es im Moment nicht.
Bearbeiten: @froussel , gut gesehen, bin ich so daran gewöhnt, dass Thumbs-Dateien nichts mit Bilddateien zu tun haben, dass ich mich nie damit beschäftigt habe. Für die Nummerierung ja muss es sich um eine Verknüpfung mit der SQL-Datenbank handeln, andererseits können wir mit den Registrierungsdaten der Dateien durchkommen (nicht überprüft im Falle von Dateien, die zum Versionswechsel konvertiert wurden, wenn das Image neu generiert wurde).

Also antworte ich mir, ich glaube, ich habe es gefunden. Ich habe gerade in dem Dateiordner nachgesehen, der den Fehler zurückgibt, und ich habe kein Bild, das dem Datum entspricht, an dem die Datei gespeichert wurde.
Dem Tresor scheint es also gut zu gehen, aber über die APIs funktioniert es nicht.

1 „Gefällt mir“

Danke für die Untersuchung :slight_smile:
Nun, ich denke, es wird in diesem Fall ein Rätsel bleiben... Ich hätte mir gewünscht, dass in der PDM-API-Hilfe mehr erklärt worden wäre, warum und wie, aber es gibt nichts!