Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Solid Edge
  Dateieigenschaften per API ausfüllen

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
Autor Thema:   Dateieigenschaften per API ausfüllen (542 mal gelesen)
HarrySchulz
Mitglied
Konstrukteur

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

Beiträge: 3
Registriert: 10.11.2019

Solid Edge 2020

erstellt am: 10. Nov. 2019 17:22    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 zusammen,

ich habe vor (hoffe zumindest das sowas möglich ist), die Dateieingeschafte (Titel, Thema usw.) über API ausfüllen zu lassen. Allerdings sind meine bisherigen Versuche größtenteils gescheitert    .

Zur Vorgeschichte: Es sollen Baugruppen importiert werden, welche in Solidworks erstellt worden sind. Da dabei keine Metadaten mitkommen, die Eigenschaften aber auch nicht händig eingetippt werden sollen, habe ich mir ein Programm in C# geschrieben. Nun bin ich, was das Programmieren angeht, eher ein Laie und hoffe hier auf ein wenig Unterstützung 

Das ist mein bisheriges Programm:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace Properties_Import
{
class Program
{
static void Main(string[] args)
{
SolidEdgeFramework.Application application = null;
SolidEdgeFramework.SolidEdgeDocument document = null;
SolidEdgeFramework.PropertySets propertySets = null;
SolidEdgeFramework.Properties properties = null;
SolidEdgeFramework.Property property = null;
try
{
application = (SolidEdgeFramework.Application)
Marshal.GetActiveObject("SolidEdge.Application");
document = (SolidEdgeFramework.SolidEdgeDocument)
application.ActiveDocument;
propertySets = (SolidEdgeFramework.PropertySets)document.Properties;

// CUSTOM
properties = propertySets.Item("Custom");
property = properties.Add("Properties-Import", DateTime.Now);

// INFO
properties = propertySets.Item("SummaryInformation");
property = properties.Add("Titel", "Testtitel");
property = properties.Add("Thema", "00x00x00");
property = properties.Add("Stichwörter", "gratfrei");
property = properties.Add("Autor", "Testautor");
property = properties.Add("Kommentare", "blabla");
properties = propertySets.Item("DocumentSummaryInformation");
property = properties.Add("Kategorie", "Testkategorie");

// PROJEKT
properties = propertySets.Item("ProjectInformation");
property = properties.Add("Document Number", "00-00-0000");

// MATERIAL ZUORDNEN
properties = propertySets.Item("MechanicalModeling");
property = properties.Add("Material", "Aluminium");

}
catch (System.Exception ex)
{
    Console.WriteLine(ex.Message);
}
finally
{
    if (property != null)
    {
        Marshal.ReleaseComObject(property);
        property = null;
    }
    if (properties != null)
    {
        Marshal.ReleaseComObject(properties);
        properties = null;
    }
    if (propertySets != null)
    {
        Marshal.ReleaseComObject(propertySets);
        propertySets = null;
    }
    if (document != null)
    {
        Marshal.ReleaseComObject(document);
        document = null;
    }
    if (application != null)
    {
        Marshal.ReleaseComObject(application);
        application = null;
    }
}
}
}
}

Einzig bei "Custom" wird eine Eigenschaft vergeben, beim Rest leider nicht, sprich, bei Titel, Thema, Autor, Document Number wird kein Wert gesetzt. Woran kann das liegen? Können diese Eigenschaft überhaupt von Außerhalb geändert werden? Zukünftig sollen die Eigenschaften aus einer Excel-Tabelle ausgelesen und den einzelnen Parts zugeordnet werden.

Ich hoffe, mir kann dabei jemand eine Tip geben, woran es liegt. Im Voraus schon vielen Dank! 

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

Arne Peters
Ehrenmitglied V.I.P. h.c.
CAD Dokumentation / Training / Programmierung / Datenbanken


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

Beiträge: 6547
Registriert: 05.2002.24

Solid Edge Seminarunterlagen
Training, Beratung, Programmierung

erstellt am: 10. Nov. 2019 17:39    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 HarrySchulz 10 Unities + Antwort hilfreich

Na, ich denke mal, weil die anderen Eigenschaften immer da sind.
Da geht das Add nicht.
Ich hab aber den SE Rechner im Moment nicht an.

------------------
Arne

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

HarrySchulz
Mitglied
Konstrukteur

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

Beiträge: 3
Registriert: 10.11.2019

Solid Edge 2020

erstellt am: 10. Nov. 2019 17:49    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

Danke für die schnelle Antwort. Klingt einleuchtend, dass sind ja von SE vorgegebene Eigenschafte und keine, die ich erst erstelle.
Gibt es also dafür einen anderen Befehl? Im .NET Programmer’s Guide von Siemens werden ja zumindest die Eigenschafen mit Variable-Typ aufgelistet.

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

wolha
Moderator
CAD - Consultant


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

Beiträge: 4918
Registriert: 30.01.2002

Solid Edge 2019 win10
CAMWorks
Primus PDM
FEMAP
Dynamic Designer

erstellt am: 10. Nov. 2019 17: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 HarrySchulz 10 Unities + Antwort hilfreich

Hallo,


außerdem sind Titel, Thema usw. keine Fuß vom Properties, gehören also nicht in diese Propertygruppe, sondern zu Sytem, u.ä.

Lass Dir einfach einmal alle PropGroups auflisten.

------------------
mfg

Wolfgang Hackl
CAD/CAM - Consult

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

Markus Gras
Moderator
Solid Edge AE


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

Beiträge: 4490
Registriert: 20.07.2000

Kritik muß sachlich falsch und persönlich verletzend sein, damit sie wirkt.

erstellt am: 11. Nov. 2019 11:44    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 HarrySchulz 10 Unities + Antwort hilfreich

Hallo Harry,
hol die das Programm Solid Edge Spy, damit kannst Du direkt auf die Objekte der Solid Edge API zugreifen und schauen was es wo gibt.

------------------
Gruß
Markus Gras
Unitec Informationssysteme GmbH

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

HarrySchulz
Mitglied
Konstrukteur

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

Beiträge: 3
Registriert: 10.11.2019

Solid Edge 2020

erstellt am: 11. Nov. 2019 22:19    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


Anmerkung2019-11-11220949.png

 
Danke für den Tip. Habe mir SolidEdge Spy installiert. Allerdings bringt mich das leider auch nicht so recht weiter. Neben Custom gehört auch der ganze Rest (Titel, Kategorie etc.) zu SolidEdgeFramework.Properties.     

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

Arne Peters
Ehrenmitglied V.I.P. h.c.
CAD Dokumentation / Training / Programmierung / Datenbanken


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

Beiträge: 6547
Registriert: 05.2002.24

Solid Edge Seminarunterlagen
Training, Beratung, Programmierung

erstellt am: 11. Nov. 2019 22:43    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 HarrySchulz 10 Unities + Antwort hilfreich

Ich habe das nur in VB.
Du willst ja kein ADD machen, sondern den Wert ändern. Also eher: 
Also ...
Properties = Propertyset("ZielPropertySet")
Properties("ZielProperty").Value = "BlaBlaBla"

------------------
Arne

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: 373
Registriert: 03.10.2003

Windows 10 Pro
Solid Edge 2020

erstellt am: 12. Nov. 2019 07:49    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 HarrySchulz 10 Unities + Antwort hilfreich


PropsClosedFiles.txt

 
Hallo Zusammen
in C# sieht das bei mir so aus:

Code:
SolidEdgeFileProperties.PropertySets propertySets = null;
        SolidEdgeFileProperties.Properties properties = null;
        SolidEdgeFileProperties.Property property = null;

Code:
public bool SaveStatusSingleFile(FileInfo file, int status)
        {
            bool result = false;
            // Create new instance of the PropertySets object
            propertySets = new SolidEdgeFileProperties.PropertySets();
            // Open a file
            try
            {
                propertySets.Open(file.FullName, false);
                properties = (SolidEdgeFileProperties.Properties)propertySets["ExtendedSummaryInformation"];
                property = (SolidEdgeFileProperties.Property)properties["Status"];
                property.Value = status;
                propertySets.Save();
                result = true;
            }
            catch { }
            finally
            {
                ReleaseObjects();
            }
            return result;
        }

Liefert true zurück, wenn das Speichern des Status erfolgreich gewesen ist.

Die Objekte müssen sauber aufgeräumt werden, darum ReleaseObjects:

Code:
private void ReleaseObjects()
        {
            if (property != null)
            {
                Marshal.ReleaseComObject(property);
                property = null;
            }
            if (properties != null)
            {
                Marshal.ReleaseComObject(properties);
                properties = null;
            }
            if (propertySets != null)
            {
                propertySets.Close();
                Marshal.ReleaseComObject(propertySets);
                propertySets = null;
            }
        }

Komplette Klasse liegt bei. Endung txt in cs ändern.

------------------
SE 2019
SePropManager.NET und SeDimPro2 von
www.leemann-software.net

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: 373
Registriert: 03.10.2003

Windows 10 Pro
Solid Edge 2020

erstellt am: 13. Nov. 2019 10:56    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 HarrySchulz 10 Unities + Antwort hilfreich


DemoFileProps.zip

 
Hallo Harry
ich habe dir eine ganz rudimentäre Visual Studio 2017 Solution erstellt. Darin siehst du wie die verschiedenen Projekte aufgebaut sind.
Gruss Matthias

------------------
SE 2019
SePropManager.NET und SeDimPro2 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)2020 CAD.de | Impressum | Datenschutz