Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks Enterprise PDM
  Daten aus Datenkarte 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
Autor Thema:  Daten aus Datenkarte auslesen (1859 mal gelesen)
azrenner
Mitglied
CAD-Admin/IT-Systembetreuer


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

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 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 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


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

Beiträge: 35
Registriert: 10.04.2017

SolidWorks 2017 SP5
SQL-Server 2008-2016

erstellt am: 14. Nov. 2019 17: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 azrenner 10 Unities + Antwort hilfreich

Hi azrenner,

ändere Dim strBeschr1 As String zu Variant, das sollte funktionieren.

------------------
Mit freundlichen Grüßen
Ulf-Dirk Stockburger

BiI SAP-PDM

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

azrenner
Mitglied
CAD-Admin/IT-Systembetreuer


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

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 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

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



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

Beiträge: 1675
Registriert: 18.01.2001

erstellt am: 22. Nov. 2019 21:38    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 azrenner 10 Unities + Antwort hilfreich

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

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

Beiträge: 3
Registriert: 09.05.2022

erstellt am: 09. Mai. 2022 15:52    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 azrenner 10 Unities + Antwort hilfreich

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
Konstrukteur, 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: 962
Registriert: 06.05.2002

SWX Office Pre. 2020-Sp5

erstellt am: 10. Mai. 2022 08:23    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 azrenner 10 Unities + Antwort hilfreich

Ist unter Verweise die PDM Libaray angekreuzt?

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

Nathanael
Mitglied
Netzwerk- und Systemadministrator

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

Beiträge: 3
Registriert: 09.05.2022

erstellt am: 10. Mai. 2022 10:10    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 azrenner 10 Unities + Antwort hilfreich

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

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

Beiträge: 3
Registriert: 09.05.2022

erstellt am: 10. Mai. 2022 10: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 azrenner 10 Unities + Antwort hilfreich

Okay, hat jetzt doch geklappt, vielen Dank!

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)2022 CAD.de | Impressum | Datenschutz