CADmium Moves CAD To The Browser

For plenty of computer users, the operating system of choice is largely a middleman on the way to the browser, which hosts the tools that are most important. There are even entire operating systems with little more than browser support, under the assumption that everything will be done in the browser eventually. We may be one step closer to that type of utopia as well with this software tool called CADmium which runs exclusively in a browser.

As the name implies, this is a computer-aided design (CAD) package which looks to build everything one would need for designing project models in a traditional CAD program like AutoCAD or FreeCAD, but without the burden of needing to carry local files around on a specific computer. [Matt], one of the creators of this ambitious project, lays out the basic structure of a CAD program from the constraint solver, boundary representation (in this case, a modern one built in Rust), the history tracker, and various other underpinnings of a program like this. The group hopes to standardize around JSON files as well, making it easy to make changes to designs on the fly in whatever browser the user happens to have on hand.

While this project is extremely early in the design stage, it looks like they have a fairly solid framework going to get this developed. That said, they are looking for some more help getting it off the ground. If you’ve ever wanted something like this in the browser, or maybe if you’ve ever contributed to the FreeCAD project and have some experience, this might be worth taking a look at.

43 thoughts on “CADmium Moves CAD To The Browser

    1. The color scheme used is very OnShape like. But that stops here. OnShape is a VNC like CAD software based on Parasolid kernel, rendering the CAD model on a GPU remotely and sending you the result. CADmium is using your browser to generate the 3D model from their B-rep kernel and nothing is cloud base, as I understand it.

      Currently, there’s no constraint whatsoever (there’s a blog post where the author show how he intends to solve them), and you can’t move or modify anything you’ve created. The interface is very pretty but it’s missing even basic features.

      The true reality of opensource CAD software is that there isn’t any good constructive solid geometry kernel around, so you will always get limited success with any of them.

      In the short list of those who have add a minimum usage, you’ve Solvespace (and LiquidCAD for a web based version), OpenCascade (OCCT), and Manifold (OpenSCAD). There are some worth of interest too: sdfx.

      1. More interest than just this project might be Rust’s support for Web Assembly and the wgpu package.

        The same code can be compiled natively and for the browser. In an ecosystem with a package manager (cargo) and other more modern things.

  1. More FOSS CAD is very welcome. But there is only two things that I would want to see:
    * Working chambers/rounds (FreeCAD generally refuses or crashes on these)
    * Assemblies (FreeCAD is laughable at this) and ideally, you can create a new sketch inside the assembly, so you can use features of the parts to base your dimensions on.

      1. Using SolidWorks (and Inventor + SolidEdge) for work and FreeCAD for my 3D printing stuff at home.

        Assemblies really are a major PITA regardless of what workbench you use.

        BTW: SolidEdge 2022 Community Edition is free to use (Siemens says for a lifetime) when not used commercially. Not cloud based whatsoever…

        1. It’s because the semantic hierarchy (i.e. what is a “part”) in FreeCAD is total nonsense and doesn’t actually correspond to what you are trying to do with it. It confuses parts and assemblies internally, in both ways and in circles, so the workbenches don’t actually do what you’d think they’re doing.

          1. From the history of FreeCAD:

            “I also was influenced by Catia V5 ”
            – Jürgen Riegel

            CATIA is a hold-over from the 90’s way of doing CAD and it’s downright obtuse. People who have to use it professionally curse it.

    1. I feel that Freecad has too many workbenches, which makes it quite difficult to maintain (it is bigger than many commercial CADs). If development focused on having mature part (with working chambers and rounds), assembly and 2d mechanical drawing workbenches, it could gain many users. As an engineer, those are the main things I do in cad (for fea simulation, robotics simulations… there are better solutions, being many of them open source) and that last one isn’t completely mandatory as I can use qcad for that (I normally use Salome platform for my hobby projects, which is open source, even though it lacks that feature, as it behaves similarly to solidedge)

      I also think that it could benefit significantly if it had something like blender foundation. Blender open movies provide an important feedback about its usability for its developers. If freecad had a team of testers using it for engineering projects, their experience could be used for specifying a development roadmap.

      On the other hand, there aren’t many cad tools that support ifc (even commercial ones), so that workbench could attract new users, even if it isn’t one of the basic ones.

  2. So we now have the crazy named Dune 3D, which is less than 10% ready. And we have Cadmiun, which isn’t ready at all. And we have Freecad, which is a pain to use.

    What a waste of resources, power, work, time and all such stuff divided up into half ass projects.

      1. Another one… :-)

        I really like OpenSCAD. It works the way my brain is wired. Some things are really easy, like nuts and bolts. Or creating variants of parts. Or parametric stuff.

        Other things are a hellscape, for example roundings or chamfers. Yes, possible, but try to add a rounding to two intersection objects… Or connect two parts within an area of “unknown” geometrie.

        I had a look at Dune 3D. Could grow into something I like. But honestly, all the work they need to do. Like standard parts. Way to go.

        1. I occasionally use OpenSCAD to programmatically post-process FreeCAD files, I wish both platforms had more dedicated support, like the ability to put a reference point or line segment on a model in FreeCAD and read it’s location in OpenSCAD, assuming STL has some metadata extension that would allow that.

          You could do it without breaking the purely declarative FreeCAD paradigm since reading the data would happen before any geometry operations did.

          1. The file format STL is part of the problem. As far as I see, it does not have any meta-info support, so no materials, colors, textures, no named objects etc etc.

            3MF would be a step into the right direction. If you ask me… :)

    1. Don’t worry [Jan Praegert],
      in the near future someone will dump all those incomplete projects into an AI and it will combine them into a coherent, user friendly, fully functional CAD program available for everyone to use!
      B^)

    2. Forget about the frontends, there are only two (worth mentioning) b-rep open source kernels.

      I believe it is a high time we forget about brep altogether, for it is far too complex and not powerful enough, and just move to implicit (e.g., signed distance based solids).

  3. This “x in the browser” nonsense needs to die. Does anyone understand how stupid and inefficient it is? I want to use “real” software that is compiled and running directly on my processor. (Don’t get me started ranting about FreeCAD’s Python trash… at least FreeCAD comes closer…)
    It will be crowded in /dev/null before I do CAD in a web browser.

      1. “Apps” today are mostly just scripts running on some cross-platform framework. It’s broadly equivalent to running a dedicated instance of the browser engine to run your web-app locally.

    1. JS needs to die, even as a compiler target.
      Can you believe there are people running JS on their servers for decades now?
      Must still be the only language they know.

      A compiler producing webassembly, running in a browser is not insane. Still rendering in HTML, but that can be a thin HTML layer around a bitmap.

      That way people that want terrible UI can run it on their phones.
      PHBs can get it written once (as much as that has ever worked).
      Users with deadlines can get it compiled native and with decent UI/screens/keyboards.

    2. I very much like convergence. My Phone and my NexDock are all the laptop I want.

      Unfortunately, the only straight-Linux phones where I could easily install any and every desktop software package I want have incomplete support for the regular phone features and are slower hardware than state of the art “normie” phones.

      Mostly I get by with OpenVPN back to the home LAN and rdp into my desktop. That’s cool and all but things that run in a browser will just work for me. I welcome this although some sort of build environment where the same source can become a native app AND a web app sounds ideal to me.

      1. Wait.. no. Scratch that. Desktop apps running on a fully open Linux phone with full carrier support and state of the art hardware.. that’s what sounds IDEAL to me.

        A build platform that equally targets native desktop and web apps.. that’s a nicer compromise than most of what is currently available.

        So.. yah. Because corporations suck and will still suck tomorrow… I’ll eat the inefficiency and take in-browser apps with a smile.

  4. Oh no, not another one!

    Sorry, but my dayjob is dev for a 3D rendering/CAD engine, and all the horrors we have to endure because some… “smart guy” in management thinks web is a perfect fit for computationally heavy, resource hungry, massive parametric modelling makes Lovercrafts world seem like a holiday resort.

  5. The interesting thing about this isn’t really that it’s built out of hipster parts and practices, it’s that they’re trying to build their own boundary representation kernel (Truck: https://github.com/ricosjp/truck ) and constraint solver and such to support it, so it isn’t just another skin over OpenCASCADE (which is …rough and a major source of pain in said tools) and/or SolveSpace like every other FOSS 3D CAD tool that uses a boundary representation model (there are some CSG based ones but they’re different enough the CAD people don’t tend to count them – think OpenSCAD and BRL-CAD).

    Even most of the commercial products are directly derived from one of two lineages of brep kernel from Dassault Systèmes or Siemens, so it’s an undertaking.

  6. I am disapointed that they are using the Elastic License, which means no one else can offer it as a service. It’s a restriction that doesn’t feel (to me) in line with the FOSS mindset. AGPL or others would be a better choice to still call yourself FOSS.

    I really hope it turns out to be a good alternative

    1. IMHO, it’s a quite smart license. The main developer intend to make the application useful enough to generate an income for him, but he doesn’t want a greedy competitor to simply steal his work and make money from it. That license is perfect for that. You can fork and run/modify/change the code the way you want, but you’ll never be able to earn money from the software with it.

  7. I’ve been looking for a FreeCAD alternative (TNP makes it frustrating despite the creator’s best efforts), and I tried blender CAD plugin but it didn’t do the trick (it lacked the ability to reference external geometry if it was in another plane).

    I’ll give this a go. I’m not too good at mechanical design but I’m gradually getting better. I’ve gotten good enough recently that FreeCAD seems like an impediment to what I’m trying to make, if its more parametric and not a simple solid part.

    I don’t mind tools which use a web browser as an interface (visual studio code, electron etc), but I do mind “cloud” based tools. But if I can host the “cloud” myself on my local PC, that again is acceptable.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.