Alpha implementation of lattice2 Roll Orient Mode#73
Alpha implementation of lattice2 Roll Orient Mode#73jbayless wants to merge 2 commits intoDeepSOIC:masterfrom
Conversation
|
very interesting, i'll look into it bit later if i don't forget. Don't hesitate to nudge me if i go silent for more than a week =) Isn't it supposed to be an involute array, not circular? |
|
Thanks! Yes, strictly speaking the placement centroids do end up following an involute curve rather than a circle. So you could argue that this doesn't belong under the Polar Array menu. On the other hand, the resulting placements are such that the object does wrap around a circle, so it might satisfy the principle of least surprise. I don't have a strong opinion; if you think it would be better to introduce this as a separate array type or just not include it at all, that's OK with me! |
|
I'm thinking about it. It does indeed share a lot with the normal polar array. |
|
so, i've made a decision that i want this array type as an independent class. Not sure if it's a good decision (lots of code duplication), but i want to make the root angle controllable, and that sounds like too much of a departure from polar array. I recently began implementing it (while i was on vacation), but now that the vacation has ended, the development has stalled 🤯 |
|
This is a cool looking feature |
|
@jbayless any chance you can revisit this ? |
|
I'm glad you appreciate it! Do you have a project you're using this in? I
think @DeepSOIC is still contemplating how they'd like to handle the proper
categorization and interface for this feature. It's important to get that
right the first time. In the meantime, the commits are posted here in this
pull request; if you'd like to make use of this feature, the easiest way is
probably to locally copy those changes from this PR into your lattice2
lattice2PolarArray2.py file. It's just a few lines of code that have been
changed.
… |
I wanted to be able to "wrap" a PartDesign object around a cylinder in order to do a boolean-cut to generate embossing rollers like this:
This would also work for generating any arbitrary 3D meshing gear pattern. Although, it is fairly slow at high resolution.
I found the Lattice2 plugin's polar array was almost perfect for this operation, except that there wasn't a pre-existing Orient Mode that would allow the generator to do this "rolling" motion. So I added this mode myself. If you imagine the generator object as having a virtual contact surface on the circle that supports a polar pattern, this mode causes that contact surface to always maintain instantaneous rolling contact against that circle as it rotates around it.
To generate an embossing roller, create a polar array while setting the circle support to be the radius of the desired pitch circle. (I recommend a linear, Span/N distribution). Then populate the array with the generator object, fuse the array, and do a boolean cut against the roller object. Note that the boolean operations will take some time for large array sizes, so it might seem like FreeCAD has frozen for a while; give it time to work through it. You can use a small N for testing the geometry and then increase the resolution later.
I would call this 'alpha' as I haven't tested this mode extensively, only enough for my own use. Still, I thought it would be worth sharing, in case someone else finds it useful.