Subdomains
Ich habe einige Subdomains für Suplanus eingerichtet, um schnelleren Zugriff auf die einzelnen Kategorien zu haben:
Ich habe einige Subdomains für Suplanus eingerichtet, um schnelleren Zugriff auf die einzelnen Kategorien zu haben:
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, 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
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:
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
Anbei wieder eine Lösung von Luc Morin (DANKE). API Modul ist leider Voraussetzung.
Mit diesem Addin ist es möglich, automatisch nach dem Zuweisen eines Wertesatzes, die Adern von einem eventuell vorhanden Kabel im Makro, zu nummerieren (Ressigning).
Das komplette Projekt findet Ihr auf GitHub.
Quelle: stlm.com