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.
Vermutlich wirst du alles brauchen :) http://www.amazon.de/Objektorientiertes-Programmieren-Visual-Mit-CD-ROM/dp/3866454066
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
Hi Ralf, Jop, reine Basics. Anbei ein Screenshot (bei dem Projekt ging es um interaktive Schaltpläne).
> 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-4 http://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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.