| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | | |  | 7 Tipps für die Konstruktion von Kunststoffteilen und Spritzgussformen, ein Webinar am 27.06.2025
|
Autor
|
Thema: Solidworks API - Dateien im PDM (1147 / mal gelesen)
|
g-konstruktion Mitglied Konstrukteur
 
 Beiträge: 481 Registriert: 05.11.2001 Athlon II X4 645 PNY Quadro K2200 32GB RAM -- Solidworks 2021 -- Mod Prosteel-Forum
|
erstellt am: 13. Apr. 2023 11:28 <-- editieren / zitieren --> Unities abgeben:         
Hi, ich habe ein kleines VBA-Makro geschrieben, dass pdf-Dateien zu Teilen/Baugruppen öffnet. Funktioniert auch schon gut. Wir haben im Solidworks PDM ein globales pdf-Verzeichnis, sowie lokale Unterordner. Außerdem können pdfs im gleichen Ordner, wie das Modell liegen. Deswegen ermittle ich aus dem vorhandenen Modell (bzw. der ausgewählten Komponente im Featurebaum) die möglichen Pfade und frage diese ab. Syntax: globalPathExists = dir(globalPath) Anhand der Variable erkenne ich dann, ob das Teil lokal, global... gefunden wird und öffne es mit dem pdf-Reader. Nun ist es so, dass die pdf per Task erzeugt werden und u.U. noch nicht im lokalen Vault aktualisiert sind, da die Verzeichnisse nicht automatisch aktualisiert werden beim Start des PDM. Ich habe bemerkt, dass diese Dateien dann auch nicht vom Makro gefunden werden und die globalPathExists leer bleibt. Suche ich per Explorer, werden die Dateien logischerweise im Vault gefunden und können geöffnet werden. Kann ich diese Datei auf neue Versionen prüfen oder gibt es bessere Wege, die Dateien zu suchen? 2. Frage: Wenn er nichts findet, starte ich den Explorer im pdf-Verzeichnis, so dass eine manuelle Suche gestartet werden kann. Kann ich hier direkt eine PDM-weite Suche im Explorer starten, den Dateinamen in ein Suchfeld voreintragen o.ä.? Mit der PDM-Programmierung habe ich mich noch gar nicht befasst, bei Solidworks api stehe ich noch relativ am Anfang. Danke Euch! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
riesi Mitglied CAD-Admin
   
 Beiträge: 1100 Registriert: 06.05.2002 SWX Premium 2023-Sp5
|
erstellt am: 13. Apr. 2023 12:53 <-- editieren / zitieren --> Unities abgeben:          Nur für g-konstruktion
Es gibt zwei Möglichkeiten: 1) Ausgehend vom Pfad der Zeichnungs-Ableitung kann geprüft werden, ob die Zeichnung eine Verwendung hat. Dazu muss im Task unter Ausgabedatei-Details der Haken "Referenz von Zieldatei zu Quelldatei erstellen" angekreuzt sein. Dann kannst Du via API den Verwendungsnachweis der Zeichnung auflösen und bekommst den vollständigen Pfad zur PDF-Datei. Bei uns haben wir ein Addin fürs PDM geschrieben, um ausgehend vom Explorer die Zeichnung als PDF anzeigen zu lassen. 2) Ausgehend vom Dateinamen im PDM nach der PDF-Datei suchen. Geht auch, dauert etwas länger. In beiden Fall muss im Erfolgsfall die Datei in den Cache geholt werden, damit sie der Viewer anzeigen kann. Auch das geht via API. [Diese Nachricht wurde von riesi am 13. Apr. 2023 editiert.] [Diese Nachricht wurde von riesi am 13. Apr. 2023 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
g-konstruktion Mitglied Konstrukteur
 
 Beiträge: 481 Registriert: 05.11.2001 Athlon II X4 645 PNY Quadro K2200 32GB RAM -- Solidworks 2021 -- Mod Prosteel-Forum
|
erstellt am: 24. Apr. 2023 09:01 <-- editieren / zitieren --> Unities abgeben:         
Hallo danke für deine Antwort, ich war leider einige Zeit außer Gefecht. Ich weiß nicht, ob ich dich falsch verstehe, aber ich glaube, das beschriebene löst nicht mein Problem. Mein Makro findet die Zeichnung und öffnet sie (eigentlich), wenn sie im PDM liegt. Nun gibt es aber pdf, die angelegt sind, aber nicht in den lokalen Tresor geholt wurden. Ich muss auch noch testen, wie es sich verhält, falls die Version im Tresor höher ist als im lokalen Cache. Beim Öffnen über den Explorer holt er, falls notwendig, die letzte Version und öffnet diese dann. Beim Öffnen übers Makro liefert mir das Dir-Kommando einen leeren String, obwohl die Datei im PDM gefunden wird. Dann öffnet er sie auch nicht, weil er denkt, diese existiert nicht. Deshalb meine Frage zu deinem Punkt "in den Cache holen". Kannst du mir hierzu einen Tipp geben? Danke! Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
riesi Mitglied CAD-Admin
   
 Beiträge: 1100 Registriert: 06.05.2002 SWX Premium 2023-Sp5
|
erstellt am: 24. Apr. 2023 09:39 <-- editieren / zitieren --> Unities abgeben:          Nur für g-konstruktion
Wenn eine Datei nicht im Cache ist, wird diese z.B. von der File-System-Object-Klasse "nicht gesehen/gefunden". Gilt auch für alle anderen Befehle in VBA, welche irgendwas mit Dateien machen. Deswegen muss die Datei tatsächlich auf der Festplatte sein. Um den Sprachgebrauch des PDMs zu nutzen: In den Cache holen. Wenn Du das File- und Folder-Object hast, kannst Du mit Hilfe der beiden IDs und eine kleinen Unterroutine, alles in den "Cache" holen.
Code:
Sub HoleNeusteVersion(myVault As IEdmVault21, FileId As Long, FolderId As Long) Dim lFile As IEdmBatchGet Dim pdmSelItems(1) As EdmSelItem pdmSelItems(1).mlDocID = FileId pdmSelItems(1).mlProjID = FolderId Set lFile = myVault.CreateUtility(EdmUtil_BatchGet) lFile.AddSelection myVault, pdmSelItems lFile.CreateTree 0, EdmLib.EdmGetCmdFlags.Egcf_ForViewer lFile.GetFiles 0 Set lFile = Nothing End Sub
[Diese Nachricht wurde von riesi am 24. Apr. 2023 editiert.] [Diese Nachricht wurde von riesi am 24. Apr. 2023 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
g-konstruktion Mitglied Konstrukteur
 
 Beiträge: 481 Registriert: 05.11.2001 Athlon II X4 645 PNY Quadro K2200 32GB RAM -- Solidworks 2021 -- Mod Prosteel-Forum
|
erstellt am: 24. Apr. 2023 10:42 <-- editieren / zitieren --> Unities abgeben:         
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |