| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SolidEdge |
| |
 | Solid Edge: Erste Schritte, ein Webinar am 26.09.2025
|
Autor
|
Thema: Löschen von Properties (2989 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: 29. Mrz. 2010 08:32 <-- editieren / zitieren --> Unities abgeben:         
Hallo In der Hilfe gibt es die PropertyClass "Delete Method" Dim objPropertySets As SolidEdgeFileProperties.PropertySets = Nothing Dim objProperties As SolidEdgeFileProperties.Properties = Nothing Dim objProperty As SolidEdgeFileProperties.Property = Nothing ' Create a new instance of PropertySets. objPropertySets = New SolidEdgeFileProperties.PropertySets objPropertySets.Open("C:\Part1.par", False) objProperties = objPropertySets.Item("Custom") objProperty = objProperties.Add("My Custom Property", "My Custom Value") objProperty.Delete() objPropertySets.Save() objPropertySets.Close() Gibt es eine Möglichkeit, Properties zu löschen, wenn das Dokument Aktiv ist?? Ich habs so versucht, leider erfolglos: Dim mApp As SolidEdgeFramework.Application = GetObject(, "SolidEdge.Application") Dim objPropertySets As SolidEdgeFileProperties.PropertySets = Nothing Dim objProperties As SolidEdgeFileProperties.Properties = Nothing Dim objProperty As SolidEdgeFileProperties.Property = Nothing objPropertySets = New SolidEdgeFileProperties.PropertySets objPropertySets = mApp.ActiveDocument objProperties = objPropertySets.Item("Custom") objProperty = objProperties.Add("My Custom Property" (hier die dementsprechende Properties), "My Custom Value") objProperty.Delete() objPropertySets.Save() objPropertySets.Close() Kann mir jemand helfen? Ich sollte alle Properties ("Custom") löschen und neue erstellen. Gruss Peticeo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wksyspro Mitglied Dipl.-Ing.
 
 Beiträge: 204 Registriert: 19.11.2004
|
erstellt am: 29. Mrz. 2010 08:56 <-- editieren / zitieren --> Unities abgeben:          Nur für peticeo
Hallo Peticeo, 2 Fehler: 1) Bei einem aktiven (geladenen) Dokument kann man nicht mit den Eigenschaften über das Solid Edge FileProperties Objekt arbeiten, sondern muss dies über das Properties-Objekt des entsprechenden Document-Objekts bewerkstelligen. 2) Du musst die Delete-Methode in einer For-Schleife auf alle Items der Custom-Properties Auflistung ausführen, das Gegenstück quasi zur Add-Methode, und nicht auf ein einzeln zugewiesenes Property-Objekt. Dabei ist die For-Schleife vom höchsten Item-Index (Count-Eigenschaft) zum kleinsten Index (also 1) zu durchlaufen. Eine For Each Schleife geht deshalb nicht. Danach das Properties-Objekt durch Aufruf dessen Save-Methode speichern. Hier als fertige Methode: Code:
Private Sub DeleteCustomProperties() Dim seApp As SolidEdgeFramework.Application = Nothing Dim seDoc As SolidEdgeFramework.SolidEdgeDocument = Nothing Dim propSets As SolidEdgeFramework.PropertySets = Nothing Dim customPropSet As SolidEdgeFramework.Properties = Nothing Try seApp = CType(System.Runtime.InteropServices.Marshal.GetActiveObject("SolidEdge.Application"), SolidEdgeFramework.Application) seDoc = CType(seApp.ActiveDocument, SolidEdgeFramework.SolidEdgeDocument) propSets = CType(seDoc.Properties, SolidEdgeFramework.PropertySets) customPropSet = propSets.Item("Custom") For i As Integer = customPropSet.Count To 1 Step -1 customPropSet.Item(i).Delete() Next customPropSet.Save() propSets.Save() Catch ex As Exception Throw New Exception(ex.Message) Finally If customPropSet IsNot Nothing Then System.Runtime.InteropServices.Marshal.ReleaseComObject(customPropSet) customPropSet = Nothing End If If propSets IsNot Nothing Then System.Runtime.InteropServices.Marshal.ReleaseComObject(propSets) propSets = Nothing End If If seDoc IsNot Nothing Then System.Runtime.InteropServices.Marshal.ReleaseComObject(seDoc) seDoc = Nothing End If If seApp IsNot Nothing Then System.Runtime.InteropServices.Marshal.ReleaseComObject(seApp) seApp = Nothing End If End Try End Sub
------------------ Viele Grüße,
Wolfgang Kunert www.wksyspro.de [Diese Nachricht wurde von wksyspro am 31. Mrz. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wksyspro Mitglied Dipl.-Ing.
 
 Beiträge: 204 Registriert: 19.11.2004
|
erstellt am: 31. Mrz. 2010 13:56 <-- 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: 01. Apr. 2010 19:55 <-- editieren / zitieren --> Unities abgeben:         
|
NetDeveloper1711 Mitglied
 Beiträge: 2 Registriert: 13.08.2012
|
erstellt am: 13. Aug. 2012 16:15 <-- editieren / zitieren --> Unities abgeben:          Nur für peticeo
Hallo zusammen, kämpfe mit dem gleichen Problem, allerdings möchte ich nur bestimmte benutzerdefinierte Properties löschen, nicht alle. Danach würde ich manche gern neu definieren aber mit anderem Typ. Das Beispiel oben funktioniert bei mir nicht. In der Zeile seApp = CType(System.Runtime.InteropServices.Marshal.GetActiveObject("SolidEdge.Application"), SolidEdgeFramework.Application) setze ich Breakpoint und der schmießt gleich Exception: Vorgang nicht verfügbar. (Exception from HRESULT: 0x800401E3 (MK_E_UNAVAILABLE)) Ich lasse es unter .NETFramework 4.0 laufen. Vielen Dank im Voraus und Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wksyspro Mitglied Dipl.-Ing.
 
 Beiträge: 204 Registriert: 19.11.2004
|
erstellt am: 13. Aug. 2012 20:28 <-- editieren / zitieren --> Unities abgeben:          Nur für peticeo
@NetDeveloper1711, das Beispiel in meinem obigen Beitrag setzt ein geöffnetes Solid Edge Dokument voraus - und Achtung, es löscht, wie im Thread gewünscht, alle benutzerdefinierten Eigenschaften des aktiven Dokuments! Du kannst natürlich in der For-Schleife unter Verwendung der Name-Eigenschaft das Löschen auf bestimmte Eigenschaften beschränken.
------------------ Viele Grüße, Wolfgang Kunert www.wksyspro.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
NetDeveloper1711 Mitglied
 Beiträge: 2 Registriert: 13.08.2012
|
erstellt am: 14. Aug. 2012 07:47 <-- editieren / zitieren --> Unities abgeben:          Nur für peticeo
|