LazPlan v0.7 (Beta) - Schaltplansoftware

Vorstellungen von Programmen, welche mit Lazarus erstellt wurden.
Antworten
compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

Re: LazPlan v0.0.1.1 - Schaltplansoftware

Beitrag von compmgmt »

@siro Ich hab das ganze (Version 0.0.1.1) jetzt noch mal unter Win 7 32-Bit VM ausprobiert und es funktioniert einwandfrei.
Dateianhänge
LazPlan Win 7
LazPlan Win 7

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

Mathias
Beiträge: 6167
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: LazPlan v0.0.1.1 - Schaltplansoftware

Beitrag von Mathias »

@siro Ich hab das ganze (Version 0.0.1.1) jetzt noch mal unter Win 7 32-Bit VM ausprobiert und es funktioniert einwandfrei.

Ich denke mal, wen die Hürde mit den Pfaden überwunden ist, wird dein Programm auf allen Plattformen laufen.
Und solange man die Finger von der Unit Windows weglässt.

Noch eine Anregung, da hast für alle Symbole eine Vertikale und eine Horizontale Variante. Ich würde auf dies verzichten. Somit hättest du bei der Diode 4 mal weniger Symbole.
Und der Nutzer hat die Möglichkeit es später zu drehen, als neu zu zeichnen.
Ich würde dies zu Laufzeit ändern, am besten über die rechte Maustaste. Ein Bitmap zu drehen sollte nicht so ein grosses Problem sein. Die Rechte Maustaste hast ja schon abgefangen.
Für den Anfang kannst du die Bitmap über Canvas.Pixels[x, y] modifizieren, später kannst dies immer noch über eine optimierte Routine lösen, :wink:
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Mathias
Beiträge: 6167
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: LazPlan v0.0.1.1 - Schaltplansoftware

Beitrag von Mathias »

Ich habe gerade noch einen Fehler gefunden.

Wen man beendet, wird man gefragt ob man speicher will.
Wen man "ja" wählt kommt der speichern Dialog.
Wen man aber in diesem "Abrechen" drückt, wird die Anwendung beendet. Normalerweise müsste es in die Anwendung zurück kehren.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: LazPlan v0.0.1.1 - Schaltplansoftware

Beitrag von MacWomble »

und auch von mir eine Anregung:

Ich habe das Programm nicht angeschaut und schreibe dir nur aufgrund dessen, was ich hier sehe:

Verwende Vektorgrafik - auch für die Symbole. Verwalte diese als Objekte.

1. sieht das um Welten besser aus
2. hast du dann auch Stücklisten so gut wie fertig
3. Ist die Platzierung (Positionierung), Ausrichtung und Beschriftung sowie die nachträgliche Änderung einfacher
4. Kannst du die Leitungen einfacher zeichnen (Bauteile verbinden etc)
5. Lassen sich einfach Bauteilmakros definieren (z.B. Stern-Dreieck-Schaltung)
6. ist das Speichern einfacher

Für die Bauteile und die Platzierung ist es sinnvoll, mit einem Raster (z.B. 50x50 Pixel) zu arbeiten, das erleichtert manches.
Die Bauteile müssen ja nicht beliebig platziert werden können.

Ich hab das vor 35 Jahren mal auf dem C64 mit Basic realisiert, war gar nicht so kompliziert. Leider habe ich den Quellcode nicht gefunden, sonst hättest du das auf Pascal umsetzen können. (bin gelernter Elektroinstallateur Fachrichtung Schaltanlagenbau - habe aber inzwischen eine andere Profession)
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

siro
Beiträge: 730
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: LazPlan v0.0.1.1 - Schaltplansoftware

Beitrag von siro »

Ich hab das Programm grad auf meinem Laptop mit Windows 8.1 64Bit geladen.
Und dort hab ich das gleiche Problem mit den Symbolen. Warum hab nur ich das Problem. :roll:
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

Re: LazPlan v0.0.1.1 - Schaltplansoftware

Beitrag von compmgmt »

Mathias hat geschrieben:
@siro Ich hab das ganze (Version 0.0.1.1) jetzt noch mal unter Win 7 32-Bit VM ausprobiert und es funktioniert einwandfrei.

Ich denke mal, wen die Hürde mit den Pfaden überwunden ist, wird dein Programm auf allen Plattformen laufen.
Und solange man die Finger von der Unit Windows weglässt.
Ich wollte sowieso allgemein möglichst keine Systembibliotheken anfassen :D

Mathias hat geschrieben:Noch eine Anregung, da hast für alle Symbole eine Vertikale und eine Horizontale Variante. Ich würde auf dies verzichten. Somit hättest du bei der Diode 4 mal weniger Symbole.
Und der Nutzer hat die Möglichkeit es später zu drehen, als neu zu zeichnen.
Ich würde dies zu Laufzeit ändern, am besten über die rechte Maustaste. Ein Bitmap zu drehen sollte nicht so ein grosses Problem sein. Die Rechte Maustaste hast ja schon abgefangen.
Für den Anfang kannst du die Bitmap über Canvas.Pixels[x, y] modifizieren, später kannst dies immer noch über eine optimierte Routine lösen, :wink:
Ja, die Idee kam mir auch schon und ich hatte es auch vor demnächst einzubauen.

MacWomble hat geschrieben:und auch von mir eine Anregung:

Ich habe das Programm nicht angeschaut und schreibe dir nur aufgrund dessen, was ich hier sehe:

Verwende Vektorgrafik - auch für die Symbole. Verwalte diese als Objekte.

1. sieht das um Welten besser aus
2. hast du dann auch Stücklisten so gut wie fertig
3. Ist die Platzierung (Positionierung), Ausrichtung und Beschriftung sowie die nachträgliche Änderung einfacher
4. Kannst du die Leitungen einfacher zeichnen (Bauteile verbinden etc)
5. Lassen sich einfach Bauteilmakros definieren (z.B. Stern-Dreieck-Schaltung)
6. ist das Speichern einfacher

Für die Bauteile und die Platzierung ist es sinnvoll, mit einem Raster (z.B. 50x50 Pixel) zu arbeiten, das erleichtert manches.
Die Bauteile müssen ja nicht beliebig platziert werden können.

Ich hab das vor 35 Jahren mal auf dem C64 mit Basic realisiert, war gar nicht so kompliziert. Leider habe ich den Quellcode nicht gefunden, sonst hättest du das auf Pascal umsetzen können. (bin gelernter Elektroinstallateur Fachrichtung Schaltanlagenbau - habe aber inzwischen eine andere Profession)
Ich hab mich bisher noch nicht mit Vektorgrafiken in Pascal auseinandergesetzt. Aber ja, das wäre natürlich eine bessere Variante. Ich werde mich auf jeden Fall mal reinlesen.

siro hat geschrieben:Ich hab das Programm grad auf meinem Laptop mit Windows 8.1 64Bit geladen.
Und dort hab ich das gleiche Problem mit den Symbolen. Warum hab nur ich das Problem.
Wo hast du denn das Zip-Archiv hin entpackt? Braucht man in diesem Pfad evtl. Admin-Rechte zum Lesen? Weil das ist doch sehr merkwürdig...

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

Re: LazPlan v0.0.1.1 - Schaltplansoftware

Beitrag von compmgmt »

@MacWomble Achso, das ganze quasi mit TCanvas lösen, nehm ich an. Da müsste ich mal schauen, denn sobald man das Fenster überdeckt o.ä. sind die Linien ja wieder weg. Ich weiß zwar, dass man das unter Windows mittels BitBlt() unterbinden kann, wie es unter Linux geht weiß ich allerdings nicht.

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

siro
Beiträge: 730
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: LazPlan v0.0.1.1 - Schaltplansoftware

Beitrag von siro »

Guten Morgen Ihr Fleißgen,

Ich habe alles entpackt in C:\Siro\Lazarus\LazPlan2

Beim Starten des Programms erscheinen ja die Symbole richtg.
Ich hab mir mal die Verzeichnisse ausgeben lassen, das sieht auch richtig aus.

LazPlan_1.jpg
LazPlan_2.jpg
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

Re: LazPlan v0.0.1.1 - Schaltplansoftware

Beitrag von compmgmt »

siro hat geschrieben:Guten Morgen Ihr Fleißgen,

Ich habe alles entpackt in C:\Siro\Lazarus\LazPlan2

Beim Starten des Programms erscheinen ja die Symbole richtg.
Ich hab mir mal die Verzeichnisse ausgeben lassen, das sieht auch richtig aus.

LazPlan_1.jpg
LazPlan_2.jpg
Ja, die sind richtig. Dann muss es ein anderes Problem sein. Denn eigentlich mache ich ja folgendes: Bitmap-Datei -> TBitmap -> TImageList -> TListView

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

Re: LazPlan v0.0.1.1 - Schaltplansoftware

Beitrag von compmgmt »

@MacWomble Ich glaub ich mach doch nur die Leitungen als Vektorgrafiken. Klar, komplett Vektorgrafiken ist schöner, allerdings auch recht Komplex. Verbinden werde ich die Schaltsymbole trotzdem können:

Code: Alles auswählen

type
  TSchaltsymbol = class(TImage)
    private
      FImgPath: String;
      procedure SetImgPath(s: String);
    public
      DockingPoints: array[0..15] of TPoint;
      destructor Destroy; override;
    published
      property ImgPath: String read FImgPath write SetImgPath;
  end;
Ich verwende jetzt meine eigene Klasse TSchaltsymbol (die aber von TImage geerbt ist) für die Schaltsymbole. Hier kann ich nämlich
- den Pfad der Bitmap (TSchaltsymbol.ImgPath) direkt speichern (war vorher TImage.Hint, was nicht schön war). Außerdem wird beim Verändern des Pfades auch gleich die Bitmap ins Image geladen.
- Für das Verbinden der Objekte werde ich einfach Punkte angeben (TSchaltsymbol.DockingPoints). Zum Testen reichen erstmal 16 Punkte, später dann unendlich (dynmaisch). Die Punkte definiere ich einfach in einer INI-Datei, die genau so heißt was Schaltsymbol selbst (z.B. Die INI von "Diode.bmp" heißt dann "Diode.cfg").

Die Docking Points Routine, sowie das Zeichnen der Leitungen muss ich aber jetzt erstmal schreiben :D

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

thosch
Beiträge: 324
Registriert: Mo 10. Jul 2017, 20:32

Re: LazPlan v0.0.1.1 - Schaltplansoftware

Beitrag von thosch »

Schönes Programm. Genau so wie oben über dem Beitrag schon gemacht, wünsche ich mir das weitere Design. Alle Schaltsymbole dann von so einer Basisklasse abgeleitet. Bis jetzt kann ich zwar so den Stromlaufplan erstellen. Ich wünschte mir aber eine Simulation der Funktion der Bauelemente. Ich bin Elektroingenieur, aber schon lange arbeitslos. Gerade deshalb habe ich Lust, mich an der Weiterentwicklung des Programmes zu beteiligen. Da brauchen wir dann ein für uns beide verständlich geschriebenes Lehrbuch der Elektrotechnik/Elektronik. Um halt eine Diode sich auch wie eine Diode verhalten zu lassen, ....

Klar brauchen wir da erst mal weitere Schaltsymbole, wie Transistor, Optokoppler u.v.a.m.

Danach geht es an die mathematische Beschreibung der Symbole, derart, das später auch eine Schlatungssimulation möglich wird.

Das aber ist alles noch Zukunftsmusik.

Zunächst wäre noch schön, ein Schaltsymbol drehen zu können. Widerstand von Horizontal nach Vertikal. Diode ebenso und Anode und Kathode vertauschen, einfach durch drehen um jeweils 90 grad. Bei den Leitungsverbindungen wäre es toll, wenn ich die einfach per Drag/Drop erstellen könnte.

Ich werde die Weiterentwicklung der Software mit großem Interesse verfolgen und den Quelltext akribisch aufmerksam studieren.

.

compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

Re: LazPlan v0.0.1.1 - Schaltplansoftware

Beitrag von compmgmt »

thosch hat geschrieben:Schönes Programm. Genau so wie oben über dem Beitrag schon gemacht, wünsche ich mir das weitere Design. Alle Schaltsymbole dann von so einer Basisklasse abgeleitet. Bis jetzt kann ich zwar so den Stromlaufplan erstellen. Ich wünschte mir aber eine Simulation der Funktion der Bauelemente. Ich bin Elektroingenieur, aber schon lange arbeitslos. Gerade deshalb habe ich Lust, mich an der Weiterentwicklung des Programmes zu beteiligen. Da brauchen wir dann ein für uns beide verständlich geschriebenes Lehrbuch der Elektrotechnik/Elektronik. Um halt eine Diode sich auch wie eine Diode verhalten zu lassen, ....

Klar brauchen wir da erst mal weitere Schaltsymbole, wie Transistor, Optokoppler u.v.a.m.

Danach geht es an die mathematische Beschreibung der Symbole, derart, das später auch eine Schlatungssimulation möglich wird.

Das aber ist alles noch Zukunftsmusik.

Zunächst wäre noch schön, ein Schaltsymbol drehen zu können. Widerstand von Horizontal nach Vertikal. Diode ebenso und Anode und Kathode vertauschen, einfach durch drehen um jeweils 90 grad. Bei den Leitungsverbindungen wäre es toll, wenn ich die einfach per Drag/Drop erstellen könnte.

Ich werde die Weiterentwicklung der Software mit großem Interesse verfolgen und den Quelltext akribisch aufmerksam studieren.

.
Danke, das freut mich sehr zu hören :D
Ja, wie ich schon beschrieben habe, hab ich erstmal nur ein paar Schaltsymbole drin. Denn sollte sich mal etwas in dieser Richtung ändern (bspw z.B. mit den thumbnails, die neu dazu kamen), ist es einfacher wenn man nur 15 bis 20, statt über 200 Schaltelemente hat. Dinge wie Transistoren, Thyristoren, Varistoren, Optokoppler, NTCs, PTCs, usw. werden selbstverständlich noch eingebaut. Solltest du jetzt aber einen ganz speziellen Wunsch haben, dass ein bestimmtes Element schon jetzt in der Testphase eingebaut wird, kann ich das natürlich gerne machen :D

Die Simulation ist auch in Planung, aber wie du selbst sagst wird das noch eine ganze Weile dauern. Das Verhalten der Schaltelemente könnte man dann evtl auch mit PascalScript (oder irgend einem anderen Script) realisieren. Denn ich möchte das ganze Programm möglichst Modular aufbauen, so dass man für ein neues Schaltsymbol den Quellcode von LazPlan nicht ändern muss. Wenn diese Schnittstelle mal fertig ist, kann jeder Schaltsymbole erstellen. So kann man in kurzer Zeit alle Schaltsymbole ins Programm einbauen.

Die Drehung der Schaltsymbole kommt recht bald, wenn alles klappt. Vorher möchte ich allerdings noch die automatische Leitungsverlegung realisieren. Eben wie du sagst, per Drag and Drop oder per zwei mal klicken (erst den Start, dann das Ziel anklicken).


Also die aktuelle Wunschliste besteht daraus:
- Leitungen als Linien, nicht mehr als Schaltsymbole (aktuell in Bearbeitung)
- Drehung der Schaltsymbole per Popup-Menü
- Schaltplansimulation (wird etwas größeres, dauert also noch)
- Mehr Schaltsymbole (spätestens zur ersten Vollversion (v1.0.0.0) werden die meisten Schaltsymbole eingebaut sein)

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: LazPlan v0.0.1.1 - Schaltplansoftware

Beitrag von wp_xyz »

compmgmt hat geschrieben:Die Simulation ist auch in Planung, aber wie du selbst sagst wird das noch eine ganze Weile dauern. Das Verhalten der Schaltelemente könnte man dann evtl auch mit PascalScript (oder irgend einem anderen Script) realisieren.

Oh-oh... Ich fürchte, du hast keine Ahnung, was auf dich zukommt. Zum Beispiel: Weißt du, was gekoppelte Differentialgleichungen sind und wie man sie löst? Überhaupt: wie man ein Gleichungssystem löst? Wenn du anfängst, das alles selbst zu programmieren, wird dein Projekt nie fertig. Simulation in einem Hobby-Projekt funktioniert nur, wenn du einen anerkannten Simulator aufrufst, etwa SPICE wie oben schon erwähnt.

compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

Re: LazPlan v0.0.1.1 - Schaltplansoftware

Beitrag von compmgmt »

wp_xyz hat geschrieben:
compmgmt hat geschrieben:Die Simulation ist auch in Planung, aber wie du selbst sagst wird das noch eine ganze Weile dauern. Das Verhalten der Schaltelemente könnte man dann evtl auch mit PascalScript (oder irgend einem anderen Script) realisieren.

Oh-oh... Ich fürchte, du hast keine Ahnung, was auf dich zukommt. Zum Beispiel: Weißt du, was gekoppelte Differentialgleichungen sind und wie man sie löst? Überhaupt: wie man ein Gleichungssystem löst? Wenn du anfängst, das alles selbst zu programmieren, wird dein Projekt nie fertig. Simulation in einem Hobby-Projekt funktioniert nur, wenn du einen anerkannten Simulator aufrufst, etwa SPICE wie oben schon erwähnt.
Genau weiß ich nicht was auf mich zukommt, allerdings werde ich es einfach mal probieren. Zur Not kann ich immer noch auf andere Komponenten zurück greifen ;)

Nachtrag: Wenn ich die Simulation einbaue, beachte ich aber (erst mal) nicht die Leistung, Spannung, ... der Bauteile, da das viel zu kompliziert wird. Später kann man so etwas mit Sicherheit noch einbauen.

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

Mathias
Beiträge: 6167
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: LazPlan v0.0.1.1 - Schaltplansoftware

Beitrag von Mathias »

@MacWomble Ich glaub ich mach doch nur die Leitungen als Vektorgrafiken. Klar, komplett Vektorgrafiken ist schöner, allerdings auch recht Komplex. Verbinden werde ich die Schaltsymbole trotzdem können:

So ein riessen Problem, sollte eine Vektor-Grafik nicht sein, im einfachsten Fall ist dies einfach eine Array aus Linien. Nachträgliche Drehungen/Spiegelungen sind dann sehr einfach.

Oh-oh... Ich fürchte, du hast keine Ahnung, was auf dich zukommt. Zum Beispiel: Weißt du, was gekoppelte Differentialgleichungen sind und wie man sie löst? Überhaupt: wie man ein Gleichungssystem löst? Wenn du anfängst, das alles selbst zu programmieren, wird dein Projekt nie fertig. Simulation in einem Hobby-Projekt funktioniert nur, wenn du einen anerkannten Simulator aufrufst, etwa SPICE wie oben schon erwähnt.

Das denke ich auch, das dies sehr komplex wird, damit habe sogar Profi-Programme mühe. Ein Simulator für Digital-Schalungen kann ich mir noch vorstellen, aber analoges Zeugs.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten