| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SolidEdge |
Autor
|
Thema: Nicht freigegebene Variablen zugreifen (1674 mal gelesen)
|
peticeo Mitglied Wirtschaftsinformatiker FH
Beiträge: 162 Registriert: 25.10.2005 Windows 7 64bit Quad X5472 ST 2/12 Teamcenter 8.1
|
erstellt am: 03. Feb. 2007 09:35 <-- editieren / zitieren --> Unities abgeben:
Guten Tag Leute wie kann ich (in VB2005) auf nicht freigegebene Variablen zugreiffen. Präzieser auf die "Abwicklung_x_Schnittgröße" und "y" zugreifen und schauen ob sie überhaupt vorhanden sind? Wenn Variablen freigegeben sind greife ich so zu: mApp = GetObject(, "solidedge.Application") mPart = mApp.ActiveDocument objProps = mPart.Properties objProp = objProps.Item("Custom") mSum = mPart.SummaryInfo Kann mir jemand helfen? Nice weekend Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Matthias Leemann Mitglied Masch. Ing HTL
Beiträge: 393 Registriert: 03.10.2003 Windows 11 Pro Solid Edge 2022
|
erstellt am: 03. Feb. 2007 14:28 <-- editieren / zitieren --> Unities abgeben: Nur für peticeo
Ich mache es folgendermassen: Zuerst alle Variablen in eine Liste holen und dann die Variablen durchkämmen, bis die gesuchte kommt. Dann kannst du den Wert verändern. Code:
objApp = GetObject(, "SolidEdge.Application") objDoc = objApp.ActiveDocument Dim ObjVariablesList As SolidEdgeFramework.VariableList ObjVariablesList = objDoc.Variables.query("*") Dim intVar As Integer = ObjVariablesList.Count Dim i As Integer 'Variable mittels Namen holen For i = 1 To intVar Select Case ObjVariablesList.Item(i).VariableTableName.ToString Case "Messbereich" ObjVariablesList.Item(i).Value = DblMessbereich End Select Next i
Du kannst aber auch den kürzeren Weg nehmen, indem du bei der query gerade den Variablennamen suchst. EIgnet sich, wenn du nur eine Variable verändern willst. Bei mehreren kannst du mit Select Case alle zu ändernden Variablen behandeln. Gruss Matthias ------------------ SE V18 SP9 SePropManager.NET von www.leemann-software.net [Diese Nachricht wurde von Matthias Leemann am 03. Feb. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
peticeo Mitglied Wirtschaftsinformatiker FH
Beiträge: 162 Registriert: 25.10.2005 Windows 7 64bit Quad X5472 ST 2/12 Teamcenter 8.1
|
erstellt am: 05. Feb. 2007 12:44 <-- editieren / zitieren --> Unities abgeben:
|
Arne Peters Ehrenmitglied V.I.P. h.c. CAD Dokumentation / Training / Programmierung / Datenbanken
Beiträge: 7321 Registriert: 05.2002.24 Solid Edge Seminarunterlagen Training, Beratung, Programmierung
|
erstellt am: 05. Feb. 2007 12:57 <-- editieren / zitieren --> Unities abgeben: Nur für peticeo
Man kann die Formel durch eine neue Formel mit dem Wert ersetzen. Das hakt aber an einigen Stellen, da es so viele verschiedene Objekttypen in der Abfrage gibt, die zum Teil unterschiedliche Eigenschaften und Methoden unterstützen. Variablen (igvariable), Maße (igDimension), Abstände von Referenzebenen (igReferenceplane).... Zusätzlich haben die Variablen unterschiedliche Unitstypes. Noch nicht versucht habe ich folgendes: Name und Wert auslesen und Formel dann über direkten Zugriff auf die VariablesCollection setzen. Nicht über die Variableslist Call Variables.Edit(Name as string,Formel as string) Guck Dir mal das Bearing-Makro in der Excel Tabelle unter Custom an. ------------------ APeters@BSS-Online.de [Diese Nachricht wurde von Arne Peters am 05. Feb. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
peticeo Mitglied Wirtschaftsinformatiker FH
Beiträge: 162 Registriert: 25.10.2005 Windows 7 64bit Quad X5472 ST 2/12 Teamcenter 8.1
|
erstellt am: 29. Mrz. 2007 17:24 <-- editieren / zitieren --> Unities abgeben:
Ich bin schon ziehmlich weit gekommen. Nun habe ich ein kleines Problem mit alten Vorlagen. Manche Var. muss ich mit 1000 multiplizieren und andere nicht. Aber das Problem liegt daran, dass ich eine freigegebene Variable nicht löschen kann, oder wie macht man dies? Ich habs so versucht: Call ObjVariablesList.Remove("Länge_1") Eine normale Variable wird gelöscht, aber nicht bei freigeg. Var. Könnt ihr mir helfen?? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
modeng Ehrenmitglied V.I.P. h.c.
Beiträge: 7061 Registriert: 10.12.2003
|
erstellt am: 29. Mrz. 2007 18:57 <-- editieren / zitieren --> Unities abgeben: Nur für peticeo
Moin, [...] Manche Var. muss ich mit 1000 multiplizieren und andere nicht. [...] Laengen, Durchmesser ... rechnet SE in Metern nur die Darstellung ist entsprechend aufbereitet! [...] Ich habs so versucht: Call ObjVariablesList.Remove("Länge_1") [...] das geht auch nicht, Remove verlangt ein numerisches Argument. Und dann funzt es -- aber nur auf die Vars der ObjVariablesList und nicht auf die der Variablentabelle ;-) Falls Du nur die entspr. Custom Variable loeschen willst reicht es die Eigenschaft 'Expose' der Variable auf False zu setzen. modeng ------------------ Kein Problem wird gelöst, wenn wir darauf warten, daß sich andere darum kümmern (M.L. King)
[Diese Nachricht wurde von modeng am 29. Mrz. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
peticeo Mitglied Wirtschaftsinformatiker FH
Beiträge: 162 Registriert: 25.10.2005 Windows 7 64bit Quad X5472 ST 2/12 Teamcenter 8.1
|
erstellt am: 30. Mrz. 2007 07:43 <-- editieren / zitieren --> Unities abgeben:
|
modeng Ehrenmitglied V.I.P. h.c.
Beiträge: 7061 Registriert: 10.12.2003
|
erstellt am: 30. Mrz. 2007 07:55 <-- editieren / zitieren --> Unities abgeben: Nur für peticeo
|
peticeo Mitglied Wirtschaftsinformatiker FH
Beiträge: 162 Registriert: 25.10.2005 Windows 7 64bit Quad X5472 ST 2/12 Teamcenter 8.1
|
erstellt am: 30. Mrz. 2007 11:43 <-- editieren / zitieren --> Unities abgeben:
|
peticeo Mitglied Wirtschaftsinformatiker FH
Beiträge: 162 Registriert: 25.10.2005 Windows 7 64bit Quad X5472 ST 2/12 Teamcenter 8.1
|
erstellt am: 30. Mrz. 2007 16:21 <-- editieren / zitieren --> Unities abgeben:
Danke Modeng, den Spruch von M.L. King hat mich weiter geholfen. Ich konnte die Variable Umbennen, was für mich sehr hilfreich ist. Dim mSum As SolidEdgeFramework.Variables mSum = mPart.Variables mSum.PutName(objVar.Item("länge"), "Länge_alt") Peticeo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
peticeo Mitglied Wirtschaftsinformatiker FH
Beiträge: 162 Registriert: 25.10.2005 Windows 7 64bit Quad X5472 ST 2/12 Teamcenter 8.1
|
erstellt am: 01. Apr. 2007 19:54 <-- editieren / zitieren --> Unities abgeben:
|
modeng Ehrenmitglied V.I.P. h.c.
Beiträge: 7061 Registriert: 10.12.2003
|
erstellt am: 02. Apr. 2007 18:31 <-- editieren / zitieren --> Unities abgeben: Nur für peticeo
<objVar>.ExposeName = <string>. Ist der Name bereits vergeben gibt's einen RT! modeng ------------------ Kein Problem wird gelöst, wenn wir darauf warten, daß sich andere darum kümmern (M.L. King) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |