Hacker News new | ask | show | jobs
by theuttick 3703 days ago
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).

1 comments

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?