Placement has to be attached to edge called Edge1
When using the Placement if the support property is set to, for example Edge2, then Edge1 is ignored.
See Placement002 in this file. If the Support is changed to Edge1 the 3rd latch is populated. As it is, set to Edge2, no copy is populated for Edge1.
Hi, this is by design, to allow cross-item attachment. For example, if you use Edge1 and Edge2 (which Lattice2 reinterprets as Child2.Edge1) as support, Lattice2 will loop as: Child1.Edge1+Clild2.Edge1, Child2.Edge1+Child3.Edge1. You can switch PlacementSubsequence.CycleMode to Periodic, then the first one will also be included (but appear as the last placement of the array).
Ok, I thought it might be by design But, what are Child 1 & 2? I'm making that connection...
The shape of the sketch is a compound of wires, ChildX is a child of that compound (a wire). Each child in your sketch has just 1 edge. If you were to make the L-shape placer sketch, each child will have two edges.
Excuse me, I've not looked at the way the sketch handles this is quite a while.
So, what associates the 2 edges of the L-shape to a child?
Sketcher assembles edges into wires by looking at geometrically coincident vertices (the way you constrain it doesn't matter, actual positions do). Also, don't do triple (and higher) connections, they cause broken shapes and unstable edge/vertex numbering. (construction geometry is completely ignored, thankfully)
I'm sure I don't get the details...
I opened one of the sketches in the example. Added an edge to make up an L-shape. One vertex is on top of the other. When the sketch is closed, the Placement is changed as expected.
But, when I select the sketch, then look at it's details in the selection object (I stop the code running in a debugger), the sketch has now 4 'Part::GeomLineSegment' objects (before it had 3). But, I don't see what indicates there is a parent of two of the segments...
Part::GeomLineSegment is the content of Geometry property. Lattice2 does not use it, it uses Shape property.
Use Lattice2's Shape Info to examine shape structure, it was made for that.
Selected 1 subelements:
Vertex2: Vertex ([-14.905163, 35.62737, 4.0])
Selected document object:
Name = Sketch002
Label = Sketch002
Is placement/array = False
Structure:
Compound (3 objects):
Wire (1 segments)
Wire (1 segments)
Wire (1 segments)
Aha, I see in my debugger the SubShape.SubShapes has the association between two of the edges.. But, what process made that association?
I'll have a look at the Shape Info here shortly.
But, what process made that association?
https://github.com/FreeCAD/FreeCAD/blob/e89ebba7369dca5775fd8aa878a0d3c494e6b2ac/src/Mod/Sketcher/App/Sketch.cpp#L4139
Ok, so that's a sort of base process.
Thanks...I hope I haven't asked too many questions. I appreciate your patience.
well, they are good questions!
Thank you, DeepSOIC, for creating this amazing workbench! You are a technical mastermind of which there are only few. Your workbench enables workflows that are complex but which are too cumbersome to do in regular FreeCAD. I also love that you added the PartDesign equivalent of Feature Mirror as Lattice2 Mirror tool! You enable people.