CAD/CAM constraint-based geometry sketcher for Blender
github.com
github.com
Like is it so hard to always draw some text for all 3 axis to say what the selection bounds are? I'm perplexed that none of the so called CAD plugins didn't add this as a first order of business, but they bothered adding something as useless as an outline renderer.
When I need anything that's dimensionally accurate in Blender I have to set up and scale the critical parts in Tinkercad first, then import into Blender to finish it up properly ffs.
On another note, I would love a version of Blender for the iPad. Shapr3D is, imo, ridiculously overpriced for what it is. An OSS 3D creation environment with the Apple pencil would be amazing.
I did the tutorial and it worked fine, but then when I started fresh I got a bug where I couldn't see any geometry until after I finished the pen operation, rendering it useless. What a shame. I'll try it again one day after they hopefully fix it
TinkerCAD is on the iPad and actually fun to noodle with FYI.
I guess you can randomly adjust points, check the constraints and iterate, but that sounds inefficient.
> If the sketch is not fully constrained, then the Jacobian is solved in a least squares sense, with each equation written in such a way as to make the quantity being minimized a useful penalty metric. This tends to yield "less surprising" results when dragging points in an underconstrained sketch, compared to approaches that use weak dimensions to keep the sketch always fully constrained.
https://solvespace.com/tech.pl
Not sure what the Big Players (Autodesk, Dassault Systemes, Siemens, ...) use, though.
In Autodesk Fusion 360, they seem to use something similar but with weird discontinuities in the computation. You'll be smoothly moving a point or edge or something and then at some point the 1px movement causes everything to snap differently and confusingly :). And if you pull back in the direction you came from, it doesn't go back the way it was. At least Ctrl-Z generally works pretty well :D
It occurred to me after I posted that this is similar in a way to molecular dynamics simulations, which are essentially constrained sets of points (constraints like atoms have to be within a certain distance range or angle/torsion).
In those you use techniques like gradient descent (similar to Newton's method it seems) and forcefields and so on. I guess it's all numerical optimization in the end.
https://www.plm.automation.siemens.com/global/en/products/pl...
Siemens PLM - NX and SolidEdge
Dassault - CATIA & SolidWorks
Autodesk - Inventor & Fusion
PTC - not sure ProEngineer's original sketcher predates 2D DCM of course because they invented history-based feature modeling for 3D CAD.
OnShape also.
Russian systems tend to use LEDAS
https://levindavid.blogspot.com/2011/10/providing-geometric-...
2D DCM is now owned and sold by Siemens PLM but originally created by John Owen at D-Cubed Ltd (Cambridge UK) from circa 1989 before he sold the company to Siemens in 2004
https://www.plm.automation.siemens.com/global/en/our-story/n...
Original 2D DCM paper by John Owen from 1991
Algebraic Solution for Geometry from Dimensional. Constraints
http://papers.cumincad.org/data/works/att/9ad2.content.pdf
(The split the graph into biconnected components doesn't really cover variable radius circles though.)
Other more recent papers by John Owen on arXiv
https://arxiv.org/search/math?searchtype=author&query=Owen%2...
(Some of these are for 3D DCM.)
Disclaimer: D-Cubed Ltd employee from 1995-2000.
As for splitting the graph into biconnected component, that mirrors what I know about automated layout of graphs (essentially the same problem?) in that it makes sense to have a very high-level algorithm of:
1) split graph into bi- (or tri-) connected components 2) layout these components individually 3) layout the block-tree of components
With the goal for layout to make it 'look nice' in some sense, while the goal for CAD is more that the constraints should ... make the final structure buildable and the 'right' shape?
The original author of solvespace said the same thing. He set out to make a constraint solver that behaved more intuitively than the commercial ones he'd used. He still licenses the solver for commercial use.
Sounds like a big Achilles heel to civilization in some ways.. :D
I mean, even with search engines, there is more competition..
https://en.m.wikipedia.org/wiki/Parasolid
https://en.m.wikipedia.org/wiki/ACIS
Even Autodesk use a fork of an old version of ACIS they own:
Am I the only one to find it crazy that basically all of engineering is using the same proprietary constraint solver that only one company knows how to build?
Perhaps, but it’s a surprisingly complicated problem and at the same time a highly specialised one. Having the big players in the CAD world, who all need to solve much the same problem here, essentially funding a small group of specialists enough to work on it might just be economic incentives doing their job.
I have no insider knowledge about this, but given that D-Cubed was first bought by UGS (a customer, and a direct competitor of many of its other customers) prior to becoming part of Siemens, I expect the lawyers all had provisions in place to deal with any dependency concerns.
It probably also becomes clear now why Russian systems use a different product.. :D
> A general scheme of geometric constraint solving consists of modeling a set of geometric elements and constraints by a system of equations, and then solving this system by non-linear algebraic solver. For the sake of performance, a number of decomposition techniques could be used in order to decrease the size of an equation set:[8] decomposition-recombination planning algorithms,[9][10] tree decomposition,[11] C-tree decomposition,[12] graph reduction,[13] re-parametrization and reduction,[14] computing fundamental circuits,[15] body-and-cad structure,[16] or the witness configuration method.[17]
He based this on the principles in the Solvespace constraint solver which is used in the blender add-on.
See https://vimeo.com/454404808 at the 9:25 and at the 28:36 timestamps.
Besides that nitpick, my first impression is that this is a long-overdue addition to Blender.
https://twitter.com/app4soft/status/1499029843689852934?s=20...
> He goes under multiple user names.
Not true. I'm using `app4soft` almost everywhere now: https://git.io/DailySolveSpace
On GitHub my account name is "Symbian9", but nickname is `app4soft` too.
> I find him both useful for bug reports and some feature ideas, but he can also be one to overstep (to put it kindly).
Its just because I'm a human living in free country, where each citizen has a right to being criticize something in same time trying to help fix & improve it.
> it's not entirely clear if he Ukrainian or Russian.
I'm Ukrainian living in Ukraine. Here is my statement for HN:[0]
I has nothing to connect me with Russia, so do not do that anymore.
> he did contribute one of those language translations, but I forget which one.
Common man, You know that I contributing to Ukrainian locale:[1]
> Well, he was a large contributing factor to the previous SolveSpace lead maintainer quitting.
Not true: `whitequark`, being on HRT therapie, completely broke communication between bug reports & feature request contributors and main SolveSpace development branch.
Also, `whitequark` resigned from SolveSpace project itself, just after `Evil-Spirit` (Russian living in Russia) mistakenly call they "him", instead of "she/they" — `Evil-Spirit` did not know that `whiteaqurk` was on HRT and transited gender from men to girl.[2]
Also, `whitequark` is the man who near converted SolveSpace to doble-licensed open-source, far away from its inital GPLv3.[3]
Thanks to `jwesthues` (SolveSpace founder), we rolled to GPLv3, removing CLA & double-licensing.
Since then SolveSpace is FLOSS, fully Free/Libre Open-Source Software again.
Any questions?
[0] https://news.ycombinator.com/item?id=30395897
[1] https://github.com/solvespace/solvespace/commits/master/res/...
[2] http://web.archive.org/web/20201013183045/https://nitter.net...
To be clear I had nothing personal against `whiteqark`[0,1] and LGBTQ in whole - they (`whitequark`) did a lot of hard work on cleaning SolveSpace core code.
But in same time they almost broke SolveSpace development management (due to their own mental health issues increased with HRT side effects[2]), in which development I'm joined in as QA since 2013.
BTW, I should clarify that `whitequark` is ex-Russian boy Peter Zotov (rus. Петр Зотов), who is actually trying blame me, Ukrainian living in Ukraine, while Russian Army kills Ukrainian kids in Ukraine, bombing cities, schools, maternity hospitals, shooting whole families in cars when they tried to escape Russia's occupation...[2,3]
[0] https://news.ycombinator.com/user?id=whitequark
[1] http://web.archive.org/web/20200216155543/http://ritconf.ru/...
[2] https://twitter.com/SolveSpace/status/1502321643229794310
[3] https://twitter.com/app4soft/status/1502340942682066946
[4] https://twitter.com/MFA_Ukraine/status/1502251070709456900
> he was a large contributing factor to the previous SolveSpace lead maintainer quitting
If you look at https://github.com/solvespace/solvespace/issues/714, it refers to "a few people [who] behave in a way that is unconstructive and directly leads to maintainer burnout [...] have not encountered this level of entitlement and persistence when working on any other OSS, of which I maintain plenty, and I do not wish to encounter it ever again.". That's this guy. At the time I chose not to name him publicly nor to ban him from the organization; the latter was clearly a mistake.
(The unfortunate incident with Aleksey was the proverbial straw. I regret that it happened, since Aleksey has done a lot of good work for the project; if memory serves, at the time I was looking for other ways to fund his work.)
> who near converted SolveSpace to doble-licensed open-source, far away from its inital GPLv3.[3]
This happened after I spent several months paying Aleksey Egorov (Evil-Spirit), who did some of the best and most important work on SolveSpace, a competitive salary out of my own pocket, and it has been done in coordination with Jonathan Westhues. (You'll see his name on the CLA.) SolveSpace had a commercial licensing option before the initial open-source release, which provided a (small, but useful) revenue stream, and that seemed like a good option to continue using.
Knowing this, you can also see why Aleksey's unfortunate statement about gender felt so painful. All I wanted was to keep developing a great FOSS CAD!
Is FreeCAD different now, or was I expecting it to be something it's not, or was I just using it wrong?
That's my impression too - and it tends to crash. If you look at how FreeCAD imports DWG files for example, it runs an external instance of a DWG->DXF converter built from (I think) LibreDWG, and then it uses their other python DXF importer to bring it in. In a way it makes sense because LibreDWG is GPLv3 only (not LGPL) so they can't directly incorporate it. But the awkward way it gets used feels like the way a lot of FreeCAD is put together. OTOH it can do a LOT and it is Free Software.
It's pretty bad compared to Solvespace too.
One of those FOSS programs like KiCAD where it is full of features but they've done absolutely zero work on UX, which makes using it a frustrating "ok you don't do it the obvious way, let me spend 15 minutes googling how to extrude a square" experience.
That sounds like a partial dig toward Solvespace. Aside from lack of features and the 90's UI look, what don't you like about it? Asking as one of the people trying to make it better.
But it's still clearly in another class to the commercial software I listed. Both in terms of UI polish and features. Though in fairness it's way ahead of them in terms of being light and quick to run.
The main issues I ran into were no bevels/fillets/drafts, and the fact that small circles become octagons. Last I looked into it the latter was fixable, it just hasn't been fixed, and the former was too difficult to implement with the surface representation it uses.
I got the impression that only the guy who originally wrote it understands the actual CAD stuff, and he doesn't work on it any more so the fundamental CAD operations are probably fixed now.
I think it would be great if some other people were able to step up and help modernizing other parts of it, making distribution easier, that kind of stuff. I think phkahler has the skills to revive solvespace, but there needs to be some other core contributors who can help out with the build, UI, on-disk format, and the like.
That was true for a few years, but I've got a pretty good handle on it, as does one of the other maintainers who implemented boolean intersection. I added the helix and revolve (vs lathe) groups, and have fixed a lot of bugs in triangulation and NURBS code.
>> The main issues I ran into were no bevels/fillets/drafts, and the fact that small circles become octagons.
The octagon issue is fixed - they become 16-gons minimum, and the chord tolerance can be lowered to get more edges. If you're exporting NURBS that doesn't really mater because the actual curves are exported in STEP.
As for the other features, I had been working on that here: ]https://github.com/solvespace/solvespace/issues/453#issuecom...
Although my implementation will be strictly for the ends of extrusions and not a general purpose edge modifier tool. I also don't know when it will land.
We just keep plugging away at whatever pace we have time for ;-)
There have been some new contributors too and some of them even dig in pretty deep.
Obviously, there are some lacking features, occasional jank, and (much less these days) weird pathological performance edge cases, but it's like all open source software: as it gets more polished, as more features get added, you have less and less reason to fire up the horrible UX closed source programs.
That is IMHO exactly why people use it, myself included. It really encourages a sort of "play" with the model which seems to come from heavy use of the constraint solver. You never enter dimensions in a property window somewhere, you enter them right on the sketch which means your focus is almost always right there. The interactivity is very high for a CAD tool.
That means that instead of stopping every five minutes to fiddle with all the little switches and toggles on some inane popup window you're in a flow state a lot of the time. It's like geometry, where you build complex forms through a straight edge and compass. For this reason, I think that even if solvespace was completely abandoned tomorrow, it would still be of interest to future programmers making future CAD programs.
You sketch a square on any plane, then extrude it (they call it the "pad" tool instead of "extrude" but otherwise it's identical).
I think the only thing FreeCAD users have to know, which SolidWorks users don't, is that there is a "Part Design" workbench where this SolidWorks-style workflow is located. There are also many other workbenches for other things like drafting, architecture, or CSG, and it's not immediately obvious which workbench you want to choose for the SolidWorks-style experience.
I was fist introduced to this problem in a video[1] made by Flowwie, who makes some fantastic introductory videos for FreeCAD. I'd strongly suggest watching it, because this isn't something the tutorial on the wiki[2] warns you about. Flowwie goes on to suggest an alternate method of working around this problem which works by using reference measurements (measurements within a sketch that aren't specified, but calculated for use in other sketches).
[0] https://wiki.freecadweb.org/Topological_naming_problem
[1] https://youtube.com/watch?v=FVKhejma69U
[2] https://wiki.freecadweb.org/Creating_a_simple_part_with_Part...
[edit: I accidentally linked to a video I didn't mean to link to! This one is the one I intended.]
They call it something Illogic and non-standard which means you have to Google it but otherwise it's identical!
To be honest extruding a square was meant to be an exaggerated example but it sounds like it wasn't such an exaggeration!
yeah , but that's exactly the complaint; a lexicon of terms is required to use FreeCAD whenever you're accustomed to (any) of the industry standards.
I hop between F360 and SolidWorks routinely with little issue, FreeCAD is always the odd one that requires searching.
I want to like FreeCAD; I keep trying it every year. I hate the anti-user tactic of Autodesk and I hate the cost of SolidWorks -- but it hasn't reached parity yet for my uses.
Love it
difference(); union(); def my_obj(p1, p2, p3) { for(...p1...) { sphere(p2); cube(p3); } }; ...etc...