Laden...

CAD-Programm zur Schaltplanerstellung (Anfängerprojekt)

Erstellt von stes vor 13 Jahren Letzter Beitrag vor 13 Jahren 5.674 Views
stes Themenstarter:in
64 Beiträge seit 2010
vor 13 Jahren
CAD-Programm zur Schaltplanerstellung (Anfängerprojekt)

Hallo zusammen,

ich habe ein kleines CAD-Programm zur Erstellung von Schaltplänen geschrieben. Da es das erste Release ist, sind noch nicht wirklich viele Funktionen implementiert, trotzdem sollte es für kleinere Schaltpläne reichen (ich bin dabei, es weiter zu entwickeln).

Hier die Funktionen im Überblick:*Zeichnen von einfachen geometrischen Formen *Zeichnen der grundlegenden Schaltsymbole *Speichern und Laden von Dateien (Dateiformat *.cad) *Einstellungsmöglichkeiten (Raster/feste Objektgrößen) *Automatische Speicherung der Einstellungen *Drucken (allerdings noch recht primitiv 😁 )

*Objekte bewegen und löschen, Größe anpassen, (noch beschränkt) Drehen von Objekten

Allerdings ist das mein erstes "richtiges" Anwendersoftware-Projekt und, wie gesagt, noch verbesserungswürdig.
Aus diesem Grund freue ich mich natürlich über Kritik und Verbesserungsvorschläge eurerseits!

Viele Grüße
stes

[EDIT]
Ich habe nun die Version 1.2 hochgeladen. Neue Features:

  • Anzeigen eines Rasters
  • Realisierung mit Paint-Ereignis

Der Code ist auch aktualisiert (siehe unten).
Deinstalliert aber bitte zunächst die alte Version (sollte auch so funktionieren, aber sicher ist sicher 😉 )
[/EDIT]

stes Themenstarter:in
64 Beiträge seit 2010
vor 13 Jahren

Nachtrag:

Hier noch ein Screenshot des Programms:

stes Themenstarter:in
64 Beiträge seit 2010
vor 13 Jahren

Hier noch der Quellcode des Programms.

[EDIT] Quellcode von Version 1.2 [/EDIT]

A
10 Beiträge seit 2010
vor 13 Jahren

Hi...bin ganz neu hier, also erstmal Hallo^^

Gute Idee dein Programm. Was mir spontan aufgefallen ist, wären z.B. die Größenverhältnisse der Symbole, die solltest du vielleicht fest machen, dass man den Widerstand also nicht beliebig quetschen oder dehnen kann. Das erleichtert möglicherweise auch das rotieren und vor allem, dass auch die Anschlüsse am Raster ausgerichtet werden können, um gerade Verbindungen zu ermöglichen.
Dann wären sicher Schnapppunkte für die Verbindungslinien noch ganz gut.
Vielleicht noch ein Hervorheben des ausgewählten Bauteils und ein Sichtbarmachen des Rasters mit Punkten o.ä.

Das wär was, was mir einfiele.
Will nicht vermessen sein und mit meinem ersten Beitrag irgendwas kritisieren, wo ich ja auch nur Anfänger bin 😁

Gruß

stes Themenstarter:in
64 Beiträge seit 2010
vor 13 Jahren

Hallo,

danke für dein Feedback und deine Ideen, ich denke die meisten sind relativ gut umsetzbar.
Bzgl. des Rasters kann ich sagen, dass ich das durchaus probiert habe, allerdings mit dem traurigen Ergebnis, dass mein Programm vieeeel zu langsam wird.
Das mit der Bauteilhervorhebung habe ich schon teilweise implementiert, funktioniert momentan aber nur beim Bewegen (Verbesserungen in anderen Bereichen hatten Vorrang). Ich bleibe dran 🙂

Ich habe auch schon eine Nachricht mit zahlreichen weiteren Verbesserungsvorschlägen erhalten und es gibt sicher noch eine Menge zu tun, bis das Programm für den Praxisgebrauch taugt (wofür ich es als Hobbybastler u.A. auch programmiert habe, d.h. die Ansprüche an das Programm sind hoch 😁 )

Will nicht vermessen sein und mit meinem ersten Beitrag irgendwas kritisieren, wo ich ja auch nur Anfänger bin

Dazu ist (meiner Meinung nach) zu sagen: Lob motiviert, aber nur Kritik verbessert 😉

Liebe Grüße,
stes

A
10 Beiträge seit 2010
vor 13 Jahren

Das mit dem Raster und langsam. Dann wird es sicher ständig neu gezeichnet, was ganz bestimmt nicht nötig ist. Wenn du mit OnPaint arbeitest, ist es möglich und auch irgendwann nötig festzulegen, was, wann neu gezeichnet wird.

stes Themenstarter:in
64 Beiträge seit 2010
vor 13 Jahren

Du liegst genau richtig. Wenn du dir meinen Quelltext anschaust, wirst du feststellen, dass ich eben nicht mit OnPaint gearbeitet habe.
Ich bin freundlicherweise in einer Nachricht darauf hingewiesen worden und werde mein Programm entsprechend umstrukturieren 😉

Z
403 Beiträge seit 2007
vor 13 Jahren

Hallo stes,

ich habe mir das Programm mal angeschaut und muss sagen der erste Eindruck war ganz gut.

Jedoch beim näheren hinsehen hatte ich ein paar Schwierigkeiten.

  1. Linien lassen sich nicht mehr bewegen
  2. Das drehen kommt mit irgendwie zu Starr vor.
    Vielleicht eine freie Drehung einbauen 😃

Das mit OnPaint wurde bereits angemerkt.

Desweiteren hab ich ich gesehen das du beispielsweise bei Methoden Namen zwischen den Konventionen springst.

Und du benutzt die Instanz der Form in den Unterklassen.
Diese Klassen sollte und dürfen die GUI nicht kennen.

Benutze lieber Events dafür.

Du kannst dir mal mein Projekt anschauen.

Bluestone - Logical Gate Simulator

Ich gebe zu es fehlt noch ein wenig Refactoring, aber Grundsätzlich ist das Prinzip das selbe wie bei dir.

Gruß André

stes Themenstarter:in
64 Beiträge seit 2010
vor 13 Jahren

Hallo,

danke für die Rückmeldung. Ich habe gerade die Version 1.2 bereitgestellt, schau sie dir doch einfach mal an.
Zu deinen Anmerkungen:

  1. Das Linien-Problem: Das ist kein Problem, dass primär die Linien betrifft, sondern alle Objekte bis auf das Rechteck, welche man nach links oben zeichnet. Bei Linien wird das Problem dadurch verstärkt, dass man gerade Linien im Moment noch auf den Pixel genau treffen muss, um sie zu bewegen. Mit diesem Problem werde ich mich als nächstes beschäftigen 😉

  2. Die Drehung: Die jetzige Drehung ist zugegeben sehr primitiv. Aus eigener Erfahrung kann ich allerdings sagen, dass man eine freie Drehung beim Schaltplanzeichnen eigentlich nicht benötigt. Das mit der freien Drehung wird aber auch durch die Architektur der CADObjekte erschwert (werf mal einen Blick in die Klassen, z. B. bei CADResistor) 😉
    An einer richtigen Drehung um 90, 180 bzw 270 arbeite ich aber, da sie auf jeden Fall benötigt wird.

  3. Paint ist in der Version 1.2 realisiert (Eventhandler CADForm_Paint, Event paintBox.Paint)
    War auch dringend nötig, mir aber vorher ehrlich gesagt nicht bekannt. So ist es aber auf jeden Fall einfacher und leistungsfähiger.

  4. Die Form-Instanz hatte ich früher mal in den Unterklassen integriert, wurde aber schon in der Version 1.1 nicht genutzt, die Variable war irgendwie noch übriggeblieben. Habe ich in 1.2 herausgelöscht.

Schau dir mal die verbesserte Version an. Auch hier gibt es bestimmt etwas anzumerken. 😁

Viele Grüße
stes