EPLAN

UpdateQueryTable Multiuserconflict

Es gibt einen Bug in EPLAN der das aktualiseren des Suchindexes verhindert.

EPLAN zeigt diese Fehlermeldung an, obwohl sonst keine Person an der Datenbank arbeitet:

 

Es gibt eine nicht dokumentierte Action in EPLAN um diese Meldung bzw. den Status zurückzusetzen:

XPameUpdateQueryTable /ClearMultiUserLock:1

 

Ich habe eine Toolbar mit genau einem Button erstellt:

UpdateQueryTable Toolbar (1513 Downloads )

 

Vielen Dank an hual aus dem CAD.de-Forum für die Bereitstellung der Lösung.

Von |2017-11-09T12:23:46+01:002012-10-09|EPLAN, EPLAN-Scripts|

RemoveSelection

Mit dieser versteckten Action kann das Verhalten des Markierens im grafischen Editor geändert werden.

Das Script ausführen, das Verhalten wird geändert. Wollt ihr wieder das alte Verhalten, müsst Ihr das Script erneut ausführen.

Vielen Dank an FrankS für die Umsetzung.

  RemoveSelection (1421 Downloads )

' RemoveSelection, Version 1.0.0, vom 29.02.2012
'
' Steuert, ob Objekte nach einer Interaktion deselektiert werden sollen.
' Default = 1
'
' Copyright by Frank Schöneck, 2012
'
' für Eplan Electric P8, ab V2.1.6
'
'
Public Class WriteSettings
     _
    Public Sub MyFunction()

        Dim bolSetting As Boolean
        Dim oSettings As New Eplan.EplApi.Base.Settings()

        'Einstellung auslesen
		bolSetting = oSettings.getBoolSetting("USER.GedViewer.RemoveSelection", 0)

        'wenn nicht gesetzt, setzen
        If bolSetting = False Then
			oSettings.setBoolSetting("USER.GedViewer.RemoveSelection", True, 0)
			MessageBox.Show("Die Einstellung wurde 'aktiviert'.", "RemoveSelection", MessageBoxButtons.OK, MessageBoxIcon.Information)
            'wenn gesetzt, zurücksetzen
        ElseIf bolSetting = True Then
			oSettings.setBoolSetting("USER.GedViewer.RemoveSelection", False, 0)
			MessageBox.Show("Die Einstellung wurde 'deaktiviert'.", "RemoveSelection", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End If

    End Sub 'MyFunction

End Class
Von |2017-11-09T12:23:46+01:002012-09-25|EPLAN, EPLAN-Scripts|

EplanGetProjectVersion

Es ist ein Problem das EPLAN leider seit Jahren nicht in den Griff bekommt.

Das Projektaustauschformat ZW1 enthält keine direkte Information welche Projektversion das Projekt hat. Somit weiß man erst beim Import des Projektes ob man die richtige EPLAN Version geöffnet hat.

Hier muss man oft sehr Zeitintensiv die verschiedenen Versionen der Software öffnen/schließen.

Ich habe ein kleines Programm geschrieben, welches die ZW1-Datei prüft und die EPLAN Version anzeigt. Zusätzlich kann in einer INI-Datei hinterlegt werden, welche Versionen auf dem Rechner installiert sind. Falls die passende Version nicht installiert ist wird diese Information angezeigt:

Beispielaufbau der Settings.ini:

1.9.11	C:\Program Files (x86)\EPLAN\Electric P8\1.9.11\BIN\W3u.exe
2.0.10	C:\Program Files (x86)\EPLAN\Electric P8\2.0.10\BIN\W3u.exe
2.1.6	C:\Program Files (x86)\EPLAN\Electric P8\2.1.6\Bin\W3u.exe

Wert und Eigenschaft werden durch TABSTOP getrennt.

Ist die EPLAN Version auf dem Rechner vorhanden, wird diese gleich geöffnet. Falls nicht wird die Versionsnummer angezeigt. Bitte achtet darauf die INI-Datei zu ändern. Ich habe z.B. ein Windows 7 64bit, hier ist der Pfad zu EPLAN ein anderer als Beispielsweise unter Windows XP. Hier wird sonst ein Fehler ausgegeben.

Ich habe das Programm EplanGetProjectVersion als Standardprogramm unter Windows eingestellt. Dadurch kann ich mit einem einfachen Doppelklick die Datei öffnen bzw. die Version anzeigen lassen:

 

EplanGetProjectVersion 1.0.0 (2895 Downloads )

Projekt auf GitHub

 

using System;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Xml;

namespace EplanGetProjectVersion
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            try
            {
                string ProjectFile = args[0];
                const string QUOTE = "\"";
                const string NEWLINE = "\n";
                string IniFile = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + @"\Settings.ini";
                string SevenZip = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + @"\7za.exe";
                string TempDir = Path.GetTempPath();
                string TempFile = TempDir + "ProjectInfo.xml";
                string clArg = "e " + QUOTE + ProjectFile + QUOTE + " -o" + QUOTE + TempDir + QUOTE +
                               " ProjectInfo.xml -r";

                Console.WriteLine(
                    "==> INI file: " + IniFile + NEWLINE +
                    "==> 7zip location: " + SevenZip + NEWLINE +
                    "==> Project: " + ProjectFile + NEWLINE +
                    "==> Temp directory: " + TempDir + NEWLINE +
                    "==> Temp file: " + TempFile +
                    "==> Argument: " + clArg
                    );

                Console.WriteLine("<<< Search for 'ProjectInfo.xml'... >>>");

                // Delete tempfile
                if (File.Exists(TempFile))
                {
                    File.Delete(TempFile);
                    Console.WriteLine("==> TempFile deleted.");
                }

                // Unzip
                Console.WriteLine("<<< Arguments >>>");
                Process t7zip = new Process();
                t7zip.StartInfo.FileName = SevenZip;
                t7zip.StartInfo.Arguments = clArg;
                t7zip.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                t7zip.StartInfo.RedirectStandardOutput = true;
                t7zip.StartInfo.UseShellExecute = false;
                t7zip.EnableRaisingEvents = true;
                t7zip.Start();
                Console.WriteLine(t7zip.StandardOutput.ReadToEnd());

                // Check ProjectInfo.xml
                if (!File.Exists(TempFile))
                {
                    Console.WriteLine("==> No 'ProjectInfo.xml' found :(");
                    Console.ReadLine();
                    return;
                }

                // Search for XML property
                Console.WriteLine("<<< Search for last used version... >>>");
                string LastVersion = ReadXml(TempFile, 10043);
                Console.WriteLine("==> " + LastVersion);

                // EPLAN start
                string[] Ini = File.ReadAllLines(IniFile);
                foreach (string s in Ini)
                {
                    string[] setting = s.Split('\t');
                    if (setting[0].Equals(LastVersion))
                    {
                        Process.Start(setting[1]);
                        Console.WriteLine("==> EPLAN " + LastVersion + " started...");
                        return;
                    }
                }

                // Wait
                Console.WriteLine("==> No EPLAN " + LastVersion + " found in settings file :(");
                Console.ReadLine();
                return;
            }
            catch (Exception ex)
            {
                Console.WriteLine("ERROR: " + ex);
                Console.ReadLine();
            }
        }

        private static string ReadXml(string filename, int ID)
        {
            string strLastVersion;

            try
            {
                XmlTextReader reader = new XmlTextReader(filename);
                while (reader.Read())
                {
                    if (reader.HasAttributes)
                    {
                        while (reader.MoveToNextAttribute())
                        {
                            if (reader.Name == "id")
                            {
                                if (reader.Value == ID.ToString())
                                {
                                    strLastVersion = reader.ReadString();
                                    reader.Close();
                                    return strLastVersion;
                                }
                            }
                        }
                    }

                }
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
            return "Property 10043 not found :(";
        }

    } // Class
} // Namespace
Von |2017-11-09T12:23:46+01:002012-08-22|EPLAN, EPLAN-Scripts|
Nach oben