| |
| 3DEXPERIENCE Conference 2024 | München, eine Veranstaltung am 16.10.2024
|
Autor
|
Thema: Daten aus Datenkarte auslesen (2574 / mal gelesen)
|
azrenner Mitglied CAD-Admin/IT-Systembetreuer
Beiträge: 20 Registriert: 13.11.2019 Dell Precision 7540 Intel Core i7-9850H @2.6GHz 6-Cores Nvidia Quadro RTX 3000 6GB 32GB RAM 2666MHz ------------ Windows 10 Pro (Version 2004) SolidWorks 2017 SP5 Enterprise PDM 2017 SP5 ------------ VB.Net VB VBA C++ C#
|
erstellt am: 13. Nov. 2019 08:43 <-- editieren / zitieren --> Unities abgeben:
Hallo miteinander, ich bin noch relativ neu in der Makro-Programmierung von SolidWorks/PDM. Hat jemand vielleicht eine Idee, was hier schief läuft? Umgebung: SolidWorks Enterprise 2017 SP5 Solidworks 2015 SP5 mit VBA Editor 7.1 Ziel: Es sollen Informationen aus der Datenkarte ausgelesen, und ich eine Variable geschrieben werden. Vorhanden: Dim epdmEnumVar As IEdmEnumeratorVariable5 Dim epdmPDMFile As IEdmFile5 Dim strBeschr1 As String Dim GetVarSuccess As Boolean Dim epdmPDMVault As IEdmVault5 Set epdmPDMVault = New EdmVault5 epdmPDMVault.LoginAuto "XXX", 0 Set epdmPDMFile = epdmPDMVault.GetFileFromPath("C:\PDM\XXX\XXX.SLDDRW") Set epdmEnumVar = epdmPDMFile.GetEnumeratorVariable GetVarSuccess = epdmEnumVar.GetVar("Beschreibung", "@", strBeschr1) Was geht? Vault Login und .GetFileFromPath - Befüllt das epdmPDMFile-Objekt korrekt) Was geht nicht? .GetVar - Die Funktion macht zwar irgendwas - epdmEnumVar ist danach nicht mehr "Nothing" - aber in der Schnellüberwachung wird <keine Variablen> angezeigt. Hat da vielleicht jemand eine Idee? Vielen Dank schonmal! [Diese Nachricht wurde von azrenner am 13. Nov. 2019 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ulf St. Mitglied IT-Verantwortlicher ERP/PDM/CAD
Beiträge: 36 Registriert: 10.04.2017 SolidWorks 2017 SP5 SQL-Server 2008-2016
|
erstellt am: 14. Nov. 2019 17:29 <-- editieren / zitieren --> Unities abgeben: Nur für azrenner
|
azrenner Mitglied CAD-Admin/IT-Systembetreuer
Beiträge: 20 Registriert: 13.11.2019 Dell Precision 7540 Intel Core i7-9850H @2.6GHz 6-Cores Nvidia Quadro RTX 3000 6GB 32GB RAM 2666MHz ------------ Windows 10 Pro (Version 2004) SolidWorks 2017 SP5 Enterprise PDM 2017 SP5 ------------ VB.Net VB VBA C++ C#
|
erstellt am: 15. Nov. 2019 06:43 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank für deinen Hinweis! Das war tatsächlich das Problem. Inzwischen habe ich eine kleine Function draus gebastelt, die ich gern Teilen möchte. Vielleicht kann das ja noch jemand anders brauchen. Private Function doGetPDMCardVar(ByVal epdmPDMVault As EdmVault5, FilePath As String, VarName As String, VarConfig As String) As Variant ' Liest Daten von der PDM-Datenkarte ' Übergabeparameter: doGetPDMCardVar( epdmVault, Kompletter Pfad, Name des Feldes auf der Datenkarte, Konfigurationsname der Datenkarte) ' Rückgabewert: Feldinhalt as Variant On Error GoTo myCrash Dim epdmPDMFile As IEdmFile5 Dim epdmEnumVar As IEdmEnumeratorVariable5 'Für Zugriff auf die Datenkarten-Variablen Dim varOut As Variant Set epdmPDMFile = epdmPDMVault.GetFileFromPath(FilePath) Set epdmEnumVar = epdmPDMFile.GetEnumeratorVariable epdmEnumVar.GetVar VarName, VarConfig, varOut doGetPDMCardVar = varOut Exit Function myCrash: doGetPDMCardVar = "Fehler beim Lesen der PDM-Datenkarte" End Function ------------ Aufruf zu Testzwecken der Function funktioniert hiermit einwandfrei: Dim test As String test = doGetPDMCardVar(epdmPDMVault, "C:\PDM\...\...\XXX.SLDDRW", "Beschreibung", "Blatt1") Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
Beiträge: 1764 Registriert: 18.01.2001
|
erstellt am: 22. Nov. 2019 21:38 <-- editieren / zitieren --> Unities abgeben: Nur für azrenner
Hallo azrenner, danke für das Makro ich hab mir erlaubt Dein Makro noch ein wenig zu erweitern, damit gleiche eine Liste von Variablen zurückgegeben wird Private Function doGetPDMCardVar(ByVal epdmPDMVault As EdmVault5, FilePath As String, VarName As Variant, VarConfig As String) As Variant On Error GoTo myCrash Dim epdmPDMFile As IEdmFile5 Dim epdmEnumVar As IEdmEnumeratorVariable5 Dim varOut As Variant Dim Werte() As Variant Dim i As Integer Set epdmPDMFile = epdmPDMVault.GetFileFromPath(FilePath) Set epdmEnumVar = epdmPDMFile.GetEnumeratorVariable i = 0 For Each n In VarName ReDim Preserve Werte(i) epdmEnumVar.GetVar n, VarConfig, Werte(i) i = i + 1 Next n doGetPDMCardVar = Werte Exit Function myCrash: doGetPDMCardVar = "Fehler beim Lesen der PDM-Datenkarte" End Function Sub main() Dim strBeschr1 As Variant Dim epdmPDMVault As IEdmVault5 Dim VarList As Variant Dim ConfigName As String Dim Path As String Dim i As Integer Path = "Pfad" 'Pfad einsetzen ConfigName = "Standard" 'Konfigurationsnamen einsetzen VarList = Array("V1", "V2", "V3") 'Variablennamen einsetzen Set epdmPDMVault = New EdmVault5 epdmPDMVault.LoginAuto "XX", 0 'Tresornamen einsetzen strBeschr1 = doGetPDMCardVar(epdmPDMVault, Path, VarList, ConfigName) i = 0 For Each n In VarList Debug.Print "Variable: " & n & " Wert: " & strBeschr1(i) i = i + 1 Next n End Sub
------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nathanael Mitglied Netzwerk- und Systemadministrator
Beiträge: 3 Registriert: 09.05.2022
|
erstellt am: 09. Mai. 2022 15:52 <-- editieren / zitieren --> Unities abgeben: Nur für azrenner
Hallo, kann mir bitte jemand erklären warum generell die Dateiformate wie IEdmFile5 und IEDMEnumeratorVariable5 etc als Fehler angezeigt werden. Bei mir steht dann, dass das benutzerdefinierte typen sind, die nicht definiert sind. Aber Sie sind doch Teil des normalen Codes und nicht benutzerdefiniert? Das meiste auf dieser Seite was ich ausführen möchte wird abgelehnt. Woran liegt das? Bin auch noch Anfänger in VBA, hab aber schon viele Jahre an Programmiererfahrung auf dem Buckel. Und ich weiß dass der Beitrag schon älter ist, aber hab auch keine Aktuelleren gefunden, die das Thema aufgreifen. Wäre super, wenn hierzu eine hilfreiche Antwort käme.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
riesi Mitglied CAD-Admin
Beiträge: 1087 Registriert: 06.05.2002 SWX Office Pre. 2023-Sp5
|
erstellt am: 10. Mai. 2022 08:23 <-- editieren / zitieren --> Unities abgeben: Nur für azrenner
|
Nathanael Mitglied Netzwerk- und Systemadministrator
Beiträge: 3 Registriert: 09.05.2022
|
erstellt am: 10. Mai. 2022 10:10 <-- editieren / zitieren --> Unities abgeben: Nur für azrenner
Danke für die Antwort, das war tatsächlich Auslöser der Meldung. Jetzt meckert er allerdings bei der Schleife in Zeile: "Debug.Print "Variable: " & n & " Wert: " & strBeschr1" Mir scheint, dass der Inhalt von strBeschr1 das Problem ist. Hab schon versucht mit CStr(strBeschr1) eine Typkonvertierung zum String zu erzwingen. Ändert aber nichts daran, dass er beim Debuggen in der Zeile hängen bleibt. Außerdem müsste es eh ein String sein, weil ich annehme, dass der Zugriff auf die Variablen nicht funktioniert hat. Für Tipps bin und bleibe ich sehr dankbar. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nathanael Mitglied Netzwerk- und Systemadministrator
Beiträge: 3 Registriert: 09.05.2022
|
erstellt am: 10. Mai. 2022 10:14 <-- editieren / zitieren --> Unities abgeben: Nur für azrenner
|