ELSchema [Beta]

Anwendungen, Tools, Userlibs und anderes nützliches.
tmjuk
Beiträge: 380
Registriert: 30.06.2006 00:10
Wohnort: Backaryd, Schweden

ELSchema [Beta]

Beitrag von tmjuk »

Hallo,

ich wollte hier mal ein Projekt von mir vorstellen. Es handelt sich dabei um eine Anwendung, mit der man Stromlaufpläne erstellen kann. Der Gedanke dazu ist mir wegen meiner Arbeit gekommen. Wir bauen in Autos eine ganze Menge Elektrik ein und sind dann eben auch gezungen, dies zu dokumentieren.
Es gibt sicherlich schon eine Menge Software für sowas. Aber ich wollte eben was Eigenes. Tja und dies ist das vorläufige Ergebnis.

Es ist die Beta 1.4. Und es ist auch noch nicht alles so verwirklicht, wie ich es mir vorstelle. Aber das soll noch folgen.

Geschrieben wurde die Anwendung unter XP und 2000 Professional. Läuft vielleicht auch auf anderen Windowsplattformen. Man wird sehen.

Wenn jemand Interesse zum Reinschauen hat, kann er sich die Setupdatei runterladen und die Sache ausprobieren.
www.tmjuk.de/files/setup_de.exe

Wenn ihr vielleicht mit der Bedienung des Programmes Probleme habt, versucht es bitte erst mal mit der Hilfe. Die soll ja schließlich auch getestet werden <)

Edit:
Auf Anfrage hier das Programm ohne Installer. Ausführbares Programm ist die ELSchema.exe im Ordner ELSchema.
www.tmjuk.de/files/ELSchema.zip
Einfach irgendwo entpacken und starten. ZUsätzlich wird unter "User\Eigene Dateien\" das Verzeichnis "Data_ELSchema" geschaffen. Das ist das eigentliche Arbeitsverzeichnis des Programms.

Erst mal Danke für eure Aufmerksamkeit

Torsten
Zuletzt geändert von tmjuk am 08.08.2007 12:24, insgesamt 1-mal geändert.
PB 4.51 32 Windows Vista, 32 XP, PB 4.51 32 Ubuntu 10.10
Benutzeravatar
Helmut
Beiträge: 162
Registriert: 20.09.2004 22:53

Beitrag von Helmut »

Ja SUPER,
in PB?
Mache es doch Opensource, dann kann jeder der meint es gebrauchen zu können, erweitern.
Prima Projekt !!
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

Beitrag von Green Snake »

Hi


Jo, schaut sehr gut aus!


Noch ein paar Verbesserungsvorschläge:
-Der Installer ist ziemlich buggy, hängt sich manchmal auf etc.^^
-Warum ist das Programm nicht in der grösse verstellbar? :(
-Das Programm braucht einige Zeit, bis eine neu gezogene Linie "registriert" ist; geht das nicht schneller?
-Das Programm stürzt manchmal ab, wenn ich eine Linie löschen will mit der Fehlermeldung, dass das Bild nicht geladen werden konnte.



Mach weiter, mir gefällt das Programm <)


Cya
-.-"
Benutzeravatar
mardanny71
Beiträge: 266
Registriert: 05.03.2005 01:15
Wohnort: Thüringen

Beitrag von mardanny71 »

Sieht sehr Gut aus.Kann ich gut gebrauchen. :allright:
Ich habe mal ein wenig damit Herumgespielt und bis jetzt sind mir folgende Dinge aufgefallen:

Menü:
- bei Einstellung Deutsch "Language" in "Deutsch" umbenennen ?
- "About" in "Über..."
- Tastenkürzel würde ich deutlicher vom Menünamen trennen.
- mir würde ein SaveFileRequester als Speicherdialog besser gefallen.

Bedienung:
- ruft man den Objekteditor auf wenn man ein Projekt geöffnet hat ist das Projekt nach dem Schließen
des Objekteditors geschlossen.

Objekte:
- kannst Du noch Sicherungstypen wie 13A, 16A, 35A und dergleichen in Deutschland übliches hinzufügen?

Features:
- eine Möglichkeit Beschriftungstexte zu verwalten und schnell aufzurufen wäre nicht schlecht.
- Druckfunktion für Projekte oder Seiten ist das Wichtigste was noch fehlt.
- Export als Grafik aus der Anwendung heraus könnte dann auch gleich mit dazukommen.

gruss
mardanny71
Gruß, mardanny71
Windows 7 - openSUSE 12.1 - KDE 4.7 - PB4.6 beta 4
tmjuk
Beiträge: 380
Registriert: 30.06.2006 00:10
Wohnort: Backaryd, Schweden

Beitrag von tmjuk »

Hallo,
danke erst mal für die Reaktionen.

@Helmut - Ja ist alles PB mit ein wenig API

@ all - erwartet keine Wunder von mir. Ich habe wenig Zeit. Pro Woche ca. 5 - 7 Stunden. Das ganze Projekt hat bis jetzt 8 Monate gedauert. Also bitte Geduld

Ich werde mal versuchen, die ganze Sache ein wenig aufzuteilen.

Bugs
Installer buggy
kann ich sicher bei der nächsten Version EasySetup verwenden oder den Installer von Forge
Absturz bei Linie löschen
noch offen
Projekt neu
Flasche Meldung bei fehlerhafte Eingabe - noch offen
Mouseover
Wenn z.B. das Fenster "Alle Objekte" über dem Zeichenfenster steht reagiert trotzdem die Mouseoverfunktion und unter Umständen kann sogar das Menü ausgelöst werden.

Bedienung
Nach Öffnen des Objekteditor ist Projekt geschlossen
Ja. Ist korrekt. Der Objekteditor ist ein eigenständiges Programm. Aber es ist auch ein gutes Argument. Denke werde da was ändern.
Zeichnen von Linie oder Rechteck
Vielleicht kleine Änderung notwendig. Linie sollte aber sofort erscheinen, sobald man die Maus bewegt. (Nach Ereignis)
Programm nicht in Größe verstellbar
Ja, ich verwende einen Windowed Screen zur Darstellung der Objekte als Sprites. Das Dumme ist nun, das ich noch keine Möglichkeit gefunden habe auf einem Bild Sprites darzustellen. Größenänderungen mit einem Bild statt Screen wären einfacher zu realisieren. Über diese Frage werden mir wohl noch ein paar Haupthaare flöten gehen.

Features
Beschriftungstexte verwalten
Gute Idee. Mal über Realisierung nachdenken
Druckfunktion
Ist in Planung - siehe auch Hilfe
Export als Grafik
Ist bereits enthalten. Menü Projekt - Projekt ausgeben. Und dann werden unter "Eigene Dateien\Data_ELSchema\Finished_Projects\Projektname\" die Seiten als BMP gespeichert.


Wünsche
Language in Deutsch?
Du meinst dann wohl eher in Svenska da ja, wenn das Programm auf Deutsch eingestellt ist, von einem Schweden umgestellt werden will. Language ist hingegen für beide Seiten verständlich.
Andere Objekte?
Andere Sicherungen und so weiter zu erstellen..... könnte ich. Folgende Überlegung steckt aber dahinter -> einer möchte eine Sicherung mit 16A. Dann kommt einer der möchte eine Zenerdiode, an der die Spannung schon dran steht. Dann möchte ein ungenannter kleiner unscheinbarer..... auch noch ein paar Objekte. No. Habe mich damit auseinander gesetzt. Das geht nicht. Es wird immer irgendwelche Wünsche geben. Und deswegen gibt es überhaupt den Objekteditor. Jeder User sein eigenes Objekt... :mrgreen:

About in Über
Einverstanden
Projektverwaltung mittels Requester
Zu einem Projekt können nahezu 300 Dateien gehören. Ich habe diesen Weg gewählt, um sozusagen einen "festen" Speicherplatz zu haben. Aber ehrlich gesagt, bin ich mit dieser Lösung ebenfalls nicht so glücklich. Mal sehen, was kommt.
OpenSource?
Oh Gott, dann muß ich ja den Quelltext ordentlich schreiben :freak: Muß ich drüber nachdenken.
Toolbar
Für Objekteditor und für Elschema

Ich dachte erst mal eine ganze Weile Feedbacks abzuwarten und dann wieder die Arbeit aufzunehmen. Zur Zeit habe ich nämlich noch 2 andere Projekte, welche auch Zeit in Anspruch nehmen. Werde hier aktuelle Änderungen usw. posten
Geplant ist ja auch erst mal eine richtige Praxiserprobung bei mir am Arbeitsplatz. Da werden sich, denke ich, noch ein ganzer Haufen anderer Probleme herausstellen.

Torsten
Zuletzt geändert von tmjuk am 14.08.2007 17:27, insgesamt 1-mal geändert.
real
Beiträge: 468
Registriert: 05.10.2004 14:43

Beitrag von real »

:allright: :allright: :allright:

Sieht Spitze aus!
pede
Beiträge: 90
Registriert: 08.07.2007 20:37
Wohnort: brixen / Italien

Beitrag von pede »

Wow, wirklich toll! :allright:

ich werds einem Kollegen geben, der kanns vill. sogar für die Schule gebrauchen! <)
"oh... ein Sarkasmus-Detektor... ein wirklich nützliches Gerät" .. dit.. dit.. ditditdit.. *bumm*
tmjuk
Beiträge: 380
Registriert: 30.06.2006 00:10
Wohnort: Backaryd, Schweden

Beitrag von tmjuk »

Hallo,

real fragte mich, wie ich verschiedene Sachen gelöst habe.
Im Grunde genommen denke ich schon über eine andere Lösung nach. Eine, die einfacher und besser ist. So wie ich das bis jetzt gemacht habe, funktioniert es zwar, ist aber zu kompliziert.
Aber nun gut.


Hintergrund

Code: Alles auswählen

Ich verwende einen WindowedScreen. Wenn ein Projekt neu erstellt wird (oder eins geladen wird), wird ein BMP geladen (geil: 3 mal "wird" im Satz). Dieses BMP ist sozusagen das Hintergrundbild. Es wird als Sprite geladen, welches auf Position 0,0 im Screen dargestellt wird.
Objekt rot darstellen

Code: Alles auswählen

Alle Objekte gibt es als BMP's. Vordergrundfarbe: rot /Hintergrundfarbe : Rosa {RGB(255,0,255)}. Dieses Rosa setze ich als transparente Farbe. Das Objekt wird als Sprite geladen und je nach Mausposition auf dem Hintergrundsprite transparent dargestellt.
Objekt nach Klick schwarz ablegen

Code: Alles auswählen

An der Mausposition wird das Objektsprite Punkt für Punkt auf das Hintergrundsprite gezeichnet. Rosa = kein Punkt - Rot = schwarzen Punkt setzen. Dann wird das Hintergrundsprite abgespeichert um die Änderung zu erhalten.
Grünfärbung bei Mouseover

Code: Alles auswählen

Dies ist ein wenig komplexer. Zusätzlich zum Hintergrundbild (also das, was man im Zeichenfenster sieht) wird ein weiteres BMP angelegt. Es ist komplett schwarz. Ich nenne es einfach mal "Karte".
Lege ich ein Objekt ab, wird es auf dem Hintergrundbild schwarz dargestellt. In einer Liste werden Informationen zu dem Objekt gespeichert (laufende Nummer, Name, Bildnummer, Ablegeposition usw.).
Und zusätzlich wird auf der "Karte" das Objekt in seiner Gesamtheit gezeichnet. Das bedeutet, nicht nur das Rot, sondern auch das Rosa. So erhalte ich ja ein Rechteck von den ungefähren Abmaßen des Objektes. Kleine Abweichung gibt es, die aber vernachlässigt werden kann. Die Farbe,. in der ich das Rechteck zeichne ist gleich der laufenden Nummer des Objektes (statt RGB(x,x,x) einfach die Zahl).
Wenn ich nun mit der Maus über das Zeichenfeld gehe (denn das ist das, was der User sieht) kontrolliere ich aber an der selben Position auf der Karte die Farbe. Ist die Farbe <> schwarz bin ich über einem Objekt. Anhand der Farbe läßt sich aber nun zurück verfolgen, um welches Objekt es sich handelt. Das Objekt wird nun anhand der Liste identifiziert, geladen und grün dargestellt (genau wie Anzeige rot, bloß an fester Stelle).
Menubefehl löschen

Code: Alles auswählen

Na ganz einfach. Wir haben doch schon alles. Bloß noch Klick erkennen und dem Objekt zuordnen. Dieses Objekt aus der Liste löschen. Dann Hintergrundbild übermalen, so das es leer ist. Karte komplett wieder schwarz machen. Und nun auf Hintergrundbild und Karte nach beschriebener Methode alle Objekte, welche in der Liste stehen, neu zeichnen.
Diese Lösung ist nicht besonders gut. Bei vielen Objekten leidet die Performance. Aber ich bin schon am grübeln. Zur Zeit muß ich allerdings für meine Frau ein Frontend für eine Datenbank basteln. Und dann habe ich ja schon von meinem Arbeitsplatz genügend Stoff zum Nachdenken von meinen Kollegen bekommen. Die erproben nämlich gerade. Ich denke, das ich das Programm komplett verändern werde. Und möglicherweise werde ich es auch als OpenSource machen. Kostet aber alles viel Zeit. Kurz und gut ich bleibe dran

Bis bald
Torsten
PB 4.51 32 Windows Vista, 32 XP, PB 4.51 32 Ubuntu 10.10
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Hi, ich interessiere mich nicht wirklich für das Thema des Programmes.
Eine Setupdatei ist für mich auch abschreckend ... vorallem wenn sie
Buggy ist :wink: ... aber selbst ohne Setup würd ichs wohl nicht laden.

Was ich allerdings möchte, ist vielleicht ein paar Tips zu geben. Ob du sie
an nimmst oder nicht kann ich hingegen ja net beeinflussen.

Also folgendes: Du willst hier ja kein Spiel programmieren das viele
grafische Objekte jede Sekunde darstellen muss, sondern eine
Büroanwendung. Das heißt, hier würde ich keine Sprites verwenden.
Sprites brauchen DirectX (oder OpenGL) und eine Grafikkarte,
Bürocomputer haben meist nur OnBoard (gut ist heute auch schon sehr
gut brauchbar), aber selten ist dort DirectX oder OpenGL überhaupt
installiert.

Solltest du aber weiterhin Sprites verwenden, PB hat ein Problem mit der
Darstellung von transparenten Sprites. Zumindest war das bisher so ...
weis nicht ob sich das seit der PB4 geändert hat, aber sicher ist sicher.
Rosa-Rahmen können je nach PC doch dargestellt werden, obwohl sie es
eigentlich nicht sollten. Verwende schwarz, also RGB(0, 0, 0), hier gab es
noch nie beschwerden von unerwünschten Rändern. RGB(8, 8, 8) kannst
du dann alternativ für das anzuzeigende Schwarz verwenden. Diese
Farbe funktioniert auch bei nicht ganz so hohen Farbeinstellungen. :wink:

Mit Images kann man (für deine Verhältnise) genau so gut arbeiten wie
mit Sprites. Einfach ein ImageGadget erstellen und diesem immer das
aktuelle Image zuweisen, den erst übernimmt das Betriebssystem. Du
verwendest ja eh aktuell ein einziges Sprite. Eine dynamische
Fenstergröße ist damit dann auch kein Problem mehr. :wink:
Das Dumme ist nun, das ich noch keine Möglichkeit gefunden habe auf einem Bild Sprites darzustellen.
Bild = Image? ... Nein, das ist nicht möglich. Du kannst Images auf
Sprites darstellen, aber nicht umgekehrt. Auch kann man Images auf
Images darstellen, was für Fensteranwendungen vollkommen ausreicht
:wink:

Um die Performance zu bewahren solltest du nicht all zu oft
tartDrawing() - StopDrawing() aufrufen, auch reicht es, dem
ImageGadget das aktuelle Image nur dann zu geben, wenn es sich
wirklich geändert hat. In meiner Sig ist ein Link zur CWL (Custom
Windows Library), das funzt auch über ein Haupt-Image und vielen
kleinere die darauf gemalt werden, sehr fix ... nur leider keine Zeit um
das weiter zu machen :cry: ... so hat es leider nur für ein erstes Beispiel
gereicht -.-

Aber egal, nicht das Thema. Für Sprites gibs auch Resize-Prozeduren,
musst nur mal hier oder im englischen Forum nach suchen, obwohl ich
immer noch für Images wäre ... aber ich weis ja nicht, wie komplex dein
System ist und wie du das Refreshen gelöst hast.

Hoffe konnte dir weiter helfen :D

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
tmjuk
Beiträge: 380
Registriert: 30.06.2006 00:10
Wohnort: Backaryd, Schweden

Beitrag von tmjuk »

Danke PVM

in der Richtung bin ich gerade. Ich meine Images statt Sprites.

Ist aber trotzdem interessant.

Torsten
PB 4.51 32 Windows Vista, 32 XP, PB 4.51 32 Ubuntu 10.10
Antworten