| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für EPLAN |
| |
| Eplan Network 2024 Ganz in Ihrer Nähe: Andelfingen - CH, eine Veranstaltung am 05.11.2024
|
Autor
|
Thema: Baum-/Seitenstruktur per Script in Eplan P8 2.9 umstellen (1335 / mal gelesen)
|
Partyarti Mitglied Elektrokonstrukteur
Beiträge: 18 Registriert: 25.04.2022
|
erstellt am: 25. Apr. 2022 10:20 <-- editieren / zitieren --> Unities abgeben:
Hallo, u.a. für einen PDF Export bräuchten wir eine Umstellung der Seitenstruktur. Ich würde es gerne mit einem Script umschaltbar machen. Entweder direkt beim PDF Export für die Elektriker oder auf ein/zwei Buttons legen. Nur kriege ich es per Script nicht umgestellt... Wir nutzen aktuell Dokumentenart, Anlage, Einbauort. Bsp.: &EFS=HMI+CC1/1 Brauchen immer wieder für die Elektriker folgende Reihenfolge: Dokumentenart, Einbauort, Anlage. Bsp.: &EFS+CC1=HMI/1 In den Einstellungen: Baumstruktur (Seiten) kann man leider nichts importieren, aber vlt. eine Action etc. ausführen? (Hier stelle ich aktuell immer die Struktur um)
In den Projekteigenschaften kann man zwar Projekteigenschaften importieren, klappt bei mir auch, nur wie krieg ich das importierte Schema aktiviert (Anhang rot markiert)? Hab von Suplanus ein Script ausprobiert, dass die Projekteigenschaften eines ausgewählten Projekts importiert, leider verändert sich diese Einstellung nicht. Hat jemand noch eine Idee? Danke & Grüße [Diese Nachricht wurde von Partyarti am 25. Apr. 2022 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nairolf Ehrenmitglied Elektroingenieur
Beiträge: 1995 Registriert: 21.01.2006 EPLAN Electric P8 2024.0.3 Update 1 (Build 21460) EPLAN Pro Panel Professional Addon EPLAN Fluid Addon
|
erstellt am: 25. Apr. 2022 10:52 <-- editieren / zitieren --> Unities abgeben: Nur für Partyarti
Bin mir nicht zu 100% sicher, aber ich denke per Script geht da leider nichts. Evtl. mit API, aber da bin ich nicht so tief drin VG nairolf ------------------ Der Fuchs ist schlau und stellt sich dumm. Bei vielen ist es andersrum ------------------------------------------ Da lernt man mühevoll laufen und sprechen, und nun soll ich stillsitzen und die Klappe halten ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cad_hans Ehrenmitglied V.I.P. h.c. Techn. Angestellter
Beiträge: 2188 Registriert: 25.08.2003 ruplan4.70 eplan5.x P8 V1.9 bis V2.7
|
erstellt am: 25. Apr. 2022 14:40 <-- editieren / zitieren --> Unities abgeben: Nur für Partyarti
hallo, das ist doch eine projekteinstellung. also über script exportieren sichern ändern importieren pdf ausgabe sicherung wieder importieren voila ------------------ ruplan4.70 eplan5.x P8 V1.9 bis V2.7 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ThMue Ehrenmitglied V.I.P. h.c. M.Sc. Wirtschaftsingeneurswesen, B.Eng. Elektro- und Automatisierungstechnik
Beiträge: 2399 Registriert: 22.10.2013 EPLAN Electric P8 - Professional 2.9/2022 + alle Addons
|
erstellt am: 25. Apr. 2022 14:51 <-- editieren / zitieren --> Unities abgeben: Nur für Partyarti
ich werf mal in den raum. warum brauchen die elektriker die andere reifenfolge? 1. darstellung ist funktionsorientiert 2. darstellung ist ortsorientientiert normal haste funktionen gebündelt auf X seiten und dort sind ortsorientiert untergeordnet. Das meiste kannste über auswertungen realisieren indem man z.b. artikelstücklisten ortsorientiert ausgibt ...
------------------ Vorlesungen machen den Verstand träge. Sie zerstören das Potenzial für authentische Kreativität! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Partyarti Mitglied Elektrokonstrukteur
Beiträge: 18 Registriert: 25.04.2022
|
erstellt am: 25. Apr. 2022 15:19 <-- editieren / zitieren --> Unities abgeben:
Hallo cad_hans, ich kann die Einstellung importieren, aber ich weiß nicht wie ich sie "aktiviere"... Wenn die Projekteinstellung importiert wurde, dann muss man sie noch in den Eigenschaften auswählen und bestätigen, erst dann wird sie geladen... gibt es einen anderen Weg? public static void importProjectScheme(string pathProjectScheme) { //Projekt Schemata importieren + überschreiben ActionCallingContext ReadXMLFile = new ActionCallingContext(); string strProject = PathMap.SubstitutePath("$(P)"); ReadXMLFile.AddParameter("Project", strProject); ReadXMLFile.AddParameter("XMLFile", pathProjectScheme); ReadXMLFile.AddParameter("Option", "OVERWRITE"); new CommandLineInterpreter().Execute("XSettingsImport", ReadXMLFile); } In der XML gibts eine Setting "StructureSequence", kann man die evtl. direkt im Projekt verändern? <Setting name="StructureSequence" type="string"> <Val><10001><10006><10003><10002><10004><10007><10005></Val> </Setting>
Danke & Grüße [Diese Nachricht wurde von Partyarti am 25. Apr. 2022 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Partyarti Mitglied Elektrokonstrukteur
Beiträge: 18 Registriert: 25.04.2022
|
erstellt am: 25. Apr. 2022 15:21 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von ThMue: ich werf mal in den raum. warum brauchen die elektriker die andere reifenfolge?
Hallo ThMue, das frage ich mich auch... Ist aber gewünscht und ich schaue jetzt eben, ob man das irgendwie umsetzen kann. Danke & Grüße
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ThMue Ehrenmitglied V.I.P. h.c. M.Sc. Wirtschaftsingeneurswesen, B.Eng. Elektro- und Automatisierungstechnik
Beiträge: 2399 Registriert: 22.10.2013 EPLAN Electric P8 - Professional 2.9/2022 + alle Addons
|
erstellt am: 25. Apr. 2022 15:27 <-- editieren / zitieren --> Unities abgeben: Nur für Partyarti
Zitat: Original erstellt von Partyarti:
Hallo ThMue, das frage ich mich auch... Ist aber gewünscht und ich schaue jetzt eben, ob man das irgendwie umsetzen kann. Danke & Grüße
ich würde erstmal nach der ursache und dem Grund suchen, wieso sie das BRAUCHEN. die sterben ja fast immer wenn sie es nicht so bekommen wie sie es wollen. Kenn das ja selbst und zwar nicht einmal und nicht zweimal bestimmt schon zehnmal gehört. immer wenn man näher drauf eingeht brauchen sie das in wirklichkeit gar nicht, sondern ihnen reicht eine lösung, eine auswertung oder ähnliches. z.b. verbindungsliste nach ORT macht daschon deutlich sinn ... von größten nach kleinsten querschnitten sortiert ... problem gelöst :P legende vom 2d/3d aufbau ... artikelstückliste von ORT ... bam problem gelöst daher würde ich erstmal den ansatz wählen zu hinterfragen und tiefer zu bohren warum es den wirklich benötigt wird. ------------------ Vorlesungen machen den Verstand träge. Sie zerstören das Potenzial für authentische Kreativität! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Partyarti Mitglied Elektrokonstrukteur
Beiträge: 18 Registriert: 25.04.2022
|
erstellt am: 26. Apr. 2022 13:47 <-- editieren / zitieren --> Unities abgeben:
Alles klar, danke ThMue, ich habs eh aufgegeben... Ein paar Einstellungen kann man auf jeden Fall schreiben, auch ohne API. Mich würde nur interessieren ob ich einen Fehler habe, oder ob manche Einstellungen einfach nicht veränderbar sind und vielleicht kann jemand für sich damit was anfangen: Man kann den Kopf einer XML Datei anschauen und sich die Pfade (CAT, MOD, LEV... usw.) holen. Bei mir kann ich z.B. die Setting "ReadOnly" in der gleichen XML verändern, die Setting "StructureSequence" aber nicht - keine Ahnung wieso <?xml version="1.0" encoding="utf-8" ?> <!-- PrjManagementGUI_PROJECT_PageStructureScheme: PRP.Dokumentenart_Anlage_Einbauort.xml --> <Settings format="2"> <CAT name="PROJECT"> <MOD name="PrjManagementGUI"> <LEV1 name="PageStructureScheme" nodekind="scheme"> <LEV2 name="Dokumentenart_Anlage_Einbauort"> <LEV3 name="Data" nodekind="block"> <Setting name="StructureSequence" type="string"> <Val><10001><10006><10003><10002><10004><10007><10005></Val> </Setting> </LEV3> <Setting name="ReadOnly" type="bool"> <Val>0</Val> </Setting> . . . usw. [DeclareAction("test")] public void test() { ////Setting setzen SetProjectSetting("PrjManagementGUI.PageStructureScheme.Dokumentenart_Anlage_Einbauort.Data.StructureSequence", "<10001><10006><10003><10004><10002><10007><10005>"); SetProjectSetting("PrjManagementGUI.PageStructureScheme.Dokumentenart_Anlage_Einbauort.ReadOnly", "0"); ////Setting auslesen string node = "PrjManagementGUI.PageStructureScheme.Dokumentenart_Anlage_Einbauort"; string setting = "/Settings/CAT/MOD/LEV1/LEV2/LEV3/Setting[@name='StructureSequence']/Val"; string setting2 = "/Settings/CAT/MOD/LEV1/LEV2/Setting[@name='ReadOnly']/Val"; string settingTemp = GetProjectSetting(node, setting); string settingTemp2 = GetProjectSetting(node, setting2); MessageBox.Show(settingTemp + Environment.NewLine + settingTemp2); } private string GetProjectSetting(string node, string setting) { try { string projectPath = PathMap.SubstitutePath("$(PROJECTPATH)"); string settingsTempFile = Path.Combine(System.Environment.GetEnvironmentVariable("TEMP"), "GetProjectSetting_temp.xml"); new CommandLineInterpreter().Execute("XSettingsExport /XmlFile:\"" + settingsTempFile + "\" /prj:\"" + projectPath + "\" /Node:" + node); var xmlDocument = new XmlDocument(); xmlDocument.Load(settingsTempFile); var settingNode = xmlDocument.DocumentElement.SelectSingleNode(setting); var projectSetting = settingNode.InnerText; File.Delete(settingsTempFile); return projectSetting; } catch (BaseException exc) { String strMessage = exc.Message; System.Windows.Forms.MessageBox.Show("Exception: " + strMessage); return string.Empty; } }
private void SetProjectSetting(string setting, string value) { CommandLineInterpreter interpreter = new CommandLineInterpreter(); ActionCallingContext XAfActionSettingProjectContext = new ActionCallingContext(); XAfActionSettingProjectContext.AddParameter("set", setting); XAfActionSettingProjectContext.AddParameter("value", value); interpreter.Execute("XAfActionSettingProject", XAfActionSettingProjectContext); } Danke & Grüße
[Diese Nachricht wurde von Partyarti am 26. Apr. 2022 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Partyarti Mitglied Elektrokonstrukteur
Beiträge: 18 Registriert: 25.04.2022
|
erstellt am: 30. Jun. 2022 14:34 <-- editieren / zitieren --> Unities abgeben:
Hallo, falls es jemanden irgendwann mal interessiert... ich habe die Lösung zum Umschalten der Seitenstruktur ohne API-Lizenz gefunden. Mit "XEsGetProjectPropertyAction" kann man die ID "10092" (Aufbau der Baumstruktur im Seitenbaum) auslesen und mit "XEsSetProjectPropertyAction" setzen. Hab die Property ausgelesen und verändert. Um zwischen funktionsorientiert oder einbauorientiert umzuschalten, musste ich z.B. je nach Bedarf "10002" (Projektstruktur: Anlage) mit "10004" (Projektstruktur: Einbauort) tauschen, oder andersrum. Bei mir: funktionsorientiert: "3 10006 0 1 10002 0 1 10004 0 1 11017 0 0" einbauorientiert: "3 10006 0 1 10004 0 1 10002 0 1 11017 0 0" Leider wird die Setting aber nicht direkt übernommen, sondern erst nach Projektneustart. Also nach dem Ändern einfach eine Methode zum Schließen und Öffnen des Plans ausführen und dann passt es:
private void updateProjectInfoXml() { CommandLineInterpreter cli = new CommandLineInterpreter(); ActionCallingContext acc = new ActionCallingContext(); string strProject = PathMap.SubstitutePath("$(P)"); acc.AddParameter("PROJECT", strProject); cli.Execute("XPrjActionProjectClose", acc); acc.AddParameter("PROJECT", strProject); cli.Execute("XPrjActionProjectOpen", acc); } Ich nutze es, um dem Schaltschrankbau eine PDF mit anderer Struktur zu erzeugen. Grüße
[Diese Nachricht wurde von Partyarti am 30. Jun. 2022 editiert.] 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: 01. Jul. 2022 08:25 <-- editieren / zitieren --> Unities abgeben: Nur für Partyarti
Hallo, danke für das teilen der Infos. Anstatt das Projekt zu schließen und wieder zu öffnen könntes du mal Probieren das Event "PageManagement.ProjectSettings.Changed" auszulösen. Code:
new EventManager().Send("PageManagement.ProjectSettings.Changed", new EventParameterString());
------------------ grüße FrankS Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Partyarti Mitglied Elektrokonstrukteur
Beiträge: 18 Registriert: 25.04.2022
|
erstellt am: 01. Jul. 2022 10:33 <-- editieren / zitieren --> Unities abgeben:
Hallo Frank, vielen Dank . Für den PDF Export funktioniert es perfekt, ohne das Projekt neu Öffnen zu müssen. Leider wird der Seitennavigator nicht aktualisiert, aber das stört mich eigentlich nicht weiter. (Wenn ich die Optionen öffne, ist die Einstellung auf jeden Fall "an Eplan übermittelt" , beim Schließen der Optionen aktualisiert sich dann auch der Seitennavigator - aber für mich ja irrelevant) Danke & Grüße Artur Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |