Hacker News new | ask | show | jobs
by theuttick 3694 days ago
I understand your concerns and they are legitimate. Full fledged browser based CAD systems already exist in things like Onshape. Our algorithms will run partially on the server and mostly in the browser. However, CADWOLF isn't really about CAD in the browser but rather altering the way engineering is done. Instead of doing design, CAD, FE, and documentation separately, everything is done together. This drastically alters the engineering workflow. It will also let us create templates for structures like fittings and trusses so that users can pull them into their own structures without the need to do their own design and analysis. We can do for engineering what GitHub has done for coding and make a warehouse of templated structures available to anyone.
1 comments

with all due respect - I understand what you are claiming. I am having doubts on how you are claiming you will do it.

Unless you have a demo already - which would be awesome.

The github analogy is not very accurate because github was built on git and ruby-git bindings. Its a product play that was clearly understood. What I'm not able to understand is how you are planning to execute your product.

Please understand why I'm asking this - if you are claiming to integrate with an existing CAD server software ... then that is something that I would completely understand and go for. But I dont know if such a thing (with API bindings exists). We can also debate about how you will version these things - since AFAIK these kind of software dumps into a barely readable binary format.

The alternative is that you would invent your own a) CAD software b) javascript UI c) snapshot format. That makes me a bit uncomfortable... unless you already have atleast one of these three.

The question really is - how far along are you ? its a standard YC question.

EDIT: btw your demo looks very very similar to a Jupyter notebook. If that's the case, then the innovation you are making is actually a CAD software on top of Jupyter (which like git and github is a well known analogy). That would seriously simplify this conversation a LOT.

One possibility would be to use http://www.openscad.org/ as some sort of intermediate language.

edit: And there are apparently a few standardized, lower-level ASCII formats including https://en.wikipedia.org/wiki/AutoCAD_DXF and https://en.wikipedia.org/wiki/STL_(file_format).

Of course OP probably still has their work cut out for them as far as building something useful on top of these goes.

thanks for that useful input. That is exactly what my question is. If there is clarity around these aspects, what the founder would become undoubtedly awesome.
I understand what you are saying. There is already a web based CAD system called onShape that I will likely use in my initial phase as the CAD system. They have APIs but I haven't delved too deeply into it. I will be writing most of the software myself and a great deal of it is already done.

If you want to get more into the details of how I make it work, it's mostly in how I store and process the data. Instead of storing files on a server and then calling them down, I store each equation/text block/plot/table/etc as a separate entry in a database. When the user loads a web page I pull down and order all of the items in that document.

This is what lets me connect all of the pieces. A user can pull in one equation from another document into any other document and use it as a variable. When the original variable is changed, I can parse through the database and find files/equations that use that equation and update them accordingly.

The MVP for the documents and for the part tree is already done and there are videos on the website.

I often hear people compare CADWOLF to Jupyter notebook. They are somewhat alike but vastly different in execution. Jupyter lets user create a web page using a programming language. This requires knowledge of programming as well as several other things like installing the software on a server. In CADWOLF, users simply interact with a gui to create a new document and add equations, text, etc. There is no "programming" and all you need to know are the commands for the built in function (sin,cos,FFT, etc).

Just one question - and that's the part that you are skipping over.

Are you building your own symbolic solver ? If you are "pulling" equations ... Are you also solving them or are you displaying equations?

I'm getting the feeling that you have built a document and reference management system for CAD users (kind of like latex) rather than a CAD software that solves the equations, right?

No, I have built a system that solves the equations and then displays them in the mathematically correct format. (Yes, it took forever)

Each equation can be thought of as a line of code. Each web page is both a document like Word and a program. The user adds an equation to the document via a gui and then double clicks on it to edit it. You can enter something like a=1+sin(0.5)/1 and then hit enter. My code parses this text out, finds the "sin" function, solves it, then solves the remaining equation, and then displays it as you would expect to see it on a formal document and gives that equation the name "a". Users can then reference the result of this using the name "a" in a later equation. When an equation changes, its dependents update as well.

I have a number of built in functions. There is everything from an FFT to a differential equation solver to an integral. It also tracks units like "mm" and "in" and does all the necessary math for this.

The code to do this in javascript was as painful and fun as it sounds. With the fellowship time/money I will build a python server side to solve large datasets and start the process of placing a CAD layer on top of it.

This is what you should have written in your application. Rather than the rather hazy statement that you made. You have my vote.

P.S. you should do both sides in JavaScript.

But Node.js would only allow me to run one thing at a time. I want to be able to run equations on the server while updating things on the DOM/Server as well. Am I wrong about that?