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 »

Mathias hat geschrieben:
Rot-Grün Sehschwäche)
Diese Problem habe ich auch, bei roten und grünen Linien muss ich zum Teil 2x gucken.
Dann ist deine Signatur aber sehr selbstironisch :lol:

Code: Alles auswählen

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

Mathias
Beiträge: 6164
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 »

Dann ist deine Signatur aber sehr selbstironisch

Wen die Augen müde sind, ist der Effekt extremem. Oder auf Papier, wen das Licht schwach ist.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

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 »

So, bin jetzt um einiges weiter. Schaltsymbole haben (wie schon erwähnt) ihre eigene Klasse (TSchaltsymbol), die ich jetzt noch mal ein bisschen verbessert hab

Code: Alles auswählen

  { TCustomSchaltsymbol }
  TCustomSchaltsymbol = class(TImage)
    private
      FImgPath: String;
      FSearchPath: String;
      FFileExt: String;
      procedure SetImgPath(s: String);
    public
      DockingPoints: array[0..15] of TPoint;
      ACanvas: TCanvas;
      constructor Create(AOwner: TComponent; SearchPath, FileExt: String);
      destructor Destroy; override;
      property ImgPath: String read FImgPath write SetImgPath;
  end;
 
  { TSchaltsymbol }
  TSchaltsymbol = class(TCustomSchaltsymbol)
    published
      property ImgPath;
  end;

Die Leitungen werden von Pin zu Pin "gezogen". D.h. ich speicher nur das Start- und Zielschaltsymbol und dessen Anschlusspin (TCustomSchaltsymbol.DockingPoints[<Pin>]). Die Leitungen sind dann in einem dynamischen Array gespeichert und ich zeichne Sie von Pin zu Pin bei der OnPaint-Routine

Code: Alles auswählen

  { TLine }
  TLine = record
    FromObj, ToObj: TSchaltsymbol;
    FromPin, ToPin: Integer;
  end;
 
  { TLines }
  TLines = array of TLine;

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 »

Hier mal ein Screenshot von der automatischen Linienzeichnung. Wird ein Schaltsymbol verschoben, wird die Leitung direkt "hinterher" gezogen. Leitungen ziehen geht bislang aber nur, wenn ich sie in der INI-Datei (Schaltplandatei) eintrage. Im Programm selbst kann ich noch keine Leitungen ziehen (obwohl der Button schon da ist).
Beispiel für eine Schaltplandatei

Code: Alles auswählen

[Diode0]
type=image
content=Dioden/Diode N
X=176
Y=16
 
[Diode1]
type=image
content=Dioden/Diode N
X=232
Y=104
 
[Leitung]
type=wire
fromobj=Diode0
frompin=1
toobj=Diode1
topin=0

Die Position der Pins auf dem Schaltsymbol werden in der entsprechenden Komponentendatei definiert (Hier "./Components/objects/Dioden/Diode N.cfg")

Code: Alles auswählen

[0]
x=15
y=0
 
[1]
x=15
y=31


Noch kleiner Hinweis nebenbei: Die Drehung der Schaltsymbole kommt, sobald ich hiermit fertig bin. Denn dann müssen ja auch die Pins mit gedreht werden, deswegen macht es jetzt noch kein Sinn das einzubauen.
Dateianhänge
Automatische Leitungen
Automatische Leitungen

Code: Alles auswählen

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

Thandor
Beiträge: 153
Registriert: Sa 30. Jan 2010, 18:17
OS, Lazarus, FPC: Windows 10 64Bit/ lazarus 3.0 mit FPC 3.2.2 (32Bit + 64bit)
CPU-Target: 64Bit
Wohnort: Berlin

Re: LazPlan v0.0.1.1 - Schaltplansoftware

Beitrag von Thandor »

Verstehe ich das Richtig? Du hast pro Bauelement nur 16 Anschlussmöglichkeiten? Was machst du wenn du ein IC mit 32 Beinen hast oder einen yControler darstellen möchtest? Oder noch schlimmer eine reguläre CPU, die durch aus an die 100 Pins haben kann?

Ich würde das Dynamisch implementieren:

Code: Alles auswählen

 
DockingPoints: array of TPoint;
 
// Array um ein Element vergrößern
SetLength(DockingPoints, length(DockingPoints) + 1);
 
// Durch die Elemente iterieren
for i:=0 to length(DockingPoints)-1 do
  MacheWas(DockingPoints[i]);
 

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 »

Thandor hat geschrieben:Verstehe ich das Richtig? Du hast pro Bauelement nur 16 Anschlussmöglichkeiten? Was machst du wenn du ein IC mit 32 Beinen hast oder einen yControler darstellen möchtest? Oder noch schlimmer eine reguläre CPU, die durch aus an die 100 Pins haben kann?

Ich würde das Dynamisch implementieren:

Code: Alles auswählen

 
DockingPoints: array of TPoint;
 
// Array um ein Element vergrößern
SetLength(DockingPoints, length(DockingPoints) + 1);
 
// Durch die Elemente iterieren
for i:=0 to length(DockingPoints)-1 do
  MacheWas(DockingPoints[i]);
 
So ist es auch angedacht. Ich hab grade nur während der Testphase die Anzahl auf 16 begrenzt, damit ich mich in dem Moment nicht um die Größe kümmern muss. Wenn die Version rauskommt, wird es ein dynamisches Array sein ;)

Code: Alles auswählen

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

Thandor
Beiträge: 153
Registriert: Sa 30. Jan 2010, 18:17
OS, Lazarus, FPC: Windows 10 64Bit/ lazarus 3.0 mit FPC 3.2.2 (32Bit + 64bit)
CPU-Target: 64Bit
Wohnort: Berlin

Re: LazPlan v0.0.1.1 - Schaltplansoftware

Beitrag von Thandor »

Na dann... habe ich nix gesagt :wink:

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.2.0 - Schaltplansoftware

Beitrag von compmgmt »

So, nach 5 Tagen Entwicklungszeit ist es so weit. Die Leitungsverlegung ist fertig. Man kann die Leitungsverlegung (de)aktivieren der ToogleBox "Leitung ziehen". Der aktuelle Modus wird außerdem noch unten in der neuen Statuszeile angezeigt. Im Modus "Leitung ziehen" kann man dann einfach erst auf den Start- und dann auf den Endpunkt eines Schaltsymbols klicken und die Leitung wird gezogen (wo die Pins sind, werdet ihr dann schon sehen. Ist visualisiert ;) ). Das Drehen der Schaltsymbole ist dann die nächste große Funktion, die ich einbauen werde. Hier noch der Rest der Änderungen:

Code: Alles auswählen

v0.0.2.0 27.07.2017
   - Bugfixes
      - Anwendung beendet sich nicht mehr, wenn man in ungespeichertem Zustand schließt, auf "Ja" klickt und im Speicherdialog auf "Abbrechen" klickt
      - Zeilenumbrüche im Hilfedialog unter "Hilfe" -> "Bedienung" an das System angepasst (LineEnding statt #13#10)
   - Schaltsymbole sind nun Objekte der Klasse "TSchaltsymbol" (geerbt von "TCustomSchaltsymbol" (geerbt von "TImage")) statt TImage
   - Fehlermeldungen werden nun über eine Fehlerausgabe-Routine ausgegeben und sind nummeriert
   - Leitungen sind nun Linien und keine Schaltsymbole mehr
   - Application.Title zeigt nun auch den aktuellen Dateinamen an
   - Die drei zuletzt verwendeten Schaltplandateien werden jetzt im Menü angezeigt
   - Dankessatz an "lazarusforum.de" im About-Dialog eingebaut
   - Thumbnail von "Leitung Horizontal" und "Leitung Vertikal" auf ein rotes Verbotszeichen geändert, da man diese Schaltsymbole zukünftig nicht mehr verwenden soll


@Thandor: Ja, ist jetzt (wie geplant) ein dynamisches Array ;)
@siro: Besteht das Problem mit den Thumbnails bei dir immer noch?

Code: Alles auswählen

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

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

Re: LazPlan v0.0.2.0 - Schaltplansoftware

Beitrag von Mathias »

Die aktuelle Version lässt sich nicht mehr kompilieren.

Code: Alles auswählen

Projekt kompilieren, Modus: Release, Ziel: /home/tux/Schreibtisch/Schaltplan/source/bin/LazPlan: Exit code 256, Fehler: 1
errors.pas(8,20) Fatal: Circular unit reference between errors and sysutils


Ist dies nur bei mir so ?

PS: Unter Wine geht es.
PSS: Auch die Windows Version hat einen Fehler.
Am Anfang kommt die Diode, dies die wäre noch gut. Wähle ich anliessend nochmals Diode, dann verdoppelt sich die Grösse der TListView.
Die obere Hälfte ist dabei total leer und bei der untern Hälfte kommt nur noch die Beschriftung.
Ich denke der Fehler liegt irgendwo dort:

Code: Alles auswählen

      li := LV_Objects.Items.Add;
      li.Caption := ExtractFileNameOnly(sl[i]);
      li.ImageIndex := i;
      li := nil;   
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

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.2.0 - Schaltplansoftware

Beitrag von compmgmt »

Mathias hat geschrieben:Die aktuelle Version lässt sich nicht mehr kompilieren.

Code: Alles auswählen

Projekt kompilieren, Modus: Release, Ziel: /home/tux/Schreibtisch/Schaltplan/source/bin/LazPlan: Exit code 256, Fehler: 1
errors.pas(8,20) Fatal: Circular unit reference between errors and sysutils


Ist dies nur bei mir so ?
Scheint ein Problem unter Linux zu sein. Ich hab "uses sysutils" in "error.pas" in den implementation-Teil gerückt. Jetzt sollte es funktionieren.

Mathias hat geschrieben:PS: Unter Wine geht es.
PSS: Auch die Windows Version hat einen Fehler.
Am Anfang kommt die Diode, dies die wäre noch gut. Wähle ich anliessend nochmals Diode, dann verdoppelt sich die Grösse der TListView.
Die obere Hälfte ist dabei total leer und bei der untern Hälfte kommt nur noch die Beschriftung.
Ich denke der Fehler liegt irgendwo dort:

Code: Alles auswählen

      li := LV_Objects.Items.Add;
      li.Caption := ExtractFileNameOnly(sl[i]);
      li.ImageIndex := i;
      li := nil;   
Also bei mir unter Win10 und Win7 geht alles, scheint evtl. an Wine zu liegen.

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.2.1 - Schaltplansoftware

Beitrag von siro »

Schönen guten Morgen,
ich hab grad die aktuelle Version propiert.

Ein sehr merkwürdiges Phänomen:

Wenn ich die Zip Datei entpacke und die .exe starte erscheinen meine Symbole auch ALLE richtig.

Wenn ich das Projekt selbst compiliere, was problemlos läuft, und dann die .exe starte, egal ob aus der IDE oder direkt aus dem Windows Explorer,
dann gehen die Symbole nicht mehr. Also passiert das erst durch die Neucompilierung warum auch immer.... :shock:

Ansonsten gefällt mir die Darstellung der Verknüpfungspunkte an den Bauteilen sehr gut.
VIEL besser mit den Leitungen jetzt, als mit den Bitmaps.
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.2.1 - Schaltplansoftware

Beitrag von compmgmt »

siro hat geschrieben:Ein sehr merkwürdiges Phänomen:

Wenn ich die Zip Datei entpacke und die .exe starte erscheinen meine Symbole auch ALLE richtig.

Wenn ich das Projekt selbst compiliere, was problemlos läuft, und dann die .exe starte, egal ob aus der IDE oder direkt aus dem Windows Explorer,
dann gehen die Symbole nicht mehr. Also passiert das erst durch die Neucompilierung warum auch immer.... :shock:
Das ist wirklich extrem merkwürdig :shock:
Ich habs grade auch mal als 64-Bit-Version kompiliert (was du glaube ich auch machst), aber es hat auch einwandfrei funktioniert.

Code: Alles auswählen

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

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

Re: LazPlan v0.0.2.0 - Schaltplansoftware

Beitrag von Mathias »

compmgmt hat geschrieben:
Mathias hat geschrieben:Die aktuelle Version lässt sich nicht mehr kompilieren.

Code: Alles auswählen

Projekt kompilieren, Modus: Release, Ziel: /home/tux/Schreibtisch/Schaltplan/source/bin/LazPlan: Exit code 256, Fehler: 1
errors.pas(8,20) Fatal: Circular unit reference between errors and sysutils


Ist dies nur bei mir so ?
Scheint ein Problem unter Linux zu sein. Ich hab "uses sysutils" in "error.pas" in den implementation-Teil gerückt. Jetzt sollte es funktionieren.

Ich habe die Ursache gefunden, eine Unit "errors" gibt es im Basis-Paket von Lazarus schon.

Ein Ausschnitt aus der Unit "sysutils"

Code: Alles auswählen

uses
{$IFDEF LINUX}linux,{$ENDIF}
{$IFDEF FreeBSD}freebsd,{$ENDIF}
  Unix,errors,sysconst,Unixtype;   

Am besten gibst du deiner Unit einen anderen Namen und das Problem ist weg. Der Vorschlag von dir würde auch Funktionieren, aber dies könnte zu Problemen führen.

Also bei mir unter Win10 und Win7 geht alles, scheint evtl. an Wine zu liegen.

Es funktioniert wohl, aber ich denke das doch etwas kleines unsauber ist. Ausser Wine hat einen Bug.

PS: Ich habe es noch mit WinXP und Win10 in der VB getestet, auch dort gibt es bei mir Probleme.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

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.2.0 - Schaltplansoftware

Beitrag von compmgmt »

Mathias hat geschrieben:
compmgmt hat geschrieben:
Mathias hat geschrieben:Die aktuelle Version lässt sich nicht mehr kompilieren.

Code: Alles auswählen

Projekt kompilieren, Modus: Release, Ziel: /home/tux/Schreibtisch/Schaltplan/source/bin/LazPlan: Exit code 256, Fehler: 1
errors.pas(8,20) Fatal: Circular unit reference between errors and sysutils


Ist dies nur bei mir so ?
Scheint ein Problem unter Linux zu sein. Ich hab "uses sysutils" in "error.pas" in den implementation-Teil gerückt. Jetzt sollte es funktionieren.

Ich habe die Ursache gefunden, eine Unit "errors" gibt es im Basis-Paket von Lazarus schon.

Ein Ausschnitt aus der Unit "sysutils"

Code: Alles auswählen

uses
{$IFDEF LINUX}linux,{$ENDIF}
{$IFDEF FreeBSD}freebsd,{$ENDIF}
  Unix,errors,sysconst,Unixtype;   

Am besten gibst du deiner Unit einen anderen Namen und das Problem ist weg. Der Vorschlag von dir würde auch Funktionieren, aber dies könnte zu Problemen führen.
So was hab ich heute Mittag auch schon vermutet gehabt. Ich wusste nicht, dass es die schon gibt, weil es unter Windows keine Probleme gab. Ist jetzt geändert (Version 0.0.2.2).

Mathias hat geschrieben:
Also bei mir unter Win10 und Win7 geht alles, scheint evtl. an Wine zu liegen.

Es funktioniert wohl, aber ich denke das doch etwas kleines unsauber ist. Ausser Wine hat einen Bug.

PS: Ich habe es noch mit WinXP und Win10 in der VB getestet, auch dort gibt es bei mir Probleme.
Ich hab es jetzt unter Win XP, 7 und 10 getestet und alles hat perfekt funktioniert. Was genau ist denn der Fehler? Kommen irgendwelche Fehlermeldungen? Kannst du evtl ein paar Screenshots senden? Mein Problem ist eben, dass ich den Fehler nicht reproduzieren kann :|

Code: Alles auswählen

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

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

Re: LazPlan v0.0.2.2 - Schaltplansoftware

Beitrag von Mathias »

So was hab ich heute Mittag auch schon vermutet gehabt. Ich wusste nicht, dass es die schon gibt, weil es unter Windows keine Probleme gab.

Unter Windows gibt es diese Unit nicht.

Was genau ist denn der Fehler? Kommen irgendwelche Fehlermeldungen? Kannst du evtl ein paar Screenshots senden? Mein Problem ist eben, dass ich den Fehler nicht reproduzieren kann
Bei starten kommt es richtig wie im zweiten Bild.
Wähle ich anschliessend in der ComboBox nochmals Transformator, kommt es wie im ersten Bild.
Das selbe, wen ich eine andere Bauteilgruppe wähle.

Klicke ich dann auf "Schatsymbol erstellen", erscheint im Panel rechts aber das Symbol.
Dateianhänge
Bildschirmfoto vom 2017-07-28 20-29-01.png
Bildschirmfoto vom 2017-07-28 20-29-01.png (9.16 KiB) 2884 mal betrachtet
Bildschirmfoto vom 2017-07-28 20-28-50.png
Bildschirmfoto vom 2017-07-28 20-28-50.png (3.36 KiB) 2884 mal betrachtet
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten