News for hackers. Stuff that matters.
Re:FreeCAD: A free and open source multiplatform 3D parametr... by TeMPOraL on Friday September 18, 2020 @06:14AM (#24514955)
I'm also not sure if I understand the problem description correctly, but based on my little experience with 3DSMax, Blender and SolveSpace, I'd use this programming analogy:

You have a code that creates an array A, and then later on code that does something to elements A[2], A[3] and A[5] - elements which you semantically understand as "frobnicators of A", and whose number and indices depend on the contents of the array.

You then apply changes to the first part of the code, and now the correct frobnicators of A to modify are A[6] and A[14]. But the tool used to auto-update the array accessing part has no obvious way to know that by mentioning A[2], A[3] and A[5] you meant the frobnicators of A, and not say the barbulators of A. So it cannot auto-infer that you now want elements A[6] and A[14].

Or back to 3D land, what I assume is happening is that when you cut a hole through a solid, what you mean is to cut a hole (in a particular spatial relation to the solid's origin), and what happens is properties of some faces of that solid get modified. Then you apply further modification to these (and other) faces. After that, when you start reparametrizing the hole you cut in the past, the latter modification has no clue what your intent was, and blindly applies itself to the same faces it used before.

I imagine the problem is not theoretically solvable without extra "intent-related data", and existing solutions are just a bunch of heuristics guessing what the person doing the modelling meant by any given step. Topology being one thing you can use to inform these heuristics.

Re:FreeCAD: A free and open source multiplatform 3D parametr... by numpad0 on Friday September 18, 2020 @06:22AM (#24514988)
give each objects with UUIDs and refer to them by-UUID?
Re:FreeCAD: A free and open source multiplatform 3D parametr... by kuon on Friday September 18, 2020 @06:44AM (#24515115)
Yeah, but that's hard, because imagine you have an edge with UUID 1, then you edit the history which lead into that edge being cut in half. Which one of the two edges has UUID 1?

The answer is complicated because if you have a chamfer on that edge, depending on how you split it, you want to have the chamfer on both resulting edges. So they both get a new UUID, but you have to modify the next operation to apply to what "was" the edge 1.

I illustrated that here: https://imgur.com/a/XR7sO59

Re:FreeCAD: A free and open source multiplatform 3D parametr... by numpad0 on Friday September 18, 2020 @08:13AM (#24515692)
1. sketch a rectangle, extrude up. edge_1 in question created.

2. chamfer edge_1. chamfered edge_2 and _3 are created.

3. sketch a rectangle on far side, extrude toward camera for 1/2 full length. edge_4 is created at middle of box.

4. do other stuff. lots of things come and go.

5. you changed mind. extrusion distance is changed so edge_4 goes past chamfered surface.

On Fusion 360 with History enabled, this will result in a progress bar and backend goes back to step 2. to re-do and re-compute all subsequent ops up to step 5. As the result there will be probably edges 2, 3, 4, 5 that now represent near and far side chamfered edges. If you've done something that presently don't make sense at step 4., Fusion 360 throws an error and leave half done objects.

Okay, now I understand the problem. It needs the History feature to be done right, and UUID.

Re:FreeCAD: A free and open source multiplatform 3D parametr... by Joker_vD on Friday September 18, 2020 @07:04AM (#24515250)
> So they both get a new UUID, but you have to modify the next operation to apply to what "was" the edge 1.

Of course, that's exactly how I personally would expect the things to be done? You obviously have to propagate changes through all the operations further down the line.

Re:FreeCAD: A free and open source multiplatform 3D parametr... by pillefitz on Friday September 18, 2020 @12:17PM (#24518651)
But how? Let's take a cube, of which I modify one face. Then I change the cube to be a pentagon (let's assume it's a parametrized object). What face of the cube corresponds to which face of the pentagon?
Re:FreeCAD: A free and open source multiplatform 3D parametr... by numpad0 on Saturday September 19, 2020 @02:58AM (#24525716)
That’ll be a “downstream feature failure” in Autodesk term
Re:FreeCAD: A free and open source multiplatform 3D parametr... by phkahler on Friday September 18, 2020 @09:12AM (#24516295)
>> give each objects with UUIDs and refer to them by-UUID.

That's a core feature in SolveSpace. Not full UUIDs but something similar.