Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks Enterprise PDM
  EPDM API verzeichnis einer datei auslesen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Dassault Systèmes auf der Hannover Messe 2024 (kostenlose Tickets verfügbar)
Autor Thema:  EPDM API verzeichnis einer datei auslesen (977 / mal gelesen)
hstratmann
Mitglied
Konstrukteur

Sehen Sie sich das Profil von hstratmann an!   Senden Sie eine Private Message an hstratmann  Schreiben Sie einen Gästebucheintrag für hstratmann

Beiträge: 3
Registriert: 27.01.2021

erstellt am: 27. Jan. 2021 10:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,
ich suche eine Möglichkeit, zu einem Dateinamen z.B Test.sldprt, die im Tresor abgelegt ist
das zuständige Verzeichnis auszulesen.
Ergebnis sollte sein  Verzeichnis\Test.sldprt
Hintergrund ist, ich möchte mit der Angabe die Datei in Solidworks öffnen.
Ich habe mir schon etliche Befehle in der Api Hilfe angeschaut.
Aber mit Sachen wie search5 oder getfilefrompath oder ähnliches bin ich noch nicht weitergekommen.
Hat jemand von euch noche eine Idee oder einen Lösungsansatz.
Vielen Dank für die Hilfe.
Gruß Harald

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

riesi
Mitglied
CAD-Admin


Sehen Sie sich das Profil von riesi an!   Senden Sie eine Private Message an riesi  Schreiben Sie einen Gästebucheintrag für riesi

Beiträge: 1073
Registriert: 06.05.2002

SWX Office Pre. 2020-Sp5

erstellt am: 27. Jan. 2021 11:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für hstratmann 10 Unities + Antwort hilfreich

Ich würde mit Search ran gehen, da bekommst Du gleich die Verzeichnisse mit:

Code:

Function FindFirstPos(myvault As IEdmVault21, SWXModell As String) As Collection

Dim message          As String
Dim search            As IEdmSearch9
Dim result            As IEdmSearchResult5
Dim epdmFolder        As IEdmFolder11
Dim epdmfile          As IEdmObject5
Dim lFile            As IEdmBatchGet
Dim pdmSelItems()    As EdmSelItem
Dim error()          As String
Dim oFile            As IEdmFile17
Dim FSO              As FileSystemObject
'Dim PosResult As Collection

Dim boolstatus  As Boolean
Dim DesiredFile  As String
Dim ModelName    As String
Dim ModelPath    As String
Dim NewModelName As String
Dim i            As Integer

Dim longstatus As Long, longwarnings As Long, longerrors As Long

Set search = myvault.CreateSearch2
search.Clear

search.FindFolders = False
search.FindFiles = True
'search.FileName = SWXModell & "*(.sldprt|.sldasm|.slddrw)"
search.FileName = SWXModell
search.Recursive = True
search.SetToken Edmstok_Recursive, True

Set FindFirstPos = New Collection
FindFirstPos.Add "Dummy", "Name"

Set result = search.GetFirstResult
If result Is Nothing Then
  FindFirstPos.Remove (1)
  FindFirstPos.Add "Nichts", "Name"
  Set result = Nothing
  Set search = Nothing
  Exit Function
End If

ReDim pdmSelItems(2)

Set lFile = myvault.CreateUtility(EdmUtil_BatchGet)

i = 1
Do While Not result Is Nothing
  Set epdmFolder = myvault.GetObject(EdmObjectType.EdmObject_Folder, result.ParentFolderID)
  Set epdmfile = myvault.GetObject(result.ObjectType, result.ID)
  FindFirstPos.Remove (1)
  FindFirstPos.Add result.Name, "Name"
  ModelName = result.Name
  FindFirstPos.Add result.ID, "NameID"
  FindFirstPos.Add result.path, "Path"
  FindFirstPos.Add result.ParentFolderID, "FolderID"
  pdmSelItems(i).mlDocID = result.ID
  pdmSelItems(i).mlProjID = result.ParentFolderID

  lFile.AddSelection myvault, pdmSelItems
  lFile.CreateTree 0, EdmLib.EdmGetCmdFlags.Egcf_RefreshFileListing
  lFile.GetFiles 0
  Set result = search.GetNextResult
  i = i + 1
  If i = 2 Then Exit Do
Loop

Set result = Nothing
Set search = Nothing
End Function


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

hstratmann
Mitglied
Konstrukteur

Sehen Sie sich das Profil von hstratmann an!   Senden Sie eine Private Message an hstratmann  Schreiben Sie einen Gästebucheintrag für hstratmann

Beiträge: 3
Registriert: 27.01.2021

erstellt am: 27. Jan. 2021 13:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo riesi,
vielen Dank für die schnelle Antwort.
Die Zeile : search.FileName hat bei mir zum Ziel geführt.
Manchmal muss man auch die Dokumentation richtig lesen.
Hier eine Routine in C# mit der es bei mir funktioniert:

public string SWXDateiFullName(IEdmVault7 vault, string SWXDatei)
        {
            string strFullName = string.Empty;
            try
            {
                // IEdmSearch5 ist eine Schnittstelle zum schnellen auffinden von Dateien und Verzeichnissen
                IEdmSearch5 Search = vault.CreateSearch();  // Schnittstelle für die Suche instanziieren
                Search.Clear();  // Setzt alle Sucheigenschaften auf ihre Standardwerte zurück
                Search.FileName = SWXDatei;  // Ruft den Namen der Datei oder des Ordners ab, nach der gesucht werden soll, oder legt diesen fest.
                Search.FindFolders = false;  // Ruft ab oder legt fest, ob Ordner bei der Suche zurückgegeben werden sollen.
                Search.FindFiles = true;      // Ruft ab oder legt fest, ob Dateien bei der Suche zurückgegeben werden sollen.
                Search.Recursive = true;      // Ruft ab oder legt fest, ob in Unterordnern rekursiv gesucht werden soll.
                IEdmSearchResult5 Result = Search.GetFirstResult();  // Ruft die erste Datei oder den ersten Ordner ab, die bzw. der den Suchkriterien entspricht.
                strFullName = Result.Path;    // Gibt den vollen Dateinamen mit Verzeichnis zurück
            }
            catch (Exception ex)
            {
                strFullName = string.Empty;
            }

            return strFullName;
        }

Sollte jemand noch eine Idee zum auslesen von Vorschaubildern hat, besteht auch hier Interesse.
Idealerweise in C#
Es gibt in der Doku Beispiele, die aber so nicht funktionieren.
VBA Beispiel habe ich nicht getestet, da das in einer eigenständigen Anwendung funktionieren soll.
Schönen Tag noch
Gruß Harald

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

riesi
Mitglied
CAD-Admin


Sehen Sie sich das Profil von riesi an!   Senden Sie eine Private Message an riesi  Schreiben Sie einen Gästebucheintrag für riesi

Beiträge: 1073
Registriert: 06.05.2002

SWX Office Pre. 2020-Sp5

erstellt am: 27. Jan. 2021 13:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für hstratmann 10 Unities + Antwort hilfreich

Das sollte mit dem Document-Manager zu lösen sein. In der API-Hilfe gibt es auch ein Beispiel, probiert habe ich es noch nicht. Ausschnitt aus der API-Hilfe in SolidWorks

Code:

swDoc10 = (SwDMDocument10)swDoc;
// SwDMDocument10::GetPreviewBitmap throws an unmanaged COM exception
// for out-of-process C# console applications
// Use the following code in SOLIDWORKS C# macros and add-ins 
object objBitMap = swDoc10.GetPreviewBitmap(out nError);

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

hstratmann
Mitglied
Konstrukteur

Sehen Sie sich das Profil von hstratmann an!   Senden Sie eine Private Message an hstratmann  Schreiben Sie einen Gästebucheintrag für hstratmann

Beiträge: 3
Registriert: 27.01.2021

erstellt am: 27. Jan. 2021 14:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Das mit dem Document Manager habe ich auch gesehen.
Ich wollte allerdings zunächst den Aufwand vermeiden, mir eine Lizenznummer von Solidworks zu besorgen.
Deshalb habe ich auch den Document Manager nicht getestet.
Aber vielen Dank für den Hinweis.
Gruß Harald

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz