DannyBee 4 days ago

Yes, this is all true, but the comment I responded to wanted to be able to basically code rather than GUI sometimes , but still have the GUI up to date. Because of how onshape was built it makes this very very easy. Solidworks very much does not. Fusion360 also has good enough python bindings but it's still nowhere near as easy or integrated to do this (or debug it) as onshape.

So I'm kinda not sure what you are going for here. The fact that they are all the same kernels under the cover is sort of irrelevant. It's not that thin a layer and the layer matters a lot since it is what you get to use. It's like saying all of userspace is just syscalls. That's not what users see or interact with, the layer they interact with matters a lot to them.

  • WillAdams 3 days ago

    For folks who are curious about this, see:

    https://cad.onshape.com/FsDoc/

    My surmise is that this is tightly coupled with Parasolid, so it wouldn't be feasible to create an implementation of this language using some other CAD kernel?

    • DannyBee 2 days ago

      You could port it, but i don't think the geometry kernel is the hard part.

      The code for the standard library is here: https://cad.onshape.com/documents/12312312345abcabcabcdeff/w...

      (Click tab manager in the bottom left and you'll get a nicer list of the files involved)

      The actual representation is essentially dictionaries. IE transform is a functon that looks like this:

        /**
         * Construct a [Transform] using the matrix argument for rotation
         * and scaling and the vector argument for translation.
         */
        export function transform(linear is Matrix, translation is Vector) returns   Transform
        precondition
        {
            matrixSize(linear) == [3, 3];
            is3dLengthVector(translation);
        }
        {
            return { "linear" : linear, "translation" : translation } as Transform;
        }
      
      
      
      Fillets, for example, are a whole bunch of featurescript UI around fillet operations:

      https://cad.onshape.com/documents/12312312345abcabcabcdeff/w...

      (The underlying fillet ops are opFullRoundFillet, etc. All of this is UI to generate the parameters and highlight the results and such)

      The actual geometry ops are in geomOperations. Those are the geometry primitives you'd have to duplicate, and they are fairly standard. Fillets, holes, CSG, etc.

      It would not be a ton of work (IMHO) to have a geometry kernel that supports what they support.

      The UI related primitives, the query engine, etc, those are i think where you'd have real work to do.

squeedles 4 days ago

And both of them were written by Ian Braid, Alan Grayer, and Charles Lang (and others) in Cambridge.

Parasolid was v1 and old school C, then they got the C++ bug like many of us at the time and did ACIS as v2.