Wie schwer ist es eine CAD Anwendung zu entwickeln?



  • Ich habe also nicht vor die Arbeit eines 50 Mann starken Entwicklerteams nachzuahmen, sondern durch moderne und kreative Ansätze schneller zum Ziel zu kommen.

    das versuchen doch alle 🙂



  • CADUser123 schrieb:

    Ich denke da eher an ein solides CAD Programm das sauber aufgebaut ist und Grundfunktionalitäten beinhaltet.

    Wer soll das kaufen?

    Planst du es kommerziell zu vertreiben und davon zu leben oder ist es für dich ein reines Spaßprojekt bzw. Vorzeigeprojekt für die nächste Bewerbung?

    Falls ersteres zutreffen sollte, bedenke, es gibt schon dutzende CAD Programme für kleines Geld jenseits von den Großen wie AutoCAD und Co.
    Erstere haben auch nur ein kleines Entwicklerteam, aber sie haben mindestens 20 Jahre Vorsprung und entspreched Umfangreich sind diese kleinen CAD Programme für kleines Geld schon. Dazu noch FreeCAD, das völlig kostenlos ist.

    Wer soll dein CAD Programm also kaufen?
    Kannst du davon leben, wenn du es für 20 € pro Lizenz verkaufst?
    Kannst du basierend auf so einem Finanzierungsmodell die Firma mindestens 15 Jahre halten, so dass du bezüglich der Features aufholen kannst und später dein Produkt teurer für z.B. 400 € verkaufen kannst und dann nach weiteren 10 Jahren Entwicklung dann vielleicht mal für > 1500 €?

    Ich sag es daher mal so.
    Von du vom Start an ein neues Projekt stemmen willst, dann ist es sinnvoller ein großes Kapital hinter dir zu haben.
    Damit kannst du 20-50 Entwickler die ersten 2 Jahre bezahlen und im 2. Jahr ist dann deine Software halbwegs ordentlich um die Lizenzen zu Preisen, die eine Firma finanziell tragen können, zu verkaufen.

    Falls du es aber als reines Spaßprojekt machst, dann wäre es sinnvoller, wenn du einfach bei FreeCAD einsteigst.



  • CADUser123 schrieb:

    Ich denke da eher an ein solides CAD Programm das sauber aufgebaut ist und Grundfunktionalitäten beinhaltet. Das ist Herausforderung genug. Ich denke man kann viel dabei lernen.

    Ja. Als Hobby Projekt finde ich das auf jeden Fall sehr interessant und würds dir auch empfehlen. Und ich würde nicht unbedingt dazu raten, bei Free Cad einzusteigen. Da ist schon zu viel da, es ist nicht unbedingt gut aufgebaut (zumindest gefällts mir nicht), und du kannst da nicht mehr viel ändern/beitragen. Also, wenn du was lernen und Spass haben willst, würd ich dir eher empfehlen, was eigenes anzufangen.

    Ob Python eine gute Idee ist, weiß ich nicht. Das ist einer der Gründe, warum mir FreeCad nicht gefällt. Ich halte das für nicht wartbar. Ich würd nie ein größeres Projekt mit so einer Sprache anfangen. Und alles scriptbar zu machen und zu mischen, wie bei FreeCad, ist viel mehr Aufwand und auch nicht top-wartbar.



  • @Mechanics

    Und ich würde nicht unbedingt dazu raten, bei Free Cad einzusteigen. Da ist schon zu viel da, es ist nicht unbedingt gut aufgebaut (zumindest gefällts mir nicht), und du kannst da nicht mehr viel ändern/beitragen.

    Ich verfolge die Entwicklung von FreeCAD ein wenig mit. Aber mehr aus der Seite des Anwenders. Ich tue mich generell schwer damit mich in solche ausgewachsenen Projekte einzuarbeiten.

    Ob Python eine gute Idee ist, weiß ich nicht. Das ist einer der Gründe, warum mir FreeCad nicht gefällt. Ich halte das für nicht wartbar. Ich würd nie ein größeres Projekt mit so einer Sprache anfangen. Und alles scriptbar zu machen und zu mischen, wie bei FreeCad, ist viel mehr Aufwand und auch nicht top-wartbar.

    Kannst du das etwas näher erläutern? Die Einbindung einer Scriptsprache in großen
    Programmen ist eigentlich eine produktive Idee. Funktionen lassen sich mit einer Scriptsprache mit weniger Code realisieren. Alles wild zu mischen ist sicher keine gute Idee. Aber wenn man ein in C++ entwickelten Geometriekern hat, was spricht dagegen sämtliche Funktionalität für die Modellierung von Objekten mit einer Scriptsprache zu realisieren?

    Bei Open Cascade ist es ja sogar so dass es eine Bibliothek für die Nutzung von Python gibt. Ich muss diese Anbindung also nicht erst selbst entwickeln.
    http://www.pythonocc.org/

    In FreeCAD nutzen sie glaube ich nicht die pythonocc Bibiliothek sondern einen selbst geschrieben Wrapper der nur einen Bruchteil der Funktionen von Open Cascade ansprechen kann.

    @computertrolls

    Planst du es kommerziell zu vertreiben und davon zu leben oder ist es für dich ein reines Spaßprojekt bzw. Vorzeigeprojekt für die nächste Bewerbung?

    Ein persönliches Forschungsprojekt 🙂

    Erstere haben auch nur ein kleines Entwicklerteam, aber sie haben mindestens 20 Jahre Vorsprung und entspreched Umfangreich sind diese kleinen CAD Programme für kleines Geld schon. Dazu noch FreeCAD, das völlig kostenlos ist.

    Ich finde man sollte sich von solchen Betrachtungen nicht abschrecken lassen. 20 Jahre Entwicklung klingt heftig. Aber betrachte es doch mal genauer. Wurde denn 20 Jahre lang massiv neuer Code generiert? Oder hat man alle Fehlentscheidungen im Design umgebaut oder hat man weil es funktioniert und sich gut verkauft weiter darauf aufebaut? Wurde der Code jeden Tag größer oder ist mit der Zeit durch Veränderungen auch viel Code verschwunden?

    20 Jahre Entwicklung kann vieles bedeuten. Ich glaube nicht dass man bei einer Neuentwicklung genau so lange braucht.
    Das ist so als würde man sagen, der Westen hat in 100 Jahren den Zustand x erreicht und jetzt müssen die Chinesen und Japaner genau so lange denken und entwickeln bis sie den selben Zustand erreichen.
    Die Realität sieht anders aus. Neuentwicklungen profitieren von bereits vorhandener Erfahrung, Wissen und neuen Methoden der Gegenwart.

    C++ ist moderner und mächtiger als vor 20 Jahren. Es gibt mehr und bessere Bibliotheken und Werkzeuge für die Entwicklung von Software. Die Literatur bietet mehr Wissen und Erfahrung als vor 20 Jahren usw. usf.



  • CADUser123 schrieb:

    Kannst du das etwas näher erläutern? Die Einbindung einer Scriptsprache in großen
    Programmen ist eigentlich eine produktive Idee. Funktionen lassen sich mit einer Scriptsprache mit weniger Code realisieren.

    Das ist schon richtig. Aber bei Free Cad ist die Scriptsprache nicht einfach nur eingebunden, sondern viele grundlegende interne Module sind in Python geschrieben, was ich für völlig unnötig halte. Da werden erstmal irgendwelche internen Datenstrukturen usw. definiert, dann gibts Python Wrapper dafür, und dann werden sie erst in Python zu etwas sinnvollem verbunden. Mir gefällt das einfach nicht. Ich halte das zwar immer noch für wartbarer, als alles in Python zu schreiben, aber ich hätt halt den kompletten "Kern" (also alles, GUI, Workflows usw.) in C++ geschrieben. So versteht man nicht alles, wenn man sich den Python Code anschaut, versteht aber auch nicht alles, wenn man sich den C++ Code anschaut, weil da hauptsächlich lose Bausteine sind. Und einer der Gründe, warum ich mir das angeschaut habe war, dass ich mich nach einem Projekt umgeschaut habe, bei dem ich privat mitmachen könnte. Und ich wollte C++ programmieren und nicht Python.

    CADUser123 schrieb:

    Aber wenn man ein in C++ entwickelten Geometriekern hat, was spricht dagegen sämtliche Funktionalität für die Modellierung von Objekten mit einer Scriptsprache zu realisieren?

    Weil du den Rest massiv unterschätzt. Wir haben in der Arbeit auch einen eigenen Geometriekern (wir schreiben kein CAD System, einige unserer Tools gehen aber so ein bisschen in die Richtung). Wir haben insgesamt 6 Mio Zeilen Code und der Geometriekern (natürlich nicht so umfangreich wie Open Cascade) ist ein winziger Bruchteil davon. Zwar recht komplex, aber auch keine Hexenkunst, wir haben auch komplexere Teile.
    Allein ein sinnvolles Datenmodell für ein CAD zu modellieren ist sehr schwierig (wie gesagt, z.B. Sketches, Abhängigkeiten, Redo/Undo, Baugruppen, Regeln, Constraints usw.). Wenn das mal ausgereift ist, kommt vermutlich eine komplexe, riesige Klassenhierarchie raus. Und das in einer Scriptsprache im Griff behalten zu wollen, ist völlig kontraproduktiv. Grad das würde ich auf jeden Fall in C++ schreiben. Und mal davon abgesehen wirst du auch abgesehen vom Geometriekern viele Teile haben, die performant sein sollten, und z.B. Python ist eine der langsamsten Sprachen überhaupt.

    CADUser123 schrieb:

    Ich finde man sollte sich von solchen Betrachtungen nicht abschrecken lassen. 20 Jahre Entwicklung klingt heftig. Aber betrachte es doch mal genauer.

    Auch das unterschätzt du massiv. Die kleinen CAD Hersteller haben sicher auch nicht weniger als 20 Entwickler, außerdem Tester, Support usw. Wir haben so 20-30 Entwickler (in unserer Abteilung, nicht insgesamt), wir entwickeln die Software seit über 20 Jahren, und wir versuchen mit den Großen mitzuhalten, die hunderte oder tausende Entwickler haben. Und wir haben auch Tester, Support, Consulting usw... Das ist nochmal eine andere Größenordnung, als sowas allein aufziehen zu wollen.
    Es ist heutzutage tatsächlich viel einfacher, Software zu entwickeln, als früher. Allerdings ist auch die Erwartungshaltung an die Sofware eine ganz andere. Wenn dein Programm aussieht wie AutoCad vor 20 Jahren, wird es keiner haben wollen.
    Und wenn du drüber nachdenkst, mit irgendjemandem mithalten zu wollen, der schon länger aus dem Markt ist, musst du bedenken, wie viele kleine und große Probleme die schon gelöst haben, über die du erst stolpern wirst. Wenn du hunderte Kunden hast, wirst du sehr viele Probleme untersuchen und fixen müssen, die du selber nie festgestellt hättest. Den meisten Aufwand macht bei uns nicht die Größe der Software aus, sondern das untersuchen irgendwelcher Probleme, für die wir oft nichts können. z.B. verbuggter Netzwerkcode in der Qt, der überhaupt nicht zu unserer Kernfunktionalität gehört, und der dann bei irgendwelchen Kunden mit seltsamen Proxykonfigurationen nicht funktioniert. Oder irgendwelche verbuggten Grafiktreiber, die ganz selten zu Crashes führen, die wir ewig untersuchen und für die wir dann bei uns irgendwelche Workarounds einbauen.
    Also, selbst wenn du irgendwas hinbekommen solltest, was halbwegs nach einem modernen Programm aussiehst, und das bei dir halbwegs funktioniert, wird es bei den meisten deiner potentieller Kunden nicht funktionieren, und du wirst 10 Mann im Support und 20 Entwickler brauchen 😉

    Aber nochmal, ich wills dir nicht ausreden, ich halte das auf jeden Fall für ein interessantes Hobbyprojekt 😉



  • CADUser123 schrieb:

    Die Realität sieht anders aus. Neuentwicklungen profitieren von bereits vorhandener Erfahrung, Wissen und neuen Methoden der Gegenwart.

    Ja, aber hast du diese Erfahrung?

    Wer das gleiche Programm noch einmal von vorne schreibt, der hat sie, aber jemand der quer einsteigt muss diese noch längst nicht haben.
    Klar, du kannst C++ >= 11 nehmen, profitierst von moderneren Tools, modernen GPU Schnittstellen und Wissen, aber damit hat du noch nicht die Erfahrung die einem sagt, wie man richtig vorgeht.



  • Ich schaue nach Literatur die mir vor und während der Entwicklung helfen könnten. Habt ihr vielleicht ein paar Empfehlungen für den Bereich CAD, Geometrie Mathematik und 3D Programmierung?

    Es gibt ein Buch von Nikolay Golovanov dem Mitgründer von ASCON die den Geometriekern C3D entwickeln.

    Geometric Modeling: The mathematics of shapes
    ISBN 978-1497473195

    Diese Bücher könnten auch hilfreich sein:

    Lehrbuch der Grafikprogrammierung: Grundlagen, Programmierung, Anwendung
    ISBN 978-3827410283

    Computergrafik für Ingenieure: Eine anwendungsorientierte Einführung
    ISBN 978-3642238420

    Computergrafik: Ein anwendungsorientiertes Lehrbuch
    ISBN 978-3446404342

    Geometrie: Anwendungsbezogene Grundlagen und Beispiele für Ingenieure
    ISBN 978-3446441439

    Design Patterns: Elements Of Reusable Object-Oriented Software
    ISBN 978-9332555402

    Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14
    ISBN 978-1491903995

    @Mechanics

    Ok ich nehme die mahnenden Worte zur Kenntnis und werde schauen wie ich damit umgehe sobald ich damit konfrontiert bin. Ich rechne damit dass ich bei einer überlegten Vorgehensweise nicht sehr viel damit zu kämpfen haben werde.
    Ich will ehrlich gesagt auch keine alte Hardware oder Betriebssysteme unterstützen. Schon gar nicht veraltete Grafiktreiber.
    Ich wähle ein modernes Hardware und Software Umfeld und darin will ich entwickeln und das Programm testen. Später kann ich die Systemvoraussetzungen angeben. Wer sie nicht erfüllt soll nicht meckern.
    Auch will ich gar nicht das es in 100% der Anwendungsfälle funktioniert. Mit 99% wäre ich auch zufrieden.
    Aber lasst mich erstmal den Anfang finden, bevor es ums Vermarkung und Support geht 😃



  • Was ist überhaupt dein Erfahrungs-/Kenntnisstand?



  • Hi,
    wie sieht es aus? Konntest du schon eine CAD Software entwickeln?

    Ich bin Architekt und denke oft darüber nach wie meine persönliche Software wohl aussehen könnte, ich habe dazu einige Ideen für den Fall das du noch nach CAD Visionen suchst.


  • Mod

    Eine ohnehin trollige Frage, von einem Nutzer, der schon seit 4 Jahren nichts mehr schrieb, hat keine Aussicht auf sinnvolle Fortsetzung


Anmelden zum Antworten