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


Log in to reply