Remix.run Logo
gehsty 4 hours ago

I’d really like to see something like blender come for the 3D CAD industry, at the moment it feels like the only people who would lose out are AutoDesk. The amount of money that flows in and out of 3D cad (as subscription and then value created) having a first class open source kernel and tooling, would be giving big industrial players freedom to modify and tailor to their needs as well as smaller / hobbyists get started for free!

shirro 4 hours ago | parent | next [-]

Probably requires something that is almost there then a sponsor(s) to throw in developers or funding to get the rest of the way. On the EDA side CERN did a lot to lift Kicad to the point of being a credible alternative that could breakthrough like Blender. Both those projects are over 30 years old and for a lot of that time were dismissed as too difficult to use or lacking in features. FreeCAD is only 23 years old. I don't know what the code base is like but if a large org put a couple of good devs into it for a few years who knows.

It must be difficult when so much management is short sighted and focused on delivering short term profits for shareholders. Even academia is run like a business now.

Unless a privately held rogue company like Valve got interested its probably going to have to wait for a government/ngo/scientific. Industry, particularly the tech industry, is notorious for leaching of free and open source software and in some cases building entire businesses on it and not giving back.

jwagenet 4 hours ago | parent | prev | next [-]

The problem with FreeCAD and every other free/open source MCAD project of note is the Open Cascade kernel they are built on. While Open Cascade is fairly mature, it has dealbreaker issues in a few key areas: fillets cannot consume connected faces and may fail for a number of other reasons, cylindrical and spherical faces require seams which often cause issues with boolean operations, and shapes like helixes are also often troublesome.

JoshTriplett 3 hours ago | parent | next [-]

On a scale from "big chunk of work" to "complete rewrite", how much work would it take to fix those issues in Open Cascade?

bsder 4 hours ago | parent | prev [-]

Sandia seems to have some form of kernel, but only Federal-associated entities can get access to it.

It would be interesting to see if they would license that out further for some amount of money.

bgoated01 3 hours ago | parent [-]

If you're referring to Cubit, they license the ACIS kernel under the hood.

CoreformGreg 2 hours ago | parent [-]

They’re (possibly) referring to “Scalable Geometric Modeler” (SGM)

https://github.com/sandialabs/sgm

Originally open-source, but since taken back in-house. As I understand, which should not be construed as an accurate accounting, Sandia wants to flesh out the basics further before (potentially) open-sourcing it again.

polishdude20 4 hours ago | parent | prev | next [-]

Onshape has blown me away with its browser interface and how quick it all loads. And as long as your projects are public, it's free.

Fabricio20 an hour ago | parent | next [-]

I tried Onshape and the first thing that made me drop it was how slow it is. It feels extremely sluggish, probably because it's running on the browser. I have a really good computer though, so I dont want to deal with that.

edoceo 4 hours ago | parent | prev | next [-]

Wish they had something between $0 and $1500/yr.

SchemaLoad 4 hours ago | parent | prev [-]

I really didn't like how they both require a phone number and make all of your files public. I've stuck with Fusion which seems a lot more privacy respecting while also being basically free for home users.

Fabricio20 41 minutes ago | parent | prev | next [-]

If you are looking for a tool that handles constraint based CAD for mostly like 3d printing your stuff, give Dune3D a try (on github), it's currently my go-to to keep a workflow similar to what I used to have on Fusion360, it's lightweight, open source and pretty damn good. The author also develops a EDA/circuit board designer called Horizon EDA.

rmunn 18 minutes ago | parent [-]

There's also the https://www.cadsketcher.com/ addon for Blender, which is constraint-based. I tried it a few years ago and it was decent, but still lacking a few things. I haven't tried it recently, but I'd be surprised if it wasn't much improved from the already-pretty-good state it was in when I tried it.

1220512064 4 hours ago | parent | prev | next [-]

IDK how they compare to professional CAD tools, but I've heard good things about FreeCAD and OpenSCAD. I know that some people use Blender for CAD work, and there are even some extensions to make it easier, but I'm dubious that the representation of meshes that Blender uses are well-suited for CAD applications.

Fabricio20 an hour ago | parent | next [-]

I tried FreeCAD and the user interface is so unintuitive and things just have constraints that block you from doing the most basic things from the get-go that I just gave up in 10m, like sibling. SCAD is scripted/programmer CAD, I like the concept and have used for a few things but it's quite a learning curve to do anything more than a cube with some funny edges! Dune3D is currently my go-to for 3d-printer related parts!

al_borland 4 hours ago | parent | prev [-]

I just tried FreeCAD last week. I uninstalled it after about 10 minutes. The most basic actions to just get started were throwing errors. Maybe it was user error, but it was a very bad first impression.

fxff 3 hours ago | parent | next [-]

Approached it with the same attitude at the same time, after 10 minutes decided to view some basic tutorial (for an earlier release) that made things clear and I could continue basic tinkering on my own.

But of course built-in intro of Solidworks was a way better UX.

mitthrowaway2 3 hours ago | parent | prev [-]

Do you mind sharing what you were trying to do? I love FreeCAD so I'd be happy to help you do it if you'd be willing to give it a second try.

al_borland 3 hours ago | parent [-]

My main goal is to reproduce the floor plan of my house, so I can figure out how to best layout the furniture.

mitthrowaway2 2 hours ago | parent | next [-]

I actually did the same thing so that I could figure out how to lay out my workshop!

What I'd do is:

- Spreadsheet workbench --> Create spreadsheet (name it "measurements"). (This is optional)

- Switch to Part design workbench --> Create body (name it "layout") --> select XY plane --> Create sketch --> Create Polyline

- Zoom out, start drawing the rooms in your house, approximately to scale.

- Before going into too much detail, add a dimension (select line --> "Constrain Distance") to the first line you draw, so that you can do the rest of your drawing approximately to scale. Then the general shape won't get messed up when you add dimensions to everything else.

- (If you have a photo or picture, you can import that to sketch over).

- Add constraints to match your room measurements, mostly vertical or horizontal distance constraints. Be careful not to overconstrain the sketch. (You can put the measurements directly into the sketch constraints, or you can put them into the top-level spreadsheet, create an alias for each cells, and then set the dimensions to reference those cells).

- Once the rooms are drawn, close the sketch and create a new sketch on the xy plane called "furniture".

- Draw some rectangles for your sofas / tables / etc, delete any horizontal and vertical constraints that get automatically added (they look like little | and _ icons), and instead apply perpendicularity constraints. Dimension your rectangles using only the "constrain distance" tool. Now you can drag them around the room and rotate them freely.

- If you want to make 3D models for these too, create new Part Design bodies for each room and each piece of furniture, create a shape binder referencing the master sketches in the Layout body, and then extrude the sketches using the "Pad" operation.

That's about as much tutorial as it makes sense to pack into a HN comment. If you give it a try, I hope it works out for you!

al_borland an hour ago | parent [-]

Thanks! I’ll save this and give it a shot soon.

rabf 33 minutes ago | parent [-]

There are excellent tutorials on youtube. Spending a couple of hours doing these will allow you to hit the ground running.

FreeCad is rapidly evolving and quite a few tutorials are already using the v1.1 dev builds. Pay attention to the version used in tutorials as you can run into trouble following them if you are on an older release.

jazzyjackson 3 hours ago | parent | prev [-]

I like using paper and cardboard for this, dollhouse style, much easier to move things around and visualize that way and more fun than clicking a mouse to boot :^)

Inkscape is good for typing dimensions into rectangles tho

al_borland 3 hours ago | parent [-]

This was my plan B. I do have a scale I can use for it.

I’ll check out Inkscape as well. I’ve tried using some raster graphics in the past, but I couldn’t type dimensions and had to use the rules and guides with snapping. It mostly worked, but was a bit annoying.

gcr 3 hours ago | parent | prev | next [-]

agreed!

take a look at https://Plasticity.xyz. It's not open-source, but it's got a small, highly dedicated team behind it. It's built on Solidworks' kernel, so it's quite robust.

Also take a look at solverspace, caligula, FreeCAD, ...

rcarmo 3 hours ago | parent [-]

* Node-locked (up to 2 machines)

Hard nope.

daedrdev 4 hours ago | parent | prev | next [-]

Blender is a decent option for low effort 3d modeling for 3d printing in my experience

SchemaLoad 4 hours ago | parent | next [-]

Depends if your goal is artistic or functional. Blender is good if you are trying to make character models, etc. It's not great when you are trying to make a part that has to fit something in the real world and after printing you discover one step half way through needs to be 1mm shorter.

ehnto 2 hours ago | parent [-]

It does take a different set of skills to regular CAD, but I haven't found it that bad for simple 3D printed models that need to be dimensionally accurate.

I have used it to make quite a few functional prints, with the help of making sure my scene units are correct and a CAD plugin.

SchemaLoad 2 hours ago | parent [-]

I haven't tried any of the cad plugins for blender, but I'm not sure how you would retroactively change dimensions in blender. It's usually simple enough to create features to a certain size, but if you need to change them later it becomes significantly difficult.

If I put some holes in something that are 1mm from the edge, but then I print it and see it doesn't line up and needs to be 1.5mm, in Fusion I can just change one number and it all updates. Doing the same thing in blender would likely be very difficult.

_carbyau_ 4 hours ago | parent | prev | next [-]

During COVID I learnt Blender for 3D modelling. It is still my go to.

Many people complain about it being a mesh editor but it works for me. The sheer variety of tooling and flexibility in Blender is insane, and that's before you get to the world of add-ons.

I want to learn Geometry nodes and object generation as I think they will address a lot of the "parametric" crowd concerns. This v5 is meant to be a big step in ease of use of this.

Also, I'm not sure if the different tooling lets me see all the flaws of online "parametric" models, or whether I'm being pedantic. They get frustrating. I have Gordon-Ramsay-screamed "How can you fuck up a circle!".

jwagenet 4 hours ago | parent | next [-]

In MCAD, “parametric” does not mean a high level part or feature is driven by editable parameters or procedurally generated features. Parametric refers to the underlying storage format representing part features in a parametric way rather than as a mesh. Mesh formats like stl cannot represent a circle by its position and radius, while a parametric format like step can. This distinction is more akin to raster (bmp) vs vector (svg) graphics. Both can be generated procedurally by “parameters”, but only with svg can sub-features be faithfully extracted or transformed.

_carbyau_ 2 hours ago | parent | next [-]

Sorry, separate point:

>Mesh formats like stl cannot represent a circle by its position and radius, while a parametric format like step can.

This is where I think the Geometry nodes can help. A node (function) can be used to represent the circle with inputs and outputs set or changed as required.[0]

I have not fully explored this space though and so my "hopes and dreams" may well be as useful as thoughts and prayers...

[0] https://docs.blender.org/manual/en/latest/modeling/geometry_...

_carbyau_ 3 hours ago | parent | prev [-]

I have some understanding of "parametric" vs "mesh". I looked it up when I saw so many people going on about it.

Maybe it is the export or something. I run the 3D toolbox and often models are not manifold.

I see things like two circles in slightly different positions but both are connected in different ways to the surrounding "single" instance model. Things like this mean you end up with "infinitely small volumes". There is no fully enclosed "volume" and so mathematically there is "nothing to 3D print".

As a model this makes no sense to do, and so it irks me.

But clearly the slicer software doesn't care or autocorrects and people make their 3D print happen just fine.

throttlebody 4 hours ago | parent | prev [-]

Alibre has a free option, which does not include sheetmetal bending but otherwise solid software

zargon 31 minutes ago | parent [-]

Alibre does not have a free option. They have a 30 day free trial and the low cost Atom3d package. I bought Atom3d and never use it because it's too painful. If I'm going to endure that much pain I might as well use FreeCAD which at least runs on Linux.

LoganDark 4 hours ago | parent | prev [-]

I use Plasticity to model for 3D printing. Having to worry about polygons in Blender is really annoying.

cluckindan 4 hours ago | parent [-]

So model using the NURBS tools?

LoganDark 4 hours ago | parent [-]

Does Blender have NURBS? I don't even use NURBS in Plasticity, because curves are already essentially vectors. I don't have to worry about polygons at all, and then I choose the tolerances when I export.

dgroshev 4 hours ago | parent | prev | next [-]

Same, but I don't think it's possible without a large and sustained investment into a free geometric modelling kernel, which can probably be only done by a government.

Parasolid is powering practically every major CAD system. Its development started in 1986 and it's still actively developed. The amount of effort that goes into those things is immense (39 years of commercial development!) and I don't believe it can be done pro-bono in someone's spare time. What's worse, with this kind of software there is no "graceful degradation": while something like a MIP solver can be useful even if it's quite a bit slower than Gurobi, a kernel that can't model complex lofts and fillets is not particularly useful.

3D CAD is much harder than Blender and less amenable to open source development.

4 hours ago | parent | next [-]
[deleted]
dr_dshiv 3 hours ago | parent | prev | next [-]

> Same, but I don't think it's possible without a large and sustained investment into a free geometric modelling kernel, which can probably be only done by a government.

Can you help me understand why this problem is so hard?

Chris_Newton 8 minutes ago | parent | next [-]

Geometric modelling tends to need a lot of detailed work for two main reasons.

Firstly, you probably have a variety of analytic shapes to represent — things like lines and circles in 2D or cubes and spheres in 3D. Even seemingly simple questions, like whether two such shapes intersect or not, can require a significant amount of logic to calculate the answer. That logic will often be specific to the exact combination of shapes you have, because the number of freedoms and nature of any symmetries in the shapes you’re working with can mean you would use completely different algorithms for superficially similar situations.

Secondly, while you’re probably going to implement a lot of analytic calculations, in realistic models you’re probably going to end up using numerical methods as well. That can be because you need to work with geometry like Bézier curves or NURBS surfaces that has many freedoms. It can be because even if you start with convenient analytic shapes, new geometry that you derive from those shapes, for example by offsetting a single shape or by combining details from multiple shapes as in constructive solid geometry, won’t in general have an analytic shape itself.

By the time you allow for the numerous different types of constraint that you might want to enforce between different types of geometry and the numerous different ways you can construct new geometry from geometry you already have, the scale of the problem explodes. And on top of that, almost everything you do is going to have numerical sensitivity issues, and all but the simplest algorithms are going to need detailed, careful analysis to make sure you really have covered all the possibilities. In this field, “edge case” and “corner case” are literal terms and not just figures of speech!

To give a practical example, without looking up how to do it, could you confidently calculate whether two arbitrary cuboids are completely separate or they touch or intersect somewhere? As another example, given an arbitrary parametric surface, a sphere in a position just resting on that surface, and the constraint that the surface of the sphere must remain tangent to the parametric surface without intersecting it anywhere, how would you calculate the path the centre of the sphere will follow if you introduce gravity to start the sphere rolling in a certain direction along the surface?

These are relatively simple problems in the field, but each already has some subtlety that leaves the “obvious” solutions incomplete. Solve a few thousand problems like that, each unique and with its own calculation strategy, and now you’re starting to get a practically useful geometric modelling system. (You’ve also probably had a team of dozens of mathematicians and developers working on it for decades.)

CoreformGreg 2 hours ago | parent | prev | next [-]

The other reply is really good. To add to that, the intersection of two bi-cubic Bezier patches (each being but one part of a cubic B-spline surface) is an implicit equation of degree 18^2=324. This simply cannot be implemented exactly in a geometry kernel and thus must be approximated. How do you want to approximate this? If you choose trimming (the industry standard) now you have to handle gaps in your geometry. If you choose remapping into an unstructured watertight spline, you need to solve a constraint system that is NP-hard. If you choose reparameterizing… well, see nVariate’s watertight Boolean technique (disclaimer: I once sponsored a project with nVariate).

Now, generally speaking, in a CAD model most surfaces will be “analytic” (plane, torus, conical, arc, line, etc). But whenever some complex surface that joins these surfaces is required, (NUR)B-splines are the principal technique for “covering” the gap.

dgroshev 3 hours ago | parent | prev [-]

The way modern CAD systems work is by having a tree of features/actions that is then used to construct an analytical representation of a 3D object. The features/actions can rely on "sketches" (2D drawings that are coupled with a real time geometric constraint solver) and can be "projected" into sketches, creating new reference lines, that can then be used by the sketch constrain solver, generating a sketch that can be used for more 3D features.

This is already complex and fiddly enough. Just having a stable 2D drawing environment that uses a constraint solver but also behaves predictably and doesn't run into numerical instability issues is already an achievement. You don't want a spline blowing up while the user is applying constraints one by one! And yet it's trivial compared to the rest of the problem.

Having 3D features analytically (not numerically!) interacting with each other means someone needs to write code that handles the interactions. When I click on a corner and apply a G2 fillet to it, it means that there's now a new 3D surface where every section is a spline with at least 4 control points. When I then intersect that corner with a sphere, the geometric kernel must be able to analytically represent the resulting surface (intersecting that spline-profiled surface with a sphere). If I project that surface into a sketch, the kernel needs to represent its outline from an arbitrary angle — again, analytically. Naturally, there is an explosion of special cases: that sphere might either intersect the fillet, just touch it (with a single contact point), or not touch it at all, maybe after I made some edits to the earlier features.

Blender at its core is comparatively trivial. Polygons are just clumps of points, they can be operated on numerically. CAD is hell.

LoganDark 4 hours ago | parent | prev [-]

> Same, but I don't think it's possible without a large and sustained investment into a free geometric modelling kernel, which can probably be only done by a government.

Fornjot has been attempting this: https://www.fornjot.app

It's going to be years or decades before it's competitive though. Also, it looks like they switched to keeping progress updates private except to sponsors, which means I don't actually have any easily-accessible information about it anymore which is sad.

dgroshev 4 hours ago | parent [-]

I'm very skeptical that one person can make a dent. Paging through the releases, they seem to focus on constructive solid geometry and code-driven shape generation, which I believe is a dead end.

The tricky bit is having a G2 (or even G3) fillet that intersects a complex shape built from surface patches and thickened, with both projected into a new sketch, and keeping the workflow sane if I go and adjust the original fillet. I hope one day we'll see a free (as in speech) kernel that can enable that, until then it's just Parasolid, sadly.

k1musab1 4 hours ago | parent | prev | next [-]

FreeCAD is the front-runner for me.

KiCAD was also a meh ECAD FOSS alternative 7-8 years ago, now it is by far the tool of choice for regular ECAD designs. I can see FreeCad getting there by 2030.

Workaccount2 4 hours ago | parent [-]

FreeCAD is probably the single most frustrating and unintuitive pieces of software I have ever used. I almost drafted hate mail to the devs after 15 minutes of crash coursing fusion360 got me further than 2 days of trying to use FreeCAD.

It seems like it has lots of capability but still "punch your monitor" levels of difficulty just trying to do the most basic stuff.

foofoo12 4 hours ago | parent | next [-]

I use FreeCAD and it's pretty good. But I think it's impossible to learn by trial and error.

MangoJelly has done an amazing job in churning out high quality tutorials for FreeCAD: https://www.youtube.com/watch?v=t_yh_S31R9g&list=PLWuyJLVUNt...

(this is just one playlist, there's a lot more on his channel).

RAMJAC 4 hours ago | parent | prev | next [-]

While it's a pain to learn and requires some plugins (addons) for basic ergonomics, FreeCAD absolutely works for parametric CAD modeling. YMMV depending on the project and complexity, it does the trick for laser cutting, bending and 3D printing.

Deltahedra is a great YouTube channel for getting the basics.

VerifiedReports 4 hours ago | parent | prev | next [-]

It suffers from too many "workbenches," some of which appear to be redundant or dated. You never know whether structures created by one are "compatible" with the M.O. of another (like "Part" vs. "Part Design").

And it presents nonsensical problems, like offering to create a sketch on the face of an object and then complaining that the sketch doesn't belong to any object. So you have to manually drag it under the object in the treeview. So gallingly DUMB.

Despite all that, I will wrestle with its ineptitude before giving Autodesk a penny. I get stuff done with it and respect those who give their time to develop it.

nickthegreek 4 hours ago | parent | prev [-]

how long ago did you try? the recent advances have turned me into a believer as a hobbyist compared to the first time i checked it out.

SchemaLoad 4 hours ago | parent [-]

I tried it this year. Not in too much depth, but I tried Fusion and FreeCAD for the first time this year for 3D printing and found I was getting much further much faster on Fusion.

I'm sure I could grind harder and learn more and make FreeCAD work, but I'm not sure why I'd bother.

nickthegreek 2 hours ago | parent [-]

No arguement that fusion isn’t better and easier to learn. Their licensing and changes to their hobbyist offering were no longer tenable for me which prompted my change. I was pleasantly surprised at how well I was able to work in freecad after a few youtube videos.

jiggawatts 3 hours ago | parent | prev | next [-]

Something that I've daydreamed of in the past is making a new constructive solid geometry "kernel" around which a CAD application could be wrapped based on projective geometric algebra (PGA).

The algorithms it enables are fundamentally more capable and robust than traditional kernels based on linear algebra (vectors and matrices). You can do really fancy things like interpolating in space and time robustly, find extrema in high-dimensional phase spaces, etc...

This could potentially allow straightforward and robust solvers for kinematics, optimal shape finding, etc...

Every few decades there's a "step change" where some new algorithm or programming paradigm sweeps away the old approach because suddenly a hobbyist can do the same thing solo that took dozens of developers a decade in the past. I suspect (but cannot prove) that PGA is one of those things.

LoganDark 4 hours ago | parent | prev | next [-]

Plasticity is the closest thing to this, I think. It uses Parasolid, which Blender does not, and supports xNURBS, which Blender does not.

lucideer 3 hours ago | parent [-]

Plasticity is closed source though?

Teever 4 hours ago | parent | prev [-]

You may be interested in CAD Sketcher: https://www.cadsketcher.com/

You're on point that there's a tremendous amount of money captures by Autodesk for CAD software that could be better directed at the open source community instead.

Software like OpenSCAD and FreeCAD are obviously not suitable for much commercial work, and have very irritating limitations for hobbyist work, in my mind a big part of that is the UI and Blender has a good and established UI at this point so I'd love to see the open source CAD that provides an alternative to vendor lock in come from a Blender add-on instead of a separate program.

I am no expert but as I understand it the primary difficulty with developing good alternatives to commercial CAD software lie in the development of an effective geometric kernel.

It seems to me that if a developer of an opensource CAD program develops it as a Blender add-on they can effectively outsource the remainder of the development efforts to the Blender community while focus can be made on the CAD kernel itself.