Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Solid Edge
  VB und Properties

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:  VB und Properties (6435 mal gelesen)
Dark Solid-Worker
Mitglied
Ingenieur


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

Beiträge: 51
Registriert: 05.12.2003

ST5 64bit Classic MP7 / Win 7 64bit / Smap3D V9.6

erstellt am: 15. Mrz. 2005 08:24    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

Wie kann ich mit VB die Dateieigenschaften auslesen und verändern (auch Benutzerdefinierte) ohne die Datei in SE öffnen zu müssen. SE ist gestartet.
Wäre um einen Tip sehr dankbar.

Grüsse Heinz

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

WolfiSbg
Mitglied



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

Beiträge: 103
Registriert: 10.03.2003

erstellt am: 15. Mrz. 2005 09:58    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 Dark Solid-Worker 10 Unities + Antwort hilfreich

Hallo Heinz,

die Dateieigenschaften (nicht nur für SE) kanst du mit dem File System Objekt (FSO) ändern. SE braucht nicht gestartet zu sein.
Hab schon lange nix mehr gemacht, schau aber mal unter FSO auf der Microsoft Hompage.

Wolfgang

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

Matthias Leemann
Mitglied
Masch. Ing HTL


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

Beiträge: 393
Registriert: 03.10.2003

Windows 11 Pro
Solid Edge 2022

erstellt am: 15. Mrz. 2005 10:32    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 Dark Solid-Worker 10 Unities + Antwort hilfreich

Hallo Heinz,

in meinem Zusatztool SePropManager.NET verwende ich folgenden Code um die Dateieigenschaften zu lesen und zu schreiben, wenn die Dateien in SE nicht geöffnet sind. Im VB Projekt eine Referenz auf die Solid Edge File Properties Object Library machen.

(VB.NET Code)


Dim objSEFileprops As SolidEdgeFileProperties.PropertySets
objSEFileprops = New SolidEdgeFileProperties.PropertySets()
objSEFileprops.Open(strfilename, True) 'Öffnen mit ReadOnly = True
objSEFileprops.Open(strfilename, False)'Öffnen mit ReadOnly = False

Dim objProps As SolidEdgeFileProperties.Properties
objProps = objSEFileprops.Item("Custom")
Dim objProp As SolidEdgeFileProperties.Property
'Schleife um die Custom Properties zu durchlaufen
Dim StrWert as String 'String um Eigenschaftswert zu lesen
For Each objProp In objProps

If objProp.Name = "Deine Eigenschaft" Then
StrWert = objProp.Value 'Eigenschaft auslesen oder

objProp.Value = StrWert'Eigenschaft setzen
objProps.Save()'Eigenschaft speichern
Exit For 'Schleifenausstieg

End If
Next
'Wichtig am Schluss die Objekte wieder freigeben
System.Runtime.InteropServices.Marshal.ReleaseComObject(objSEFileprops)
objSEFileprops = Nothing
System.Runtime.InteropServices.Marshal.ReleaseComObject(objProps)
objProps = Nothing
System.Runtime.InteropServices.Marshal.ReleaseComObject(objProp)
objProp = Nothing
GC.Collect()
GC.WaitForPendingFinalizers()
GC.Collect()
GC.WaitForPendingFinalizers()


Du kannst aber auch mein Tool verwenden :-)
Gruss Matthias

------------------
SE V16 SP5
SePropManager.NET von
www.leemann-software.net

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

camist
Mitglied
Dipl.Ing


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

Beiträge: 18
Registriert: 26.08.2003

erstellt am: 15. Mrz. 2005 15: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 Dark Solid-Worker 10 Unities + Antwort hilfreich


Eingenschaftsmanager.pdf


Eingenschaftsmanager2.pdf


Eingenschaftsmanager3.pdf

 
Hallo Heinz,
die Dateieigenschaften kanst  ändern. SE meß gestartet sein.

Camist

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

Dark Solid-Worker
Mitglied
Ingenieur


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

Beiträge: 51
Registriert: 05.12.2003

ST5 64bit Classic MP7 / Win 7 64bit / Smap3D V9.6

erstellt am: 16. Mrz. 2005 07:37    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 Matthias

Vielen Dank für den VB.Net Code
Habe zwar nur VB6 zur Verfügung, aber werde das schon irgendwie hinkriegen.

Kleine Frage, was zum Teufel ist System.Runtime.InteropServices.Marshal .....

Gruss Heinz

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

Matthias Leemann
Mitglied
Masch. Ing HTL


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

Beiträge: 393
Registriert: 03.10.2003

Windows 11 Pro
Solid Edge 2022

erstellt am: 16. Mrz. 2005 08:11    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 Dark Solid-Worker 10 Unities + Antwort hilfreich

Hallo Heinz,

mit den folgenden Codezeilen wird ein Com-Objekt wieder sauber vom System im Speicher freigegeben. Was mit VB6 einfach mit Object=Nothing funktionierte, muss mit VB.NET oder C#.NET so geschehen. Frag mich nicht warum die zwei letzten Zeilen 2 mal hintereinander stehen müssen. Ich habe das in einer Newsgroup gelesen.

System.Runtime.InteropServices.Marshal.ReleaseComObject(objProp)
        objProp = Nothing
        GC.Collect()
        GC.WaitForPendingFinalizers()
        GC.Collect()
        GC.WaitForPendingFinalizers()

Gruss Matthias

------------------
SE V16 SP5
SePropManager.NET von
www.leemann-software.net

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

DagoToran
Mitglied


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

Beiträge: 1
Registriert: 05.05.2009

VB.NET 2002
SE 20 x64

erstellt am: 05. Mai. 2009 14:48    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 Dark Solid-Worker 10 Unities + Antwort hilfreich

Hallo Matthias,

Dein Eintrag ist zwar schon ein paar Tage alt, aber er passt wunderbar zu meinem Problem. Ich bin gezwungen meine VB6 Projekte auf VB.NET umzustellen und stolpere dabei über ein Problem nach dem nächsten. Was in VB6 funktionierte erzeugt mit .NET plötzlich diverse Fehler, die ich nicht zu beheben vermag. Zuerst mein Problem:

Das VB6 Programm war in der Lage Dateiinformationen von nicht geöffneten SE-Dateien in ein Formular einzulesen. Dort konnte man sie editieren und neu abspeichern. Eingelesen wurden die Informationen mit:

Sub Einlesen()
Dim objPropSet As SolidEdgeFileProperties.PropertySets = Nothing
        Dim objProp As SolidEdgeFileProperties.Properties = Nothing
        Dim lauf, i, msg As Integer
        Dim Bezeichnung, Text, Inhalt As String

        objPropSet = CreateObject("SolidEdge.FileProperties")
        On Error Resume Next
        Call objPropSet.Open(Pfad, False)

        If Err.Number = False Then
            On Error GoTo 0
            objProp = objPropSet("custom")
            i = objProp.Count - 1
            For lauf = 0 To i
                Text = objProp.Item(lauf).Name
                Inhalt = objProp.Item(lauf).Value

                If Text Like "Bezeichnung" Then
                    Bezeichnung = Inhalt
                End If
            Next lauf
        Else
            msg = MsgBox("Fehler beim Dateizugriff!" & Chr(10) & "Die angeforderte Datei ist eventuell bereits geöffnet.", MsgBoxStyle.Critical + MsgBoxStyle.OKOnly, "Fehler")
        End If

objPropSet.Close()
        objPropSet = Nothing
        objProp = Nothing
End Sub

überschrieben wurden die Dateiinfos mit:
Sub Daten_speichern(Bezeichnung As String)
        Dim objPropSet As SolidEdgeFileProperties.PropertySets = Nothing
        Dim objProp As SolidEdgeFileProperties.Properties = Nothing

        objPropSet = CreateObject("SolidEdge.FileProperties")
        Call objPropSet.Open(Pfad, False)

        objProp = objPropSet("custom")

        Call objProp.Add("Bezeichnung", Bezeichnung)

        Call objPropSet.Save()

        objPropSet = Nothing
        objProp = Nothing
End Sub

In beiden Fällen wird die Datei mit "objPropSet.Open(Pfad, False)" mit Lesezugriff geöffnet und alles funktionierte wunderbar, bis .NET auftauchte. Sobald ich jetzt einmal die Datei mit Schreibzugriff eingelesen habe, kann ich sie kein zweites mal einlesen (auch nicht mehr schreibgeschützt) ohne das Programm neu zu starten. Ich erhalte jedes Mal eine Freigabeverletzung ("System.Runtime.InteropServices.COMException"). Problematisch ist auch, dass wenn ich die Datei einmal schreibgeschützt eingelesen habe, ich sie auch nicht mehr mit Schreibzugriff einlesen kann. Somit kann ich mir entweder die Dateiinfos anschauen und nicht editieren, oder ich kann sie setzen, ohne zu wissen, wie sie vorher ausgesehen haben.
Beides ist leider inakzeptabel.
Selbst wenn ich Deine unveränderte Prozedur (Öffnen der Datei mit Schreibzugriff) mit einer Schaltfläche zwei mal hintereinander aufrufe erhalte ich die oben genannte Exception. Ich weiß einfach nicht mehr weiter. Handelt es sich hier etwa um ein Grundlegendes .NET Problem? Vielen Dank für Eure Hilfe!!!

Gruß
Tobias

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

Matthias Leemann
Mitglied
Masch. Ing HTL


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

Beiträge: 393
Registriert: 03.10.2003

Windows 11 Pro
Solid Edge 2022

erstellt am: 05. Mai. 2009 15:05    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 Dark Solid-Worker 10 Unities + Antwort hilfreich

Hallo Tobias,
Du musst die Objekte
objPropSet und objProp nach dem Gebrauch richtig freigeben
probiere wie schon weiter oben gesagt mit folgendem Code:

System.Runtime.InteropServices.Marshal.ReleaseComObject(objPropSet )
objPropSet = Nothing
System.Runtime.InteropServices.Marshal.ReleaseComObject(objProp )
objProp = Nothing

GC.Collect()
GC.WaitForPendingFinalizers()
GC.Collect()
GC.WaitForPendingFinalizers()

Gruss Matthias

------------------
SE V20 SP5 / SE ST
SePropManager.NET von
www.leemann-software.net

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

Fred310
Mitglied
PDM Consultant


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

Beiträge: 25
Registriert: 05.09.2007

erstellt am: 06. Mai. 2009 08:02    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 Dark Solid-Worker 10 Unities + Antwort hilfreich


SE-Properties.zip

 
Hallo

Für einen Freund habe ich ein Beispielprogramm für die SE-Properties in VB6 geschrieben. Vieleicht hilft es dir.

Gruß
Fred

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

Matthias Leemann
Mitglied
Masch. Ing HTL


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

Beiträge: 393
Registriert: 03.10.2003

Windows 11 Pro
Solid Edge 2022

erstellt am: 06. Mai. 2009 09: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 Nur für Dark Solid-Worker 10 Unities + Antwort hilfreich

Hallo Fred,
habe dein VB6 Projekt mit VS2008 geöffnet. Im Prinzip sind da die gleichen Probleme. Ich kann es nur nochmals sagen: Bei .NET Projekten müssen die Objekte nach dem Gebrauch korrekt freigegeben werden, siehe meine Beiträge weiter oben.
Gruss Matthias

------------------
SE V20 SP5 / SE ST
SePropManager.NET von
www.leemann-software.net

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