6 ms·
Topological Naming Problem
- lgeorget 7mo agoI learned about it the hard way, ahah. Now I create intermediary planes for all distances and I extrude planes always with respect to those.
- shadowpho 7mo agoI keep making the same mistake. How do you make intermediary planes?
- placatedmayhem 7mo agoNormally, I select a face and add a datum plane. It's button is in the toolbar with a the datum point and datum line buttons in light blue iirc. That said, since v1.0, I've had far fewer instances of being affected, and have started doing some direct-on-face features (usually sketches) again.
- hommelix 7mo agoThis is described in the wiki page, at the section solution.
- timpieces 7mo agoSimilar approach is to create a master sketch which is a sketch that defines the major dimensions of your design. You can then 'attach' bodies and planes (or LCSs) to different parts of the sketch. The approaches are similar but it allows constraining all of the distances relative to each other using the sketcher rather than hard-coding or using math expressions. It's the only workflow I've found that doesn't have me pulling my hair out with more complex designs, but it definitely has downsides too (requires excessive subshape binders, sketcher is slow, overall it feels slower than bottom-up design).
- groos 7mo agoIt's what caused me to move away from FreeCad to OnShape. Never had an issue in OnShape but got hit with it every time in FreeCad. The sad thing is that there was a fork for a long time which had addressed this problem, and added other nice enhancements as well, but they never merged that work. I guess every org has political problems and FreeCad is no exception.
- embedding-shape 7mo agoHow does OnShape handle that problem? The linked page seems to make the case that most CAD suffers from this, others just "hide" it better; > This problem is not unique to FreeCAD. It is generally present in CAD software, but most other CAD software has heuristics to reduce the impact of the problem on users.
- DecoPerson 7mo agoI think the word “solve” is better than “hide” here. Fusion 360’s heuristics are so good that I rarely run into these problems. When I do, it’s usually because it was a drastic change to a previous feature in the timeline and I’m expecting to encounter issues because it’s a really fundamental change.
- obelisk79 7mo agothat's basically because all commercial cad software are built on the same 3 geometric kernels (none of which are open source) and have robust and mature solutions. FreeCAD's is improving over time but it's a game of catch-up and the math and algorithms involved are complex. The kernel FreeCAD uses doesn't really have a robust heuristic for this, so FreeCAD had to implement its own.
- throwup238 7mo agoMost CAD software have a mapping algorithm that remaps the new features to the old features after a topological restructure using a combination of topological id systems and heuristics. Solidworks and Onshape don’t “hide” it better, their algorithms are better and break down in much more complex models than FreeCAD. Each one also tends to have its own quirks so as you learn to use the software you get a bit of intuition on how to best model certain features to avoid angering the topological naming gods. I don’t think I’ve ever seen Solidworks break down in a simple model, it’s always been in complex shapes using advanced features.
- MoonWalk 7mo agoUnless I missed it, the article doesn't answer the first question you'd ask: Why don't they just generate unique IDs for everything and use those internally, instead of names that get changed all the time?
- throwup238 7mo agoWhether it's unique IDs or names, the problem is the same: topology changes destroy the things you’re identifying. When you have a box and you assign ID face_007 (or a generated unique ID) to its top face, that works fine until you fillet an edge adjacent to that face. Now the kernel has to recompute the geometry and depending on the operation, face_007 might still exist in a different shape, might split into multiple faces, or be destroyed completely. The geometric kernel is doing boundary representation operations so when you do a boolean or a fillet, it doesn’t “edit” existing faces, it computes an entirely new b-rep from scratch. The old faces, edges, and vertices are gone and new ones are created to replace then. There’s nothing to hang a persistent ID on because the entities themselves are ephemeral. There are solutions to the problem but they all break down eventually. I think freeCAD uses topological tracing and naming schemes so it encodes a face’s identity by how it was created. e.g., “the face generated by the intersection of extrude_1 and the XY plane.” The problem then is that parameter changes or operation insertions in the history can destroy those too, creating a new feature that can’t be easily mapped to the old ones. That’s where all the heuristics come in. Unique IDs are used internally, but they only last for the lifetime of one evaluation. The hard part is establishing the equivalence between entities across re-evaluations when the topology itself may have changed.
- amelius 7mo agoSounds like it is maybe an ill-defined problem. So step 1 should be to describe non-ambiguously what should be solved here.
- throwup238 7mo agoStep 1: Solve the entire mathematical field of https://en.wikipedia.org/wiki/Topology https://en.wikipedia.org/wiki/Topology This isn’t just basic CRUD software that just needs some Postgres constraints to model trivial business logic. These are genuinely hard problems that mathematicians have been working on for decades.
- phkahler 7mo agoSolvespace has a fairly robust solution to this problem - for the cases that it handles. It does not create accessible edges for things like the intersection of surfaces, which won't be a big deal until we have a chamfer/fillet tool where you might want to modify those edges. But change an underlying sketch all you want and all geometry built from it will remain intact except for stuff built on something you delete. IIRC the FreeCAD solution tends to create names of ever-increasing length as you continue building.
- tug2024 7mo ago[dead]