Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks Enterprise PDM
  VB.NET - GetLocalVersionNo2 Method (IEdmFile12)

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
  
PLM TechnologieForum Essen
Autor Thema:  VB.NET - GetLocalVersionNo2 Method (IEdmFile12) (1051 / mal gelesen)
Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2572
Registriert: 02.10.2006

erstellt am: 11. Nov. 2021 17:08    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


Tresoransicht-Neuer-Aelter.png

 
Hallo,
ich arbeite momentan an einem Makro mit Visual Studio Express 2017.
Hierbei wird auch die Document Manager API  verwendet, sprich ohne SolidWorks 2021.
Über diese Document Manager API möchte ich Informationen aus unseren SW-Dateien auslesen.
Hierzu müssen diese lokal in der aktuellen Version vorliegen.
Dies ist aber nicht immer so gegeben. (siehe Beispielbild)

Nun möchte ich die lokal ältere Datei mit der roten Kugel aus dem Tresor aktualisieren.
Die neuere Datei mit der grünen Kugel muss so bleiben wie gehabt.

Hierzu möchte ich den Befehl GetLocalVersionNo2 Method (IEdmFile12) verwenden.
In der Hilfe hier:
http://help.solidworks.com/2021/english/api/epdmapi/epdm.interop.epdm~epdm.interop.epdm.iedmfile12~getlocalversionno2.html?verRedirect=1

Einen ähnlichen Beitrag hatte ich schon mal hier behandelt.
http://ww3.cad.de/foren/ubb/Forum466/HTML/000251.shtml

Hier konnte ich aber die Funktion "immer mit der neuesten Version arbeiten" vom PDM verwenden, da beim öffnen mit SW die Datei automatisch aktualisiert wird. Dies funktioniert hier nicht, da ich ohne SW mit der Document Manager API arbeite.

Nun wollte ich die Abfrage wie folgt verwenden.
Ausschnitt aus dem Code:

Code:

        Dim versionNo2 As Integer
        Dim pbLocalOverwrittenVersionObsolete As Boolean
        pbLocalOverwrittenVersionObsolete = True

        versionNo2 = oFile.GetLocalVersionNo2(oFile.GetLocalPath(oFolder.ID), pbLocalOverwrittenVersionObsolete)

        If versionNo2 = -1 And pbLocalOverwrittenVersionObsolete = True Then    'Wenn lokale Version älter als Tresorversion ist
          oFile.GetFileCopy(0)
        End If


Ich bekomme für die Variable versionNo2 sowohl bei neueren als auch bei älteren Dateien eine -1 zurück.
Für die Variable pbLocalOverwrittenVersionObsolete erwarte ich bei älteren Dateien ein True.

Zitat:

Zitat:
True if the file in the user's local cache is obsolete, false if it is valid (see Remarks)

Leider erhalte ich für pbLocalOverwrittenVersionObsolete in beiden Fällen ein False.
Also sowohl für die älteren als auch neueren Dateien. (rote / grüne Kugel)

Was läuft hier schief? 

Hat wer ähnliche Erfahrungen und evtl. eine Abhilfe für mein Problem?

Habe auch schon folgendes Probiert, um nicht aus versehen mit falschen Rückgabewerten zu arbeiten.
Hatte diesen Fall mal mit suppressed.

Code:

        Dim BoolInfo As Boolean
        BoolInfo = CBool(CInt(pbLocalOverwrittenVersionObsolete))

Grüße, Andi

------------------
Hast du kein Problem?
Such dir eins. ( Und löse es )

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

CAD-Maler
Mitglied
Konstrukteur / CAD-Admin / Mädchen für alles


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

Beiträge: 720
Registriert: 17.01.2007

SWX 2017 SP5
AutoCAD 2017
Win 8.1 pro 64 bit
Intel Xeon 3,5GHz
16GB RAM
Nvidia Quadro K2200
SWx EPDM
AP+

erstellt am: 12. Nov. 2021 08:16    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 Andi Beck 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Andi Beck:
Hat wer ähnliche Erfahrungen und evtl. eine Abhilfe für mein Problem?

Nein (da noch nie benutzt) und vielleicht:

Als Idee: Bei jeder Datei prüfen, ob sie ausgecheckt (oder schreibgeschützt) ist. Ohne Auschecken sollte ja keine Änderung gespeichert sein können, da die Datei sonst schreibgeschützt ist. Ergo kein grüner Ball.

Gruß, Jens

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: 12. Nov. 2021 08:45    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 Andi Beck 10 Unities + Antwort hilfreich

GetLocalVersionNo2  liefert nur Versions-Nr. welche im Cache liegt, wenn die Datei denn im Cache ist. Sonst -1, wie Du schon erkannt hast.

Ich glaube, was Du brauchst ist das hier:

Code:

Function GetToCache(myVault As IEdmVault21, oFile As IEdmFile17, oFolderID As Integer, Handler As Integer) As Boolean
        Try
            Dim BatchGet As IEdmBatchGet = myVault.CreateUtility(EdmUtility.EdmUtil_BatchGet)
            BatchGet.AddSelectionEx(myVault, oFile.ID, oFolderID, oFile.CurrentVersion)
            BatchGet.CreateTree(Handler, EdmGetCmdFlags.Egcf_ForViewer)
            BatchGet.GetFiles(Handler)
            Return True
        Catch ex As Exception
            Return False
        End Try
    End Function


Die Funktion bringt Dir immer die aktuelle Version in den Cache. Vor Aufruf der Funktion würde ich mit islocked prüfen, ob die Datei ausgecheckt ist und nur dann aufrufen, wenn das nicht der Fall ist. Den Handler kannst Du mit Me.Handle.ToInt32() holen.

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

Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2572
Registriert: 02.10.2006

erstellt am: 12. Nov. 2021 09:47    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


Tresoransicht-Neuer-Aelter-2.png

 
Zitat:
Original erstellt von CAD-Maler:

Als Idee: Bei jeder Datei prüfen, ob sie ausgecheckt (oder schreibgeschützt) ist. Ohne Auschecken sollte ja keine Änderung gespeichert sein können, da die Datei sonst schreibgeschützt ist. Ergo kein grüner Ball.

Hallo Jens, 
danke schön für deine Anregungen.
Auf den ersten Blick sah das ganz plausibel aus. Diese zusätzliche Abfrage macht aber nur Sinn, wenn nicht auch bei der roten Kugel ausgecheckt sein kann.
Also habe ich das mit der roten Kugel versucht. Wenn ich auschecke, wird mir automatisch die lokale Version aktualisiert.
Jetzt kann ich aber in SolidWorks einen älteren Speicherstand holen, und behalte dabei die Schreibrechte, also identisch mit der grünen Kugel, hmm.
Bei diesem Vorgang ist mir eine fehlerhafte Darstellung im Explorer aufgefallen. (siehe Bild)
Im Explorer wird mir der ältere Stand mit -/2 und einer grünen Kugel dargestellt.
In SW wird es korrekt mit 1/2 und einer roten Kugel dargestellt.

Ergo bekomme ich keine eindeutige Unterscheidung zwischen roter und grüner Kugel, was mir ja eigentlich pbLocalOverwrittenVersionObsolete liefern sollte.

Grüße, Andi 

------------------
Hast du kein Problem?
Such dir eins. ( Und löse es )

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

Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2572
Registriert: 02.10.2006

Firma: SW 2023-5.0 + PDM Prof.
Windows 10 Pro 64bit, i9-11900
32 GbRAM, Quadro P2200
Home:
SW 2023-5.0
Passungstabelle von Heinz
Windows 11 Pro 64bit,
i7-12700K, 32 GbRAM,
GeForce GTX 1050Ti
Samsung C34H892, 3440x1440 Pixel

erstellt am: 12. Nov. 2021 10:06    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

Zitat:
Original erstellt von riesi:

Die Funktion bringt Dir immer die aktuelle Version in den Cache. Vor Aufruf der Funktion würde ich mit islocked prüfen, ob die Datei ausgecheckt ist und nur dann aufrufen, wenn das nicht der Fall ist. Den Handler kannst Du mit Me.Handle.ToInt32() holen.

Hallo Riesi, 
auch dir besten Dank für deinen Vorschlag.
Also, wenn deine Routine auch die neuere grüne lokale Version überschreibt, dann wäre zwingend die zusätzliche Abfrage nach islocked notwendig.
Dann habe ich aber das gleiche Problem mit den roten Kugeln, wie ich es oben für Jens beschrieben habe.
Wenn diese Bedingung stimmen sollte, dann hat deine Routine keinen Vorteil zur bestehenden Funktion oFile.GetFileCopy(0).

Es muss doch eine eindeutige Unterscheidung zwischen roter und grüner Kugel geben, verstehe da SolidWorks nicht. 

Grüße, Andi 

------------------
Hast du kein Problem?
Such dir eins. ( Und löse es )

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: 12. Nov. 2021 10:35    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 Andi Beck 10 Unities + Antwort hilfreich

Zitat:

Über diese Document Manager API möchte ich Informationen aus unseren SW-Dateien auslesen.
Hierzu müssen diese lokal in der aktuellen Version vorliegen.
....
Nun möchte ich die lokal ältere Datei mit der roten Kugel aus dem Tresor aktualisieren.


Hier nochmal Deine obige Aussage. Meine Funktion hilft Dir, die aktuelle Version in den Cache zu bekommen. Mit der Abfrage, ob ausgecheckt, bist Du auf der sicheren Seite.

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

Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2572
Registriert: 02.10.2006

erstellt am: 12. Nov. 2021 11:11    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

Zitat:
Original erstellt von riesi:

Hier nochmal Deine obige Aussage. Meine Funktion hilft Dir, die aktuelle Version in den Cache zu bekommen. Mit der Abfrage, ob ausgecheckt, bist Du auf der sicheren Seite.

Wenn die rote Kugel schreibgeschützt ist, wird diese aktualisiert, richtig.
Wenn die rote Kugel nicht schreibgeschützt ist, wird diese nicht aktualisiert, falsch.

Wenn ich diesen Schreibschutz als Bedingung abfrage, aktualisiere ich mit oFile.GetFileCopy(0) ebenfalls.
Deine Routine bringt hier keinen Vorteil, sorry.

Momentan suche ich nach einer Alternative.
Mit dem Befehl swDoc.LastSavedDate bekomme ich das letzte Speicherdatum.
Wie bekomme ich das Datum für das zuletzt eingecheckt her?
So könnte ich einen zuverlässigen Älter / Neuer vergleich anstellen.

Grüße, Andi

------------------
Hast du kein Problem?
Such dir eins. ( Und löse es )

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: 12. Nov. 2021 12:07    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 Andi Beck 10 Unities + Antwort hilfreich

Die rote Kugel besagt, dass Du die Datei von einer alten Version ausgecheckt hast. Aus meiner Sicht wäre es besser, vorm ausschecken die Datei zu aktualisieren. So würdest Du den alten Versions-Stand hinter der neusten Version einspeichern. Klingt für mich nicht logisch.

Wie gesagt, ausgecheckte Dateien würde ich eh' nicht anfassen.

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: 12. Nov. 2021 12:29    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 Andi Beck 10 Unities + Antwort hilfreich

Hier ein Ausschnitt aus meinem Programm, ich brauche es für einen anderen Fall. Die Abfrage nach dem letzten Datum müsstest Du in die For Each-Schleife einbauen.
Code:

Dim oFileHistory As IEdmHistory3
oFileHistory = oVault.CreateUtility(EdmUtility.EdmUtil_History)
oFileHistory.AddFile(oFile.ID)
Call oFileHistory.GetSortedHistory(aoHistItem, EdmHistoryType.Edmhist_FileRevision +
                  EdmHistoryType.Edmhist_FileMove + EdmHistoryType.Edmhist_FileState +
                  EdmHistoryType.Edmhist_FileVersion)
Dim evDesc As String = ""
For Each oHist As EdmHistoryItem In aoHistItem
    evDesc = oFileHistory.GetEventDescription(oHist, EdmLangCode.LanGerman).ToString
    dgvVersions.Rows.Add(evDesc, oHist.mlVersion.ToString, oHist.mbsUserName, oHist.moDate.ToString, oHist.mbsComment)
Next

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

Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2572
Registriert: 02.10.2006

erstellt am: 12. Nov. 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

Zitat:
Original erstellt von riesi:

Wie gesagt, ausgecheckte Dateien würde ich eh' nicht anfassen.

da hast du natürlich recht.
Dieser rote Zustand ohne Schreibschutz ist sowieso ein seltener Ausnahmefall, aber er kann theoretisch vorkommen.
Dieser lässt sich momentan von dem grünen Zustand nicht unterscheiden.
Wenn ich jetzt meine Dateiauswertungen mache, beschreibe ich in der Exceltabelle diesen Zustand als unklar.
Im Falle der roten Variante werte ich veraltete Informationen aus, also unklar.
Im Falle der grünen Variante wären es die neuesten Informationen und eben nicht unklar.
Hier könnte ich auf dieses Merkmal verzichten.

Durch den Datumsabgleich müsste ich jetzt einen eindeutigen Zustand beschreiben können.
Danke dir für den Codeschnipsel, werde ich am Montag doch gleich mal testen.
(Zu Hause habe ich keinen Zugriff auf den Tresor)

Wünsche euch ein erholsames Wochenende und Danke nochmals für die Hilfe. 

Grüße, Andi 

------------------
Hast du kein Problem?
Such dir eins. ( Und löse es )

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

CAD-Maler
Mitglied
Konstrukteur / CAD-Admin / Mädchen für alles


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

Beiträge: 720
Registriert: 17.01.2007

SWX 2017 SP5
AutoCAD 2017
Win 8.1 pro 64 bit
Intel Xeon 3,5GHz
16GB RAM
Nvidia Quadro K2200
SWx EPDM
AP+

erstellt am: 12. Nov. 2021 14:11    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 Andi Beck 10 Unities + Antwort hilfreich


2021-11-12_PDM-Symbole.png

 
Zitat:
Original erstellt von riesi:
Die rote Kugel besagt, dass Du die Datei von einer alten Version ausgecheckt hast.

Kleiner Einspruch: Die rote Kugel besagt nur, daß es im Tresor eine neuere Version gibt, egal ob ausgecheckt oder nicht. -->

Da bei uns hier auch Fälle vorkommen, bei denen eigentlich eingecheckte Dateien ohne Schreibschutz im lokalen Cache rumliegen, als auch, dass bei lokalen Dateien beim Auschecken der Schreibschutz nicht entfernt wird, ist die Abfrage von ebenjenem vielleicht doch nicht so sonderlich glücklich. Ich denke auch, mit IsLocked bist du da sicherer.

Zur History gibts auch ein gutes Beispiel in der Hilfe. Ich habe aber schon festgestellt, dass nicht immer der letzte Eintrag ausgelesen wird, warum auch immer (liegt nicht an User, Pfad, Dateityp und auch nicht am Zurücksetzen oder Neueste Version überschreiben...).   

Gruß, Jens

[Diese Nachricht wurde von CAD-Maler am 12. Nov. 2021 editiert.]

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

Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2572
Registriert: 02.10.2006

erstellt am: 17. Nov. 2021 15:15    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


Zuletzt-gespeichert-1.png


Zuletzt-gespeichert-2.png

 
Zitat:
Original erstellt von Andi Beck:

Durch den Datumsabgleich müsste ich jetzt einen eindeutigen Zustand beschreiben können.

Hallo,
da bin ich noch einmal.
Es ist zum Mäusemelken, jetzt habe ich zweierlei Daten (Datum), aber leider nicht die richtige Kombination. :D
Schaut euch die beiden Bilder an.

Bild Zuletzt-gespeichert-1:
Hier ist eine Zeichnung mit der grauen Kugel und der Version 1/1 in der Betrachtung:
Datum der Änderung:                  09.11.21 16:06:06
Verlauf Historie:                    11.11.21 14:20:03
Eigenschaften Zuletzt eingecheckt:   09.11.21 16:06:06
Dateiinformation in SolidWorks:      09.11.21 16:06:07

-----------------------------------------------------------

Bild Zuletzt-gespeichert-2:
Hier ist eine Baugruppe mit der grünen Kugel und der Version -/3 in der Betrachtung:
Datum der Änderung:                  11.11.21 14:52:24
Verlauf Historie:                    11.11.21 14:51:18
Eigenschaften Zuletzt eingecheckt:   11.11.21 14:50:52
Dateiinformation in SolidWorks:      17.11.21 13:24:35

-----------------------------------------------------------

Wie ihr seht, gibt es 4 verschiedene Datumsangaben die zum Teil irreführend sein können.
Per Code habe ich momentan 2 Datumsangaben. Mir fehlt ein drittes und viertes Datum.

Datum der Änderung:

Code:

Dim dmDoc2 As SwDMDocument27
Dim LetztesSpeicherdatum As Date
dmDoc2 = dmDocMgr.GetDocument(FoundPath, GetDocType(FoundPath), True, nRetVal)
LetztesSpeicherdatum = dmDoc2.LastSavedDate


Verlauf Historie:

Code:

        For Each oHist As EdmHistoryItem In aoHistItem
            evDesc = oFileHistory.GetEventDescription(oHist, EdmLangCode.LanGerman).ToString
            Eincheckdatum = oHist.moDate
        Next

Ursprünglich dachte ich, dass das Datum der Änderung und das Datum aus der Historie zueinander passen würde.
Das stimmt aber nicht.
Um die graue Kugel mit der Version 1/1 vergleichen zu können, brauche ich das Datum Eigenschaften Zuletzt eingecheckt.

Um die grüne Kugel mit der Version /3 vergleichen zu können, brauche ich das Datum der Dateiinformation in SolidWorks.

Wie komme ich an die zusätzlichen beiden Datums ran?
Zur Erinnerung, kein SolidWorks auf, sondern mit der Dokument Manager API.

Habt ihr eine Idee?

Grüße, Andi   

------------------
Hast du kein Problem?
Such dir eins. ( Und löse es )

[Diese Nachricht wurde von Andi Beck am 17. Nov. 2021 editiert.]

[Diese Nachricht wurde von Andi Beck am 18. Nov. 2021 editiert.]

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

CAD-Maler
Mitglied
Konstrukteur / CAD-Admin / Mädchen für alles


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

Beiträge: 720
Registriert: 17.01.2007

SWX 2017 SP5
AutoCAD 2017
Win 8.1 pro 64 bit
Intel Xeon 3,5GHz
16GB RAM
Nvidia Quadro K2200
SWx EPDM
AP+

erstellt am: 18. Nov. 2021 08:25    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 Andi Beck 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Andi Beck:
Eigenschaften Zuletzt eingecheckt.

Das sollte doch über EdmHistoryType = Edmhist_FileVersion rauszubekommen sein:

http://help.solidworks.com/2018/english/api/epdmapi/EPDM.Interop.epdm~EPDM.Interop.epdm.EdmHistoryType.html

Habe ich aber noch nicht getestet, für mich reicht hier der allerletzte Eintrag der Historie, egal, was das ist.


Zitat:
Datum der Dateiinformation in SolidWorks.

Da schon geschaut?

http://help.solidworks.com/2018/english/api/epdmapi/epdm.interop.epdm~epdm.interop.epdm.iedmfile5~getlocalfiledate.html

Oder über Windows-API:

https://docs.microsoft.com/en-us/dotnet/api/system.io.file.getlastwritetime?view=net-6.0,
https://docs.microsoft.com/en-us/dotnet/api/system.io.file.getlastaccesstime?view=net-6.0

Gruß, Jens

[Diese Nachricht wurde von CAD-Maler am 18. Nov. 2021 editiert.]

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: 18. Nov. 2021 12: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 Andi Beck 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Andi Beck:

Wie komme ich an die zusätzlichen beiden Datums ran?
Zur Erinnerung, kein SolidWorks auf, sondern mit der Dokument Manager API.

Das ist einfach: Du legst eine Instanz zu ISwDMDocument an und fragst die beiden Properties CreationDate und LastSavedDate ab. Hab' dafür keinen Beispielcode, sollte aber nicht sehr schwer sein. Damit das klappt, muss die Datei im Cache sein.

Edit: Obiges hast Du ja schon.

Zur Version aus PDM: Ich glaube ich würde wie folgt vorgehen, ausgehend vom IEdmFile5-Object z.B. oFile:

Code:

DIM oEnumVer As IEdmEnumeratorVersion5 = DirectCast(ofile, IEdmFile5)
DIM IEdmVersion5 As oVersion = oEnumVer.GetVersion({Versionsnummer})
DIM oCreateDate As DateTime = oVersion.VersionDate
DIM oModifyDate As DateTime = oVersion.FileDate

Probiere es mal aus, habe ich selber noch nie genutzt.

[Diese Nachricht wurde von riesi am 18. Nov. 2021 editiert.]

[Diese Nachricht wurde von riesi am 18. Nov. 2021 editiert.]

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

Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2572
Registriert: 02.10.2006

erstellt am: 18. Nov. 2021 13:35    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


Zuletzt-gespeichert-2.png

 
Hallo Jens,
danke schön für deine Beispiele.
Erst war ich erfreut, aber dann auch ernüchtert.
(Mein Bezugsbild anbei)

Link 1:
entspricht meinem Beispiel 2 von oben. Dort wird bereits Edmhist_FileVersion ausgewertet.
Es liefert:
Verlauf Historie:                    11.11.21 14:51:18

Link 2 und 3: (GetLocalFileDate Method und GetLastWriteTime)
Es liefert:
Datum der Änderung:                  11.11.21 14:52:24

Link 4 ist nicht zu gebrauchen, liefert den letzten Zugriff.

Also bekomme ich Zeiten, welche ich bereits habe.
Meine Wunschdaten von oben habe ich noch nicht.

Zitat:
Um die graue Kugel mit der Version 1/1 vergleichen zu können, brauche ich das Datum Eigenschaften Zuletzt eingecheckt.

Um die grüne Kugel mit der Version /3 vergleichen zu können, brauche ich das Datum der Dateiinformation - Zuletzt gespeichert am: in SolidWorks.


Aber Danke schön für deine Mühen. 
Grüße, Andi

------------------
Hast du kein Problem?
Such dir eins. ( Und löse es )

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: 18. Nov. 2021 13:56    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 Andi Beck 10 Unities + Antwort hilfreich

Mit Datum kommst Du nicht weiter, wenn Du Dateien vergleichen willst. Ich würde mit md5sum die Dateien vergleichen, dass sollte zu 100%igen Ergebnissen führen. Bei NuGet gibt es auch passende Pakete. Dazu musst Du Dir die Datei vom PDM in ein temporäres Verzeichnis kopieren und von Deinen jeweiligen Dateien im Chache jeweils eine Checksumme ziehen. Diese kannst Du dann vergleichen.

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

Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2572
Registriert: 02.10.2006

erstellt am: 18. Nov. 2021 16:22    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

Zitat:
Original erstellt von riesi:

Edit: Obiges hast Du ja schon.

Hallo Riesi,
auch dir besten Dank für deine Schnipsel.
Den oberen Bereich hast du ja bereits als bekannt selber entdeckt. ;)

Aber an deinem Schnipsel habe ich etwas basteln müssen (fehlende Deklarationen und Verdreher dabei) :D

Mit folgendem Code habe ich Ergebnisse bekommen:

Code:

        Dim oEnumVer As IEdmEnumeratorVersion5 = DirectCast(oFile, IEdmFile5)
        Dim oCreateDate As DateTime  'Eincheckdatum in den Tresor: Historie / Verlauf 'Zeitangabe Sommerzeit??
        Dim oModifyDate As DateTime  'Zuletzt eingecheckt: aus Eigenschaften          'Zeitangabe Sommerzeit??
        Dim version As IEdmVersion7
        Dim pos As IEdmPos5
        pos = oEnumVer.GetFirstVersionPosition

        While Not pos.IsNull
            version = oEnumVer.GetNextVersion(pos)
            oCreateDate = version.VersionDate
            oModifyDate = version.FileDate
        End While


Und hier bin ich fündig geworden.
Mit version.VersionDate bekomme ich eine bereits bekannte Zeit.
Mit version.FileDate bekomme ich eine gesuchte Zeit, Klasse.      

Allerdings sind diese beiden Zeiten um eine Stunde früher als in den Bildern zu sehen ist.
Hat das was mit Sommerzeit etc. zu tun???
Gibt es da eine Formatierung für, um das auf das gleiche Niveau zu setzen?

Grüße, Andi  

Edit:
Habe da was gefunden, womit es funktioniert, geht doch. :D

Code:

        Dim localModifyDate As DateTime
        localModifyDate = oModifyDate.ToLocalTime()

------------------
Hast du kein Problem?
Such dir eins. ( Und löse es )

[Diese Nachricht wurde von Andi Beck am 18. Nov. 2021 editiert.]

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: 19. Nov. 2021 07:40    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 Andi Beck 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Andi Beck:

...(fehlende Deklarationen und Verdreher dabei) ..

Das kommt davon, wenn man zu viel mit C# arbeitet und ungeprüften Code hier rein stellt. 

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

Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2572
Registriert: 02.10.2006

erstellt am: 25. Nov. 2021 09:48    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


Fehlermeldung-0x8004020B.png

 
Hallo,
da bin ich nochmals, es hört nicht auf zu stocken. 

Jetzt habe ich noch ein Problem mit dem aktualisieren des lokalen Cache.

Wie oben beschrieben, aktualisiere ich bisher mit folgendem Befehl.

Code:

oFile.GetFileCopy(0)

Dieser Befehl funktioniert im Moment nur noch, wenn lokal noch kein Dokument gespeichert war.
Habe ich aber ein Dokument mit dem Status rote Kugel und 1/2, dann bekomme ich eine Meldung, wie im Bild zu sehen ist.
Auch diese beiden Varianten funktionieren nicht.

Code:

oFile.GetFileCopy(0, "")
'bzw.
oFile.GetFileCopy(0, 2)

Evtl. kennt jemand von euch eine Lösung.
Wegen diesem Problem habe ich nun die Routine von Riesi    von oben etwas modifiziert eingebaut.

Code:

            If GetToCache(vault1, FoundPath, oFile, Me.Handle.ToInt32()) = True Then
                Call MsgBox("lokale Version der Komponente ist älter als Tresorversion und ist nicht ausgechecked und wurde aktualisiert!", vbSystemModal, "Information")
            Else
                Call MsgBox("lokale Version der Komponente ist älter als Tresorversion und ist nicht ausgechecked und wurde nicht aktualisiert!", vbSystemModal, "Information")
            End If

    Function GetToCache(myVault As IEdmVault21, FileName As String, oFile As IEdmFile17, Handler As Integer) As Boolean
        Try

            Dim oFolderID As Integer
            Dim oFolder As IEdmFolder10 = Nothing                      'Ordnernamen
            Dim aFile As IEdmFile17
            aFile = CType(myVault.GetFileFromPath(FileName, oFolder), IEdmFile17)
            oFolderID = oFolder.ID
            Dim BatchGet As IEdmBatchGet = myVault.CreateUtility(EdmUtility.EdmUtil_BatchGet)
            BatchGet.AddSelectionEx(myVault, oFile.ID, oFolderID, oFile.CurrentVersion)
            BatchGet.CreateTree(Handler, EdmGetCmdFlags.Egcf_ForViewer)
            BatchGet.GetFiles(Handler)
            Return True
        Catch ex As Exception
            Return False
        End Try
    End Function


Aber auch diese aktualisiert den Cache nicht.
In allen Variablen bekomme ich Werte zugewiesen und die Routine wird mit True abgeschlossen, dennoch keine Aktualisierung.

Habt Ihr eine Idee, woran das liegen kann?

Grüße, Andi 

------------------
Hast du kein Problem?
Such dir eins. ( Und löse es )

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: 25. Nov. 2021 12:28    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 Andi Beck 10 Unities + Antwort hilfreich

Des Rätsels Lösung kann eigentlich nur sein, dass die Datei gerade geöffnet ist und nicht aktualisiert werden kann. Gründe können sein:

* In SolidWorks geöffnet (FileLock aufheben, dass kennst Du schon)
* In Document-Manager-API noch geöffnet: ISwDMDocument ==> CloseDoc aufrufen
* In PDM-API mit IEdmEnumeratorVariable geöffnet. ==> CloseFile aufrufen

Edit: Sehe gerade das Bild, natürlich ist es so.

[Diese Nachricht wurde von riesi am 25. Nov. 2021 editiert.]

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

Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2572
Registriert: 02.10.2006

erstellt am: 25. Nov. 2021 13:41    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,
und du liegst mal wieder Gold richtig. 

Code:

dmDoc2.CloseDoc()

SolidWorks ist nicht auf und somit ist der Hinweis auf ISwDMDocument zutreffend.
Und dieser Bereich ist ja völliges Neuland für mich.
Dachte nicht, dass die Document Manager API wie eine Anwendung zu verstehen ist.
Man lernt nie aus.

Könnte eigentlich ne Standleitung zu dir gebrauchen. 

Jetzt habe ich nur noch ein kleines Problem zu lösen, und mein Makro dürfte erst mal fertig sein.
(Beim Date-Vergleich muss ich eine Toleranzzeit von einer Sekunde einbauen)

Besten Dank nochmals, Grüße, Andi

------------------
Hast du kein Problem?
Such dir eins. ( Und löse es )

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

Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2572
Registriert: 02.10.2006

Firma: SW 2023-5.0 + PDM Prof.
Windows 10 Pro 64bit, i9-11900
32 GbRAM, Quadro P2200
Home:
SW 2023-5.0
Passungstabelle von Heinz
Windows 11 Pro 64bit,
i7-12700K, 32 GbRAM,
GeForce GTX 1050Ti
Samsung C34H892, 3440x1440 Pixel

erstellt am: 26. Nov. 2021 09:00    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

Zitat:
Original erstellt von Andi Beck:

(Beim Date-Vergleich muss ich eine Toleranzzeit von einer Sekunde einbauen)

Hallo,
nur, falls das mal jemand gebrauchen kann, hier die Lösung.

Code:

        Dim DifferenzTime As Long
        DifferenzTime = DateDiff("s", LetztesCheckInDatum, LetztesSpeicherdatum)        'Differenzzeit der Dokumente in Sekunden (Lokal älter = negativer Wert)

        If DifferenzTime > 2 Then                                                      'Wenn lokale Version neuer als Tresorversion ist,
            Call MsgBox("lokale Version der Komponente ist neuer als Tresorversion!", vbSystemModal, "Information")
        ElseIf DifferenzTime < -2 Then                                                  'Wenn lokale Version älter als Tresorversion ist
            Call MsgBox("lokale Version der Komponente ist älter als Tresorversion!", vbSystemModal, "Information")
            oFile.GetFileCopy(0)  'hier Datei aktualisieren
        Else                                                                        'Wenn lokale Version und Tresorversion identisch sind,
            Call MsgBox("lokale Version der Komponente und Tresorversion sind identisch!", vbSystemModal, "Information")
        End If


Grüße und schönes WE, Andi

------------------
Hast du kein Problem?
Such dir eins. ( Und löse es )

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

CAD-Maler
Mitglied
Konstrukteur / CAD-Admin / Mädchen für alles


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

Beiträge: 720
Registriert: 17.01.2007

SWX 2017 SP5
AutoCAD 2017
Win 8.1 pro 64 bit
Intel Xeon 3,5GHz
16GB RAM
Nvidia Quadro K2200
SWx EPDM
AP+

erstellt am: 26. Nov. 2021 14:42    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 Andi Beck 10 Unities + Antwort hilfreich

Zu langsam... Ich hätte dafür eine Lösung parat gehabt:

Code:
If CDate(Datum1) <= DateAdd("n", 15, CDate(Datum2)) Then

(Puffer von 15min zw Datum1 und Datum2)

Und falls mal jemand die Differenz in Tagen, Minuten und Sekunden ausgeben muss:

Code:
vTage = Abs(DateDiff("n", Datum1, Datum2)) \ 1440
vStunden = (Abs(DateDiff("n", Datum1, Datum2)) Mod 1440) \ 60
vMinuten = (Abs(DateDiff("n", Datum1, Datum2)) Mod 1440) Mod 60

Gruß, Jens  

[Diese Nachricht wurde von CAD-Maler am 26. Nov. 2021 editiert.]

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