| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für EPLAN |
| |
| Maschinenverkabelung leicht gemacht - auf Basis des digitalen Zwillings, eine Pressemitteilung
|
Autor
|
Thema: Eplan 2023 Skripting verwenden des MDPartsManagement (1162 mal gelesen)
|
RMLIF Mitglied Elektrotechnikermeister
Beiträge: 67 Registriert: 21.10.2009 Eplan P8 Prof 2.5 Eplan P8 Prof 2.7 Eplan P8 Prof 2.9.4 Eplan P8 Prof 2023.0.2 Cideon Workspace Eplan Sap integration ECTR Eplan Sap integration
|
erstellt am: 18. Jul. 2023 09:37 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen ich versuch gerade in Eplan 2023 mit Skripting über die MDPartsManagement Klasse in den Benutzerdefinierte Eigenschaft in der Artikelverwaltung einen wert zu setzten. Ich kann die Benutzerdefinierte Eigenschaften einen Index Zuordnen kann aber dann auf diesem Index keinen wert setzten kann mir da jemand weiterhelfen im Anhang der Code denn ich verwende Code:
using Eplan.EplApi.MasterData; using System.Linq; using Eplan.EplApi.Scripting; MDPartsManagement mdPartsManagement = new MDPartsManagement(); var Item = mdPartsManagement.GetSelectedPartDatabaseItems(true); string Properties = ""; foreach (MDPart part in Item) { Properties = Properties+ ";"+ part.Properties.ARTICLE_PARTNR; Properties = Properties + ";" + part.Properties.ARTICLE_DESCR1; Properties = Properties + ";" + part.Properties.ARTICLE_DESCR2; Properties = Properties + ";" + part.Properties.ARTICLE_EXTERNAL_DOCUMENT_URL[1]; Properties = Properties + ";" + part.Properties.ARTICLE_EXTERNAL_DOCUMENT_DESIGNATION[1]; using (MDPartsDatabase database = mdPartsManagement.OpenDatabase()) { part.Properties.ARTICLE_FREE_DATA_IDENTNAME[1] = "Makrodaten.Seitenmakro"; MultiLangString mulangStr = new MultiLangString(); mulangStr.SetAsString("Test"); part.Properties.ARTICLE_FREE_DATA_NEWVALUE[1] = mulangStr.GetStringToDisplay(ISOCode.Language.L_de_DE); ; } } MessageBox.Show(Properties);
Grüße Rudi ------------------ Wissen ist macht nix wissen macht auch nix Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Straight-Potter Mitglied Dipl.Ing. E-Technik
Beiträge: 601 Registriert: 14.07.2008 EPLAN Plattform 2.9 SP1 API EEC Prof EEC One
|
erstellt am: 18. Jul. 2023 14:20 <-- editieren / zitieren --> Unities abgeben: Nur für RMLIF
Hallo Rudi, das wird via Scripting nicht funktionieren, da du die Klasse MDPartsManagement nur in der API (Lizenzpflichtig) nutzen kannst Siehe Hilfe: In einem Script können Sie alle Klassen der Microsoft.Net Assemblies System, System.XML, System.Drawing, System.Windows.Forms sowie die EPLAN API Assemblies Eplan.EplApi.Base und Eplan.EplApi.ApplicationFramework einsetzen Straight-Potter ------------------ Wenn wir bedenken, dass wir alle verrückt sind, ist das Leben erklärt. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RMLIF Mitglied Elektrotechnikermeister
Beiträge: 67 Registriert: 21.10.2009 Eplan P8 Prof 2.5 Eplan P8 Prof 2.7 Eplan P8 Prof 2.9.4 Eplan P8 Prof 2023.0.2 Cideon Workspace Eplan Sap integration ECTR Eplan Sap integration
|
erstellt am: 18. Jul. 2023 14:24 <-- editieren / zitieren --> Unities abgeben:
Ab Eplan 2022 wurde die MDPartsManagement Klasse auch im Skripting freigegeben bzw. Teile der Eplan.EplApi.MasterData mann kann damit auf mehrere Teile der MasterData zugreifen hab ich mich aber noch nicht genau damit beschäftigt auf welche alle Es Funktioniert auch ich kann aus der Datenbank lesen und auch in die Datenbank schreiben nur diesen einen wert denn bekomm ich nicht Übertragen Grüße Rudi ------------------ Wissen ist macht nix wissen macht auch nix [Diese Nachricht wurde von RMLIF am 18. Jul. 2023 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jonny Wire Mitglied Script-Troll
Beiträge: 803 Registriert: 08.12.2008 EPLAN Electric P8 ... in allen Versionen/Varianten
|
erstellt am: 20. Jul. 2023 14:52 <-- editieren / zitieren --> Unities abgeben: Nur für RMLIF
Du spricht von "Benutzerdefinierte Eigenschaften", im Code greifst Du aber auf die "Freien Eigenschaften" zu. Welche meinst genau? Freie Eigenschaften ist der Code auch nicht korrekt. Beschreibung setzt Du mit ARTICLE_FREE_DATA_DESCRIPTION und den Wert dann mit ARTICLE_FREE_DATA_DESCRIPTION. Und der vollständigkeithalber noch das Beispiel wie man eine benutzerdefinierte Eigenschaft setzen kann:
Code:
private static void SetUserDefinedProperty(MDPart selectedItem, string identName, string value) { MDConfigurablePropertyPosition property = selectedItem.ConfigurablePropertyPositions .First( obj => obj.IdentifyingName.Equals(identName)); SetUserDefinedProperty(property, value); }private static void SetUserDefinedProperty(MDConfigurablePropertyPosition property, string value) { MultiLangString multiLangString = new MultiLangString(); multiLangString.SetAsString(value); property.Value = multiLangString; }
------------------ ibKastl → Wir beraten, analysieren, strukturieren, programmieren, und vieles mehr Suplanus → Scripting in EPLAN ist einfach (toll) ShopForProcess → Scripte & Anwendungen für EPLAN [Diese Nachricht wurde von Jonny Wire am 20. Jul. 2023 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RMLIF Mitglied Elektrotechnikermeister
Beiträge: 67 Registriert: 21.10.2009 Eplan P8 Prof 2.5 Eplan P8 Prof 2.7 Eplan P8 Prof 2.9.4 Eplan P8 Prof 2023.0.2 Cideon Workspace Eplan Sap integration ECTR Eplan Sap integration
|
erstellt am: 21. Jul. 2023 11:46 <-- editieren / zitieren --> Unities abgeben:
Hallo Jonny ich meine die Benutzerdefinierte Eigenschaften in der Artikelverwaltung von Eplan 2023. mit Hilfe des API Supports hab ich das Problem mittlerweile lösen können anbei der Code mit dem ich zum Ziel gekommen bin Code: [DeclareAction("NewItemPartsdatabase")] public void Partsdatabase() { MDPartsManagement mdPartsManagement = new MDPartsManagement(); var Item = mdPartsManagement.GetSelectedPartDatabaseItems(true); string Properties = ""; //Read from item database foreach (MDPart part in Item) { Properties = Properties + ";" + part.Properties.ARTICLE_PARTNR; Properties = Properties + ";" + part.Properties.ARTICLE_DESCR1; Properties = Properties + ";" + part.Properties.ARTICLE_DESCR2; Properties = Properties + ";" + part.Properties.ARTICLE_EXTERNAL_DOCUMENT_URL[1]; Properties = Properties + ";" + part.Properties.ARTICLE_EXTERNAL_DOCUMENT_DESIGNATION[1]; Properties = Properties + ";" + part.Properties.ARTICLE_GROUPSYMBOLMACRO; Properties = Properties + ";" + part.Properties.ARTICLE_MACRO; Properties = Properties + ";" + part.Properties.ARTICLE_PICTUREFILE; Properties = Properties + ";" + part.Properties.ARTICLE_PRODUCTGROUP; Properties = Properties + ";" + part.Properties.ARTICLE_PRODUCTGROUPING; Properties = Properties + ";" + part.Properties.ARTICLE_PRODUCTSUBGROUP; Properties = Properties + ";" + part.Properties.ARTICLE_PRODUCTTOPGROUP; Properties = Properties + ";" + part.Properties.ARTICLE_VARIANT; //Write in article database using (MDPartsDatabase database = mdPartsManagement.OpenDatabase()) { if (database.IsOpen) {
addnewProperty("Kabeldaten.Halogenfrei", part, database); addnewProperty("Kabeldaten.Aussenbereich_geeignet", part, database); addnewProperty("Kabeldaten.Kabelabgang_1_Quelle", part, database); part.Properties["Kabeldaten.Halogenfrei"] = true; part.Properties["Kabeldaten.Aussenbereich_geeignet"] = true; part.Properties["Kabeldaten.Kabelabgang_1_Quelle"] = "Test"; database.Dispose(); database.Close(); } } } MessageBox.Show(Properties); } public void addnewProperty(string Propertyname, MDPart part, MDPartsDatabase database) { MDUserDefinedPropertyDefinition mDUserDefined = new MDUserDefinedPropertyDefinition(Propertyname, database); var definedPropertyPosition = part.UserDefinedPropertyPositions; var definedPropertyPositioncount = part.UserDefinedPropertyPositions.Count(); bool bresult = true; for (int i = 1; i < definedPropertyPositioncount; i++) { if (definedPropertyPosition[i].IdentifyingName.Contains(Propertyname)) { bresult = false; } } if (bresult) { part.AddUserDefinedPropertyPosition(mDUserDefined); } }
Die Eigenschaften müssen in der jeweiligen Artikeldatenbank bereits vorhanden sein in meinem Fall habe ich hier zwei Boolsche Eigenschaften und eine String Eigenschaft dem gewählten Artikel hinzugefügt und die entsprechenden werte gesetzt Die Eigenschaften werden am Ende der Benutzerdefinierten Artikeleigenschaften Liste angehängt wenn sie noch nicht in der Liste vorhanden sind Mein Ziel am ende soll sein das die Werte die bis jetzt in den Freien Artikeleigenschaften gepflegt wurden in die Benutzerdefinierten Artikeleigenschaften übernommen werden Grüße Rudi ------------------ Wissen ist macht nix wissen macht auch nix Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
F.S. Moderator
Beiträge: 1881 Registriert: 23.04.2003 EPLAN Electric P8 2024 Prof.
|
erstellt am: 21. Jul. 2023 13:08 <-- editieren / zitieren --> Unities abgeben: Nur für RMLIF
|
RMLIF Mitglied Elektrotechnikermeister
Beiträge: 67 Registriert: 21.10.2009 Eplan P8 Prof 2.5 Eplan P8 Prof 2.7 Eplan P8 Prof 2.9.4 Eplan P8 Prof 2023.0.2 Cideon Workspace Eplan Sap integration ECTR Eplan Sap integration
|
erstellt am: 24. Jul. 2023 08:32 <-- editieren / zitieren --> Unities abgeben:
|
RMLIF Mitglied Elektrotechnikermeister
Beiträge: 67 Registriert: 21.10.2009 Eplan P8 Prof 2.5 Eplan P8 Prof 2.7 Eplan P8 Prof 2.9.4 Eplan P8 Prof 2023.0.2 Cideon Workspace Eplan Sap integration ECTR Eplan Sap integration
|
erstellt am: 25. Jul. 2023 09:17 <-- editieren / zitieren --> Unities abgeben:
anbei nochmal ein Beispiel wie man einen bestimmten Artikel in der Artikeldatenbank Lesen und Beschreiben kann die Identifikation des Artikels Erfolg über die Artikelnummer Ausgabe erfolgt in einer MessageBox Code:
public void ReadWritePartItem(string Partnumber) { MDPartsManagement mdPartsManagement = new MDPartsManagement(); MDPartsDatabase database = mdPartsManagement.OpenDatabase(); MDPart Item = database.GetPart(Partnumber); string Properties = ""; MultiLangString mulangStr = new MultiLangString(); //Read from item database // Lese nicht Übersetzbares Feld Properties = Properties + ";" + Item.Properties.ARTICLE_PARTNR; // Lese Übersetzbares Feld lese den Deutschen Eintrag mulangStr.SetAsString(Item.Properties.ARTICLE_DESCR1); Properties = Properties + ";" + mulangStr.GetStringToDisplay(ISOCode.Language.L_de_DE); //Write in article database using (MDPartsDatabase database = mdPartsManagement.OpenDatabase()) { if (database.IsOpen) { // Schreibe Übersetzbares Feld setze den Deutschen Eintrag mulangStr.SetAsString("Test"); part.Properties.ARTICLE_DESCR3 = mulangStr.GetStringToDisplay(ISOCode.Language.L_de_DE); database.Dispose(); database.Close(); } } MessageBox.Show(Properties); }
grüße Rudi ------------------ Wissen ist macht nix wissen macht auch nix Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mgolec Mitglied ECAD-Planer
Beiträge: 90 Registriert: 12.02.2018 Pro Panel 2023
|
erstellt am: 25. Jul. 2023 12:50 <-- editieren / zitieren --> Unities abgeben: Nur für RMLIF
|
Jonny Wire Mitglied Script-Troll
Beiträge: 803 Registriert: 08.12.2008 EPLAN Electric P8 ... in allen Versionen/Varianten
|
erstellt am: 26. Jul. 2023 08:01 <-- editieren / zitieren --> Unities abgeben: Nur für RMLIF
|
RMLIF Mitglied Elektrotechnikermeister
Beiträge: 67 Registriert: 21.10.2009 Eplan P8 Prof 2.5 Eplan P8 Prof 2.7 Eplan P8 Prof 2.9.4 Eplan P8 Prof 2023.0.2 Cideon Workspace Eplan Sap integration ECTR Eplan Sap integration
|
erstellt am: 26. Jul. 2023 09:57 <-- editieren / zitieren --> Unities abgeben:
in unserem falle ist Deutsch sowohl im Basisprojekt, als auch in den Benutzer Einstellungen als Quellsprache angegeben. Deshalb hab ich in meinem Beispiel auch Deutsch gesetzt lässt man den MultiLangString weg wird er wohl die eingestellte Quellsprache setzten ohne das jetzt getestet zu haben Grüße Rudi ------------------ Wissen ist macht nix wissen macht auch nix Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jonny Wire Mitglied Script-Troll
Beiträge: 803 Registriert: 08.12.2008 EPLAN Electric P8 ... in allen Versionen/Varianten
|
erstellt am: 26. Jul. 2023 10:18 <-- editieren / zitieren --> Unities abgeben: Nur für RMLIF
|
RMLIF Mitglied Elektrotechnikermeister
Beiträge: 67 Registriert: 21.10.2009 Eplan P8 Prof 2.5 Eplan P8 Prof 2.7 Eplan P8 Prof 2.9.4 Eplan P8 Prof 2023.0.2 Cideon Workspace Eplan Sap integration ECTR Eplan Sap integration
|
erstellt am: 26. Jul. 2023 10:23 <-- editieren / zitieren --> Unities abgeben:
Das bedeutet aber das man sich den Multilangstring beim eintragen über ein Skript sparen kann, da er sowieso die neutrale Sprache setzt. Egal was ich angeben und diese dann erst beim Übersetzten in die entsprechend Quellsprache überträgt oder versteh ich da was falsch ? Grüße Rudi ------------------ Wissen ist macht nix wissen macht auch nix Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jonny Wire Mitglied Script-Troll
Beiträge: 803 Registriert: 08.12.2008 EPLAN Electric P8 ... in allen Versionen/Varianten
|
erstellt am: 26. Jul. 2023 10:39 <-- editieren / zitieren --> Unities abgeben: Nur für RMLIF
|