Hi,
ich möchte für mein Projekt ein Schaltplaneingabetool entwickeln.
Also, ich ziehe Symbole mit Namen, Designator, und Pins aus einer Lib in
eine Zeichenfläche (einstellbar DIN A3 / A4).
Die Pins möchte ich frei miteinander verbinden können.
Verbindungen mit Verbindern müssen natürlich auch möglich sein.
Ein richtiges Schaltplantool halt.
Schön währe, wenn sich neue Symbole einfach als XML-Datei definieren
ließen.
Das ganze soll einem von mir ohne Ahnung dreckig zusammengefrickeltes
Arbeitserleichterungs-Script-Tool eine Benutzerfreundliche Eingabe
verpassen.
Soll also kein richtiges CAD-Tool werden und alles recht simpel bleiben.
Sowas ähnliches wie Simulink würde mir schon reichen.
Entwicklungsumgebung ist Visual Studio 2010.
Welche Toolkits, Frameworks, Ressourcen sollte ich mir mal reinziehen?
Danke.
Viel brauchst du nicht: C# + .NET + WPF.
Damit solltest du ein schönes, Vektorbasiertes UI hinbekommen. Ich
schreibe häufiger mal solche Tools, und komme damit eigentlich immer
recht schnell zum Ziel.
Viel Erfolg!
Hi,
warum probierst Du es nicht erstmal mit einer eigenen Blibliothek in Dia
(http://de.wikipedia.org/wiki/Dia_(Software)) oder yED
(http://de.wikipedia.org/wiki/YEd).
Microsoft Jünger würden vielleicht MS Visio nehmen. Ich denke aber es
könnte einen Blick Wert sein sich Dia oder yED anzusehen und zu prüfen
ob es nicht damit machbar ist.
Im Endeffekt steckt da auch nur XML dahinter.
Erwin
@Sharping:
> Viel brauchst du nicht: C# + .NET + WPF.> Damit solltest du ein schönes, Vektorbasiertes UI hinbekommen. Ich> schreibe häufiger mal solche Tools, und komme damit eigentlich immer> recht schnell zum Ziel.
Rein interessehalber: Vektorbasiert ohne Lib dahinter? Quasi reine
Basics, oder?
Kannst du einen Screenshot zur Verfügung stellen? Ich kann's mir anhand
deiner Beschreibung allein nicht vorstellen.
Ralf
> Jop, reine Basics. Anbei ein Screenshot (bei dem Projekt ging es um> interaktive Schaltpläne).
Cool. Aber deine reinen Basics scheinen sich von meinem zu unterscheiden
:)
Oder was würde beispielsweise passieren wenn du ein Bauteil oder eine
Verbindung verschiebst? Wandern angeschlossene Leitungen bzw. die
Verbindungspunkte mit?
Ralf
Ralf schrieb:> Oder was würde beispielsweise passieren wenn du ein Bauteil oder eine> Verbindung verschiebst? Wandern angeschlossene Leitungen bzw. die> Verbindungspunkte mit?
Das kommt natürlich darauf an, wie du es implementierst ;-)
Aber eigentlich ist das ja ganz leicht zu machen:
- Das Letungsobjekt merkt sich zwei Referenzen auf die Pins, an denen
es angeschlossen ist.
- Sobald du ein Bauteil verschiebst, werden alle Objekte neu
gezeichnet.
- Beim Zeichnen der Leitung werden der Anfangs und der Endpunkt dann
eben von den beiden Pin-Referenzen abgefragt.
Somit passt sich die Leitung immer an die verschobenen Objekte an.
@Benjamin:
Ich habe mir bereits die hier bestellt:
http://www.amazon.de/Professionell-entwickeln-mit-Visual-2010/dp/3836214741/http://www.amazon.de/Visual-2012-umfassende-Handbuch-Computing/dp/3836219972/
Mir geht es auch weniger darum das jetzt alles direkt selbst umsetzten
zu können.
Erstmal will ich mir einen Überblick über die Technologien verschaffen
um einschätzen zu können was mit welchem Aufwand und wie alles möglich
ist.
Sharping:
Danke für die aufmunternden Worte, hört sich ja recht vielversprechend
an.
Gibt es spezielle Ressourcen, die du empfehlen kannst?
Z.B. Entsprechende Demos im Netz?
Erwin:
Externe Programme kommen wegen der Datenkonsistenz nicht in Frage.
Der Kern meiner Anwendung ist auch nicht der Schaltplan, der ist nur
Mittel zum Zweck.
Das wichtigste wäre wohl, dass du die Grundlagen sicher beherrschst.
Einerseits natürlich die Sprache (C#), vor allem aber auch die
OOP-Konzepte.
Denn so ein Projekt steht und fällt mit einer guten Architektur, die
übersichtlich, wartbar und leicht erweiterbar ist.
Wenn du das hinbekommst sind die technischen Dinge (wie zeichne ich
Objekte? Wie lese ich XML-Files? Wie verarbeite ich die Nutzereingaben?
Wie gestalte ich die GUI rund um meine Zeichenfläche?) nur noch
Nebensache.
Fang am besten mal mit einer einfachen Anwendung an: eine Ribbon-Bar mit
ein paar Formen zur Auswahl (Dreieck, Kreis und Quadrat). Dann eine
Zeichenfläche, auf die du diese Objekte ziehen kannst. Anschließend
sorgst du darür, dass man die Objekte auswählen und verschieben kann.
Wenn du das geschafft hast, hast du vermutlich das nötige Wissen
beisammen. Dann lehnst du dich zurück, und überlegst ganz in Ruhe wie du
deine Schaltplan-Anwendung aufbauen willst (wie gesagt, eine gute
Architektur ist das Wichtigste).
@Sharping:
> Das kommt natürlich darauf an, wie du es implementierst ;-)> ...> Somit passt sich die Leitung immer an die verschobenen Objekte an.
Stimmt, das wäre ein Weg. Kennst du zufällig eine Lib, die gerade die
vektorbasierte Implementierung von Objekten (Kreise, etc.) übernimmt?
Schnittpunkt ermitteln, skalieren, verknüpfen, etc.
Dein Bild sah im ersten Moment so aus, als ob du solch eine Lib als
Basis verwendest :)
Ralf
Also zum Zeichnen braucht's nicht viel. Da reichen schon die
Windows-Libs, wie z.B. GDI/GDI+, WPF oder Direct2D.
Wenn du jetzt Berechnungen (wie Schnittpunkte) durchführen willst,
brauchst du dann noch was Zusätzliches. Allerdings kann ich da keine
Empfehlung geben (habe ich bis jetzt nie benötigt).
Es wird wohl darauf hinauslaufen, dass jemand anderes den Code schreibt.
Ich werde dann spezifizieren, die Technologien vorgeben und
Architekturarbeit machen.
> eine gute Architektur ist das Wichtigste
Dem stimme ich 100%ig zu.
Deswegen will ich auch versuchen mich soweit einzuarbeiten, dass ich es
prinzipiell (in 100-facher Zeit) auch selbst machen könnte.
Ich hätte eigentlich gedacht, dass man bei solch einem Vorhaben auf ein
Framework wie Nevron aufsetzen sollte.
http://www.nevron.com/
Würde das nicht viel Entwicklungszeit und Komplexität aus meinem Code
nehmen?
> Aber eigentlich ist das ja ganz leicht zu machen:> - Das Letungsobjekt merkt sich zwei Referenzen auf die Pins, an denen> es angeschlossen ist.> - Sobald du ein Bauteil verschiebst, werden alle Objekte neu> gezeichnet.> - Beim Zeichnen der Leitung werden der Anfangs und der Endpunkt dann> eben von den beiden Pin-Referenzen abgefragt.
Deswegen sind also DotNET Applikationen immer so schreiend langsam.
> Es wird wohl darauf hinauslaufen, dass jemand anderes den Code schreibt.> Ich werde dann spezifizieren, die Technologien vorgeben und> Architekturarbeit machen.
Arbeitssklaven sind immer gut.
Du darfst sicher sein: Wer den Code schreibt, weiß viel besser als du,
welche Technologien und Architektur am Besten ist.
MaWin schrieb:> Deswegen sind also DotNET Applikationen immer so schreiend langsam.
... (alles klar)
Was für ein unqualifizierter Trolllversuch. Da müssen wir jetzt nicht
weiter drauf eingehen, oder?
@Marc:
So ein Framework wird dann interessant, wenn du z.B. Docking betreiben
willst. Ansonsten kann man ganz gut drauf verzichten, da bietet dir MS
von Haus aus eigentlich alle Controls, die man so braucht.
Hallo Marc,
die Library von Nevron sieht vielversprechend aus. Kostet auch nur 600$.
Nur musst du schauen ob sie das liefert, was du brauchst. Ich denke du
willst mehr, als ein schönes Bild haben?
Kannst du nicht dein eigentliches Problem kurz beschreiben? Es ist mir
in den letzten Postings zu oft die Aussage 'alles kein Problem...'
aufgetaucht. Ich denke vom Arbeitsaufwand steckt da schon eine Menge
Arbeit drin, gerade für einen Anfänger.
MfG Sven
@MaWin
Bitte lass deine Polemik in meinem Thread sein, bisher fand ich es sehr
angenehm und konstruktiv hier.
.NET ist nicht langsam.
Programmierer sind keine "Arbeitssklaven". Es ist einfach ein Job.
Ich hoffe doch sehr, dass ein erfahrener Programmierer den wir mit
diesem Projekt betrauen werden sich viel besser mit Softwaretechnologien
und Architektur auskennt als ich.
Und du darfst sicher sein, dass ich dieses Know-How auch nutzen werde.
Nichtsdestotrotz werde ich die Entscheidungen treffen.
Nevron taugt nicht für Schaltplan.
Es gibt auch noch GoDiagram und yFiles.
Alles das selbe. Gut für Diagramme und Signal Flows, wird sich aber in
einem Schaltplanprogramm immer fremd anfühlen, während dir die meisten
Features nichts nutzen werden.
Wenn du ein richtiges Schaltplanfeeling a la Orcad haben willst, dann
musst du es schon selbst machen.
Ist aber auch nicht wirklich schwierig.
Einen Einstieg kannst du dir evtl. hier abgucken:
http://www.codeproject.com/Articles/24681/WPF-Diagram-Designer-Part-4http://www.kolls.net/gatesim/
Viel Spaß.
Danke, Helmut. Nach genau solchen Code-Beispielen habe ich gesucht!
Mittlerweile glaube ich, dass wird deutlich einfacher als erwartet.
@Sven:
> Kannst du nicht dein eigentliches Problem kurz beschreiben?
Was musst du denn noch wissen?
Ich denke im Eröffnungspost steht schon alles.
Natürlich will ich auch per Doppelklick auf ein Symbol noch
Einstellungen vornehmen können, etc.
Am Ende läuft alles darauf hinaus die mit dem Schaltplan eingegebenen
Relationen an das Backend zur Weiterverarbeitung zu übergeben.