Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Solid Edge
  Variablentabelle in VBA 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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SolidEdge
Autor Thema:  Variablentabelle in VBA auslesen (750 mal gelesen)
Slyfox
Mitglied
Informatiker


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

Beiträge: 26
Registriert: 27.03.2003

erstellt am: 19. Jun. 2003 00:33    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

Die folgende Funktion liest die Variablennamen und -werte aus dem aktuellen Dokument aus und gibt diese aus:

Zitat:

Private Sub menuShowVariables_Click()
  Dim objApp As Object
  Dim objDoc As Object

  Dim objVariables As Object
  Dim objVariable As Object
  Dim objNamedDims As Object
  Dim objNamedDim As Object
  Dim objDim As Object
  Dim Name As String
 
  Set objApp = GetObject(, "SolidEdge.Application")
  Set objDoc = objApp.ActiveDocument
 
  Set objVariables = objDoc.Variables
  Set objNamedDims = objVariables.Query("*")
       
  For Each objNamedDim In objNamedDims
    Name = objVariables.GetName(objNamedDim)
    Set objDim = objVariables.Translate(Name)
    Debug.Print Name & " = " & objDim.Value
  Next
End Sub


Das Problem dabei ist jedoch, dass die Werte nicht in mm und Grad ausgegeben werden, sondern in Meter und RAD (mit denen SE wohl intern rechnet).
Um die Werte wieder umzurechnen, benötige ich die Einheit, ich muß wissen, ob es ein Winkel oder eine Distanz ist.
Laut Hilfe gibt's ein Property 'UnitsType', jedoch löst der Zugriff drauf bei den meisten Variablen einen Fehler aus.
Weiß jemand, wie man das Problem löst, oder gibt's vielleicht noch ne andere Möglichkeit, wie man dieselben Werte, wie sie im Variablenfenster angezeigt werden, bekommt?

  mfG

    Egon Schmid


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

pablo
Mitglied
Techniker


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

Beiträge: 453
Registriert: 23.01.2002

Win10
Office 365
SE 2019

erstellt am: 19. Jun. 2003 01:51    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 Slyfox 10 Unities + Antwort hilfreich

Hallo Slyfox,

im objNamedDims gibt es 2 Type von Objekten.

Der eine ist SolidEdgeFramework.Variable (z.B. Lochdurchmesser, Dichte, Muster und benutzerdefinierte Variable)und hat den UnitsType .

Der andere ist SolidEdgeFrameworkSupport.Dimension (Bemassungen in Profilumgebung und Abmasse) und hat eine Property Dimensiontype.

Du musst den Typ abfragen und dann umrechnen oder du lässt Solid Edge mit UnitsofMeasure umrechnen.

Private Sub ListVariables()
Dim SEApp As SolidEdgeFramework.Application
Dim SEPart As Object
Dim SEVars As SolidEdgeFramework.VariableList
Dim UOM As SolidEdgeFramework.UnitsOfMeasure
Dim i As Long, mUnitsType As Long

  Set SEApp = GetObject(, "SolidEdge.Application")
  Set SEPart = SEApp.ActiveDocument
  Set UOM = SEPart.UnitsOfMeasure
  Set SEVars = SEPart.Variables.Query("*")
  For i = 1 To SEVars.Count
    With SEVars(i)
    If .Type = igDimension Then
      Select Case .DimensionType  'Dimension
        Case 3, 7
          mUnitsType = 2
        Case Else
          mUnitsType = 1
      End Select
    Else                          'Variable
      mUnitsType = .UnitsType
    End If
    Debug.Print .Name & ": " & UOM.FormatUnit(mUnitsType, .Value)
    End With
  Next
 
  Set SEVars = Nothing
  Set SEPart = Nothing
  Set SEApp = Nothing
End Sub

pablo

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

Slyfox
Mitglied
Informatiker


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

Beiträge: 26
Registriert: 27.03.2003

erstellt am: 19. Jun. 2003 10: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

Vielen Dank, das hat mir sehr weiter geholfen, und dafür erhältst Du 10 Punkte.

Nur ein allgemeines Problem hab ich mit Visual Basic:

Es kennt bei mir Dinge wie SolidEdgeFramework.Application
oder die ganzen Konstanten, die mit "ig..." beginnen nicht. Ich muß alles als Object definieren und die ganze Konstanten durch deren Werte ersetzen, damit die Programme bei mir laufen.

Wie bekomme ich dieses Problem beseitigt?

  mfG

    Egon Schmid

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

pablo
Mitglied
Techniker


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

Beiträge: 453
Registriert: 23.01.2002

Win10
Office 365
SE 2019

erstellt am: 19. Jun. 2003 10: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 Slyfox 10 Unities + Antwort hilfreich

Slyfox,

wenn du unter <Extra - Optionen - Editor - Elemente/Mitglieder automatisch auflisten> aktiviert hast und es trotzdem nicht funktioniert, weiss ich keinen Rat. Du könntest noch Windows... und Office... kontrollieren, ob alle Komponentne, die mit VB und VBA zu tun haben, installiert sind, und die neuesten Servicepacks installieren, wenn das nichts hilft ?????

Zitat:
Original erstellt von Slyfox:
Nur ein allgemeines Problem hab ich mit Visual Basic:

Es kennt bei mir Dinge wie SolidEdgeFramework.Application
oder die ganzen Konstanten, die mit "ig..." beginnen nicht. Ich muß alles als Object definieren und die ganze Konstanten durch deren Werte ersetzen, damit die Programme bei mir laufen.

Wie bekomme ich dieses Problem beseitigt?

  mfG

    Egon Schmid


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

Slyfox
Mitglied
Informatiker


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

Beiträge: 26
Registriert: 27.03.2003

erstellt am: 19. Jun. 2003 20:26    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

Hm.. es funktioniert nicht. Aber wenn ich ein Projekt aus dem Custom-Verzeichnis öffne, akteptiert Visual Basic die Konstanten und verschiedenen Objekt-Typen.

Also irgendwas fehlt in meinen Projekten demzufolge. Fragt sich nur, was.

  mfG

    Egon Schmid

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

Slyfox
Mitglied
Informatiker


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

Beiträge: 26
Registriert: 27.03.2003

erstellt am: 19. Jun. 2003 20:34    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

Ich habe die Lösung selber gefunden:

Es gibt einen Menü-Punkt Projekt/Verweise. Da muß man alles, was mit SolidEdge zu tun hat, angeklickt haben.

  mfG
 
  Egon Schmid

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

WackerM
Mitglied



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

Beiträge: 106
Registriert: 05.02.2003

ST7 MP11

erstellt am: 20. Okt. 2003 11: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 Slyfox 10 Unities + Antwort hilfreich

Hallo pablo, und natürlich alle anderen SE'ler,

hab gerade nach "variablen auslesen" gesucht und bin auf diesen Beitrag gestoßen.

Mein Problem ist, daß ich bisher nicht mit VB zu tun hatte, deshalb meine Frage:

Kann ich die zitierte Zeilen in Excel-VisualBasic eingeben und werden mir dann die Daten in der Exceltabelle dargestellt?

Habs versucht und ging nicht, aber wie gesagt hatte bisher nicht damit zu tun. Was mache ich falsch, kann mir jemand Tipps geben?

Grundsätzlich geht es darum die Daten und Formeln aus der Variablentabelle in Excel auszulesen.

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

pablo
Mitglied
Techniker


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

Beiträge: 453
Registriert: 23.01.2002

Win10
Office 365
SE 2019

erstellt am: 20. Okt. 2003 12:36    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 Slyfox 10 Unities + Antwort hilfreich

Hallo WackerM,

grundsätzlich gibt es zwischen VB- und VBA Code keine Unterschiede, das Beispiel sollte auch von Excel aus funktionieren - Voraussetzung:
Excel - Verweise - SolidEdgeFramework, Frameworksupport und Part einschalten.

Zitat:
Original erstellt von WackerM:
Was mache ich falsch, kann mir jemand Tipps geben?
B]

Das ist schwer zu sagen, wenn man deinen Code nicht kennt :-)

pablo

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

WackerM
Mitglied



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

Beiträge: 106
Registriert: 05.02.2003

ST7 MP11

erstellt am: 20. Okt. 2003 14:01    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 Slyfox 10 Unities + Antwort hilfreich

Hallo pablo,

eigentlich kopiere ich nur die Zeilen vom ersten Beitrag in Excel-VB.

Meine Vorgehensweise ist:
1. Aufrufen des Makrosbefehl
2. Name vergeben (z.B. Variablen)
3. Button "Erstellen" drücken, die kopierten Zeilen einfügen.
4. Dann lösche ich noch die von VB erstellte "SUB Variablen ()"-Zeile und die End SUB-Zeile (sonst bekomme ich eine Fehlermeldung.
5. Nachdem drücken von Sub/User Form erscheinen leider keine Werte in Excel.

Die Verweise hab ich aktiviert, SE ist mit der gewünschten Datei geöffnet.

Gruß
WackerM

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

pablo
Mitglied
Techniker


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

Beiträge: 453
Registriert: 23.01.2002

Win10
Office 365
SE 2019

erstellt am: 20. Okt. 2003 14: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 Nur für Slyfox 10 Unities + Antwort hilfreich

Hallo WackerM,

im Code werden die Namen nur im Direktfenster ausgedrückt, um in die Exceltabelle zu schreiben, musst du debug.print durch activeworksheet.cells(i,1)= ersetzen.

Ich sende dir ein Beispiel, sobald ich etwas Zeit habe.

pablo

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

WackerM
Mitglied



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

Beiträge: 106
Registriert: 05.02.2003

ST7 MP11

erstellt am: 20. Okt. 2003 14:20    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 Slyfox 10 Unities + Antwort hilfreich

Hallo pablo,

schon jetzt ein super Danke für deine Bemühungen.

WackerM

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