| | |
 | 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 (749 mal gelesen)
|
Slyfox Mitglied Informatiker

 Beiträge: 26 Registriert: 27.03.2003
|
erstellt am: 19. Jun. 2003 00:33 <-- editieren / zitieren --> Unities abgeben:         
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
 
 Beiträge: 453 Registriert: 23.01.2002 Win10 Office 365 SE 2019
|
erstellt am: 19. Jun. 2003 01:51 <-- editieren / zitieren --> Unities abgeben:          Nur für Slyfox
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

 Beiträge: 26 Registriert: 27.03.2003
|
erstellt am: 19. Jun. 2003 10:03 <-- editieren / zitieren --> Unities abgeben:         
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
 
 Beiträge: 453 Registriert: 23.01.2002 Win10 Office 365 SE 2019
|
erstellt am: 19. Jun. 2003 10:38 <-- editieren / zitieren --> Unities abgeben:          Nur für Slyfox
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

 Beiträge: 26 Registriert: 27.03.2003
|
erstellt am: 19. Jun. 2003 20:26 <-- editieren / zitieren --> Unities abgeben:         
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

 Beiträge: 26 Registriert: 27.03.2003
|
erstellt am: 19. Jun. 2003 20:34 <-- editieren / zitieren --> Unities abgeben:         
|
WackerM Mitglied
 
 Beiträge: 106 Registriert: 05.02.2003 ST7 MP11
|
erstellt am: 20. Okt. 2003 11:29 <-- editieren / zitieren --> Unities abgeben:          Nur für Slyfox
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
 
 Beiträge: 453 Registriert: 23.01.2002 Win10 Office 365 SE 2019
|
erstellt am: 20. Okt. 2003 12:36 <-- editieren / zitieren --> Unities abgeben:          Nur für Slyfox
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
 
 Beiträge: 106 Registriert: 05.02.2003 ST7 MP11
|
erstellt am: 20. Okt. 2003 14:01 <-- editieren / zitieren --> Unities abgeben:          Nur für Slyfox
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
 
 Beiträge: 453 Registriert: 23.01.2002 Win10 Office 365 SE 2019
|
erstellt am: 20. Okt. 2003 14:15 <-- editieren / zitieren --> Unities abgeben:          Nur für Slyfox
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
 
 Beiträge: 106 Registriert: 05.02.2003 ST7 MP11
|
erstellt am: 20. Okt. 2003 14:20 <-- editieren / zitieren --> Unities abgeben:          Nur für Slyfox
|