Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  EPLAN Electric P8
  Skript - Automatisierte Bearbeitung

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 EPLAN
Autor Thema:  Skript - Automatisierte Bearbeitung (3794 mal gelesen)
Radler80
Mitglied
Elektrokonstrukteur


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

Beiträge: 15
Registriert: 15.04.2014

P8 Version 2.4

erstellt am: 26. Jan. 2015 19:23    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,

folgendes Problem. Wir arbeiten inzwischen mit P8 2.4.

Ich möchte gerne die Funktion "Automatisiert bearbeiten" nutzen.

Folgendes Problem. Ich habe verschiedene Beschriftungen die ich nacheinander ausgeben möchte. Das kann man dort ja schön zusammen klicken. Ist es Möglich hier eine If Anweisung einzubauen oder ist es sogar Möglich ein Zusatzfeld abzufragen? Steht dort Ja macht er die Auswertung, steht dort Nein macht er die Auswertung nicht.
Im Internet sind alle Beispiele, nachdem das Schema exportiert wurde in der Datei .cs. Wenn ich das Schema exportiere bekomme ich nur ein xml Format. Baue ich hier allerdings eine if Anweisung ein und importiere dieses wieder über Automatisiertes bearbeiten kommt die Fehlermeldung dass die Datei kein Schemata ist welches importiert werden kann. Über Dienstprogramme-->Skript laden lässt sich kein xml Format laden.

Habt ihr hier eine Lösung ? Bzw. kann ich das Schema in ein cs. Format bringen. Dort eine if Anweisung einzubauen ist ja kein Problem.

Danke für eure Hilfe

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

chicken
Mitglied
Technischer Zeichner


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

Beiträge: 137
Registriert: 21.10.2004

Version 2.5 HF2, Buildnr 9499

erstellt am: 28. Jan. 2015 08:03    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 Radler80 10 Unities + Antwort hilfreich

Hallo,

ich befürchte das bietet das automatisiert bearbeiten nicht.
Die Export-Funktion exportiert das Schema der automatisierten Bearbeitung, aber nicht das ganze als Skript.

Somit wirst Du wohl ein Skript manuell erstellen müssen das die möglichen Beschriftungen nacheinander jeweils mit Abfrage anbietet und entsprechend nach Antwort ausführt.

Ein Beispiel (getestet mit Eplan Version 2.3.5), zusammengeklaubt aus diversen Foren-Posts:

Datei "Test.cs" Inhalt

Code:

public class Beschriftungen
{
    [Start]
    [DeclareAction("MeineBeschriftungen")]

    public void MeineBeschriftungen()
    {


        // Projektdatei, Projektpfad, Projektname
        string sSelectedProjectData = string.Empty;    // kompletter Pfad + Projektdateinamen + Erweiterung
        string sSelectedProjectName = string.Empty;    // Projektname
        string sSelectedProjectPath = string.Empty;    // Projektpfad

        // Projektdatei komplett
        CommandLineInterpreter oCLI = new CommandLineInterpreter();
        Eplan.EplApi.ApplicationFramework.ActionCallingContext ctx = new Eplan.EplApi.ApplicationFramework.ActionCallingContext();
        ctx.AddParameter("TYPE", "PROJECT");

        bool bRet = oCLI.Execute("selectionset", ctx); // Action: Projektpfad
        if (bRet == true)
        {
            ctx.GetParameter("PROJECT", ref sSelectedProjectData);
        }

        // Projektname
        sSelectedProjectName = System.IO.Path.GetFileNameWithoutExtension(sSelectedProjectData);
       
      // Projektordnerpfad
    sSelectedProjectPath = System.IO.Path.GetDirectoryName(sSelectedProjectData);
       
    // Abfrage ob Beschriftung 1 ausgeführt werden soll
    DialogResult janein;
   
    janein = MessageBox.Show("Beschriftung 1 ausführen ?", "Meine Beschriftung 1", MessageBoxButtons.YesNo,MessageBoxIcon.Question);
   
       
    if(janein == DialogResult.Yes)
    {
        Beschriftung1(sSelectedProjectPath,sSelectedProjectName);
    }

    // Abfrage ob Beschriftung 2 ausgeführt werden soll
    janein = MessageBox.Show("Beschriftung 2 ausführen ?", "Meine Beschriftung 2", MessageBoxButtons.YesNo,MessageBoxIcon.Question);
   
       
    if(janein == DialogResult.Yes)
    {
        Beschriftung2(sSelectedProjectPath,sSelectedProjectName);
    }

    }
   
    // Beschriftung 1
    public bool Beschriftung1(string prjpath, string prjname)
    {
        ActionCallingContext LabelContext = new ActionCallingContext();
        LabelContext.AddParameter("CONFIGSCHEME","NameDesBeschriftungsSchemas1");
        LabelContext.AddParameter("LANGUAGE", "de_DE");
        LabelContext.AddParameter("DESTINATIONFILE", "" + prjpath + "/" + prjname + "beschriftung1.txt");
        bool ReCo = new CommandLineInterpreter().Execute("Label",LabelContext);
       
        return ReCo;
    }
   
    // Beschriftung 2
    public bool Beschriftung2(string prjpath, string prjname)
    {
        ActionCallingContext LabelContext = new ActionCallingContext();
        LabelContext.AddParameter("CONFIGSCHEME","NameDesBeschriftungsSchemas2");
        LabelContext.AddParameter("LANGUAGE", "de_DE");
        LabelContext.AddParameter("DESTINATIONFILE", "" + prjpath + "/" + prjname + "beschriftung1.txt");
        bool ReCo = new CommandLineInterpreter().Execute("Label",LabelContext);
       
        return ReCo;
    }

}



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

Radler80
Mitglied
Elektrokonstrukteur


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

Beiträge: 15
Registriert: 15.04.2014

P8 Version 2.4

erstellt am: 28. Jan. 2015 20: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

Ok vielen Dank. Echt schade.

Habe mich heute mal an die Arbeit gemacht dass selber zu schreiben. Neben der Beschriftung soll eigentlich noch einiges mehr von dem Skript durchgeführt werden. Das meiste klappt inzwischen. Was mir noch fehlt:
Artikel im Projekt aktualisieren
Artikel im Projekt vervollständigen

Wo finde ich für diese beiden Dinge den passenden Befehl?

Kann mir hier jemand mir weiter helfen? Vielen Dank :-)

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

DanielPa
Mitglied
Consultant


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

Beiträge: 377
Registriert: 21.05.2009

WSCAD Suit Ultimate 2015
Eplan P8 2.2.5 und 2.4

erstellt am: 29. Jan. 2015 09: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 Nur für Radler80 10 Unities + Antwort hilfreich

Hi,
beim erstellen eines Schemas für das automatisierte Bearbeiten wird auch ein C# Script erstellt. Dieses wird unter dem Schemanamen in dem Ordner "Scripte"  (siehe Einstellungen>>Benutzer>>Verwaltung>>Verzeichnisse>>Scripte) abgelegt. Du kannst dir also über "Automatisiert bearbeiten" eine Vorlage erstellen und diese dann anpassen. Ich hab allerdings noch nicht versucht was passiert wenn du ein angepasstes Script über "Automatisiert bearbeiten" nochmal veränderst.
Aktikel>> aktuelles Projekt aktualisieren
Code:
ActionCallingContext context1 = new ActionCallingContext ();
context1.AddParameter("type","SYSTEMPARTSTOPROJECT");
context1.AddParameter("storemode","1");
context1.AddParameter("ProjectName",strProjectName);
new CommandLineInterpreter().Execute("synchronize",context1);

Aktikel>> aktuelles Projekt vervollständigen
Code:
//identisch mit oben nur mit storemode 0
ActionCallingContext context1 = new ActionCallingContext ();
context1.AddParameter("type","SYSTEMPARTSTOPROJECT");
context1.AddParameter("storemode","0");
context1.AddParameter("ProjectName",strProjectName);
new CommandLineInterpreter().Execute("synchronize",context1);


MfG Daniel

------------------
“Hacker (noun): An organism that converts caffeine or alcohol into code.”
~ Standard Definition

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

Radler80
Mitglied
Elektrokonstrukteur


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

Beiträge: 15
Registriert: 15.04.2014

P8 Version 2.4

erstellt am: 29. Jan. 2015 19:54    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

Ja super vielen Dank. Genau das hab ich gesucht. :-)

Kann ich hier auch eine "Abfragebox" programmieren, in dem ich eine Gerätenummer eintrage und diese dann in ein Zusatzfeld einträgt? Oder ist hier API nötig?

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

DanielPa
Mitglied
Consultant


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

Beiträge: 377
Registriert: 21.05.2009

WSCAD Suit Ultimate 2015
Eplan P8 2.2.5 und 2.4

erstellt am: 30. Jan. 2015 11:28    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 Radler80 10 Unities + Antwort hilfreich

Ja das geht per Script. Ich vermute mal du willst eine Projekteigenschaft setzen?

Für die Abfragebox kannst du dir etwas aus dem Internetz kopieren (z.B. hier http://www.csharp-examples.net/inputbox/).
Das Ganze könnte dann so aussehen:

Code:
using System.Windows.Forms;
using System.Drawing;

public class Script
{
[Start]
public void Run()
{
string value = "Document 1";
if (Script.InputBox("New document", "New document name:", ref value) == DialogResult.OK)
{
ActionCallingContext contextXEsSetProjectPropertyAction = new ActionCallingContext();
contextXEsSetProjectPropertyAction.AddParameter("PropertyId","10901");
contextXEsSetProjectPropertyAction.AddParameter("PropertyIndex","1");
contextXEsSetProjectPropertyAction.AddParameter("PropertyValue", value);
new CommandLineInterpreter().Execute("XEsSetProjectPropertyAction", contextXEsSetProjectPropertyAction);
}
}

public static DialogResult InputBox(string title, string promptText, ref string value)
{
  Form form = new Form();
  Label label = new Label();
  TextBox textBox = new TextBox();
  Button buttonOk = new Button();
  Button buttonCancel = new Button();

  form.Text = title;
  label.Text = promptText;
  textBox.Text = value;

  buttonOk.Text = "OK";
  buttonCancel.Text = "Cancel";
  buttonOk.DialogResult = DialogResult.OK;
  buttonCancel.DialogResult = DialogResult.Cancel;

  label.SetBounds(9, 20, 372, 13);
  textBox.SetBounds(12, 36, 372, 20);
  buttonOk.SetBounds(228, 72, 75, 23);
  buttonCancel.SetBounds(309, 72, 75, 23);

  label.AutoSize = true;
  textBox.Anchor = textBox.Anchor | AnchorStyles.Right;
  buttonOk.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
  buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;

  form.ClientSize = new Size(396, 107);
  form.Controls.AddRange(new Control[] { label, textBox, buttonOk, buttonCancel });
  form.ClientSize = new Size(Math.Max(300, label.Right + 10), form.ClientSize.Height);
  form.FormBorderStyle = FormBorderStyle.FixedDialog;
  form.StartPosition = FormStartPosition.CenterScreen;
  form.MinimizeBox = false;
  form.MaximizeBox = false;
  form.AcceptButton = buttonOk;
  form.CancelButton = buttonCancel;

  DialogResult dialogResult = form.ShowDialog();
  value = textBox.Text;
  return dialogResult;
}
}



gesetzt wird hier Zusatzfeld 1 von Projekt. Willst du andere Eigenschaften geht das auch....
Siehe Eplan-Hilfe:
XEsSetPagePropertyAction
XEsSetProjectPropertyAction
XEsSetPropertyAction
Identifizierende Eigenschaften wie z.B. BMKs können mit Scripting nicht ohne weiteres geändert werden.

MfG Daniel

------------------
“Hacker (noun): An organism that converts caffeine or alcohol into code.”
~ Standard Definition

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

Radler80
Mitglied
Elektrokonstrukteur


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

Beiträge: 15
Registriert: 15.04.2014

P8 Version 2.4

erstellt am: 02. Feb. 2015 19: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

Super vielen Dank,

habe jetzt alles zusammengefügt und funktioniert alles.

Eine Sache wäre noch schön, aber da fehlt mir dann die Programmierkenntnis.

Schön wäre es noch eine bestimmte Ebene fest auf drucken bzw. nicht drucken zu setzen. Das dürfte jetzt eigentlich ohne API funktionieren.
Es gibt ja ein schönes Tool mit einer DLL. (http://www.gischel.net/Magic/topic.php?id=604&). Zum einen weiß ich nicht wie ich das Tool in ein vorhandenes Skript einfüge, zum anderen möchte ich keine Auswahl haben, sondern im Skript fest eine Ebene auf drucken bzw. nicht drucken zu setzen.
Hat hier noch jemand einen Tipp ?

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

DanielPa
Mitglied
Consultant


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

Beiträge: 377
Registriert: 21.05.2009

WSCAD Suit Ultimate 2015
Eplan P8 2.2.5 und 2.4

erstellt am: 02. Feb. 2015 21:08    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 Radler80 10 Unities + Antwort hilfreich

Hi,
wenn du eine 32 Bit Installation hast, kannst du das Addin wie beschrieben laden. Dann sollte sich die Action togglelayer über einen CommandLineInterpreter ausführen lassen.
Code:
new CommandLineInterpreter().Execute("ToggleLayers /LAYERSTATE:\"EPLAN400|2,5|n|y|255\"")

Die 64 Bit Variante scheint derzeit nur mit API Lizenz zu funktionieren.
MfG Daniel

------------------
“Hacker (noun): An organism that converts caffeine or alcohol into code.”
~ Standard Definition

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