-
-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add "2D Lattice" fill pattern for lightweight aircraft structures #8293
base: main
Are you sure you want to change the base?
Conversation
This is a game changer for 3D printing planes and Eric is a genius for creating this. It can save plane designers probably 80 percent of their time vs manually creating these structures in CAD. |
Amazing! |
For many of us that like to design and build 3D printed models this would be a major feature to have in Orca which is already an excellent slicer for 3D aeroplane work. |
I am really looking forward to having this implemented into orca slicer. I already have so many ideas designing model airplanes with this technique. |
Does this infill require the model to be placed with the long edge parallal to x-axis? Otherwise I guess the infill will be formed in undesired direction? |
Also changing the angle via modifiers doesn't seem to work. |
Awesome!
As for this one I was talking about the |
Oh, I see! Will look into that. |
awesome! |
I've been wanting to see this since 2023. I posted this idea in numerous places including slicer communities and in 3D printing communities. I didn't/dont have coding skills or $ to pay for development and couldn't make anyone realize how much this type of infill methodology would be of benefit. I had to move forward with Infill Modifiers generated from CAD derived STL models which in many instances were sucessful (and) time consuming. The most interesting Infill along these lines I was working on was Honeycomb. That required very specific mesh attributes and I sought help from the Blender, FreeCAD, and Cura Communities. I was very successful when using a Honeycomb as a sort of subtractive mesh generating a vase mode like print but "Sparse" "internal" or "standard type" Infill was very difficult. I did have limited success and the proof of concept for viability was proven but implementation was extremely tedious. It would have been nice to have had slicer devs acknowledge and implement this idea from me back then but it's good to see it now as kinda "better late than never" I'd be thrilled to see if you could implement a sparse honeycomb infill. I can give you a bit of information related to possible pitfalls or constraints that may be important if you would like. I also have several ideas that would be awsome as slicer features that I would be willing to share if interested. I got into 3D printing back in 2014 and have a pretty strong proficiency with front end slicer operation and functional printing ability. I'm going to include a couple pictures of test prints from the Honeycomb work in 2023. First part is a wing section test of a glider called Mizmo by GForceAero printed with a Vase Mode type toolpath and in 3DLabPrint Orange Foaming PLA. I'm currently involved with pretty interesting hardware and material development, designers and sales and would be stoked to work more closely with Lofted Aero to advance 3DP Aircraft Manufacture and Additive as a whole. Sincerely, -Brian H. |
Looks similar to https://youtu.be/QJjhMan6T_E?si=XfEHfAh61PUdUbc_ but simpler. Adding infills in vase mode automatically is currently very hard to do due to how Orca works. I've spent some time on this but not having much progress so far. I'll definitely keep working on this in the future.
This looks feasible though, since we already have the horizental honeycomb infill and should be able to create a vertical one. |
Fantastic! |
|
Do you mean you could change the lattice_angle_1 and lattice_angle_2 in modifier and it works as expected? |
|
Use a modifier so the angles are different between the main part and the modified part. |
Here's an interesting observation. I'm traveling right now and don't have the build environment set up on my laptop, so I grabbed the most recently generated installer from the automated builds for this PR. On this instance, I'm able to change lattice_angle_1 and lattice_angle_2 successfully with modifiers either per-part or applied to a section of one part. Here's a few examples of default lattice angles +/- 30 degrees with modifiers changing it to +/- 70 degrees. This all seems to be functioning as it should. The only difference from the built-from-source OrcaSlicer instance on my dev machine is the merge with master from yesterday, but it doesn't look like any of the changes that introduced could be involved. When I'm back at home I'll try and figure out why I was seeing different behavior on that instance. |
That's because your modifier covers the entire layer of the object. Try a smaller modifier that covers only part of the layer |
BTW are you able to share the model of this part so I could take a look? Or is this available somewhere that I could download/purchase? |
You're right - I've done some more tests and it's definitely sensitive to the coverage region of a modifier. And sometimes the modified lattice angle only takes effect in small portions of the modified regions that are split by other features: I'll admit I'm not well enough versed in the code base to immediately know the right place to look to investigate this behavior. If one of you guys has a thought about that, it'd be much appreciated. Here's the project file I'm using for testing: https://drive.google.com/file/d/1IzIFfAC--IW8flAaxx4CNA6Zcy-zUIAF/view?usp=drive_link |
You'll also need to update the OrcaSlicer/src/libslic3r/Fill/Fill.cpp Lines 67 to 116 in c21b044
|
Description
This is a new fill pattern intended for lightweight printed model aircraft structures, primarily wings with single walls and low fill percentages. It creates a 2D lattice structure extruded in a planar direction, typically perpendicular to the wing chord but able to be manipulated by the fill angle setting. The lattice elements are arranged in two alternating groups, each with a user-specified angle relative to the Z direction. These two angles are adjustable by the user via settings that appear when this fill type is selected.
Screenshots/Recordings/Graphs
An example of a wing or tail part sliced with 2D Lattice at 2% fill and +/- 30 degree lattice angles
![Screenshot 2025-02-02 141544](https://private-user-images.githubusercontent.com/52842652/408904475-c8643397-42eb-40ca-abb0-e700869343fc.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNzUxMTcsIm5iZiI6MTczOTI3NDgxNywicGF0aCI6Ii81Mjg0MjY1Mi80MDg5MDQ0NzUtYzg2NDMzOTctNDJlYi00MGNhLWFiYjAtZTcwMDg2OTM0M2ZjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDExNTMzN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQzOTZhOWJiMmRmNzRiZGM2YWJlY2U4NjhhMzA3YmQ4ZjRlN2M2NDE3Nzc2YTZhM2ZiMTRjZjMwMzY4M2FjMmMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.Dgbr3GiP_UJMG5v7qcMTlXQTPwOjc9ZVIe3N9AFPvU0)
Another example lattice angle configuration, -30 degrees and 0 degrees
![Screenshot 2025-02-02 141737](https://private-user-images.githubusercontent.com/52842652/408904486-fecaa6c2-2f0e-4ecd-be28-35c39b5d5ac0.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNzUxMTcsIm5iZiI6MTczOTI3NDgxNywicGF0aCI6Ii81Mjg0MjY1Mi80MDg5MDQ0ODYtZmVjYWE2YzItMmYwZS00ZWNkLWJlMjgtMzVjMzliNWQ1YWMwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDExNTMzN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTFhN2I4MGY5MjdjYzY2MjljY2NhMmNiYTBjYzNlMjA0YzkxMGQ1ZjVjNDU3ZTYxZjBjMzYzZmRkNjg0N2E0MzcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.RCiZ3F2NOI-wpYKqngoqQJlQfyMF0CX0V-bLSPAgdmY)
Cross-section with 0 degree fill angle
![Screenshot 2025-02-02 141910](https://private-user-images.githubusercontent.com/52842652/408904492-d441f4f7-cb5c-4df7-bf63-288d917975e8.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNzUxMTcsIm5iZiI6MTczOTI3NDgxNywicGF0aCI6Ii81Mjg0MjY1Mi80MDg5MDQ0OTItZDQ0MWY0ZjctY2I1Yy00ZGY3LWJmNjMtMjg4ZDkxNzk3NWU4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDExNTMzN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTMwYzMzZWY3YzYwMmRjYjAzZGMxYjdhZWViY2I4ZDhhYWI2MzU0NzM1MWJlN2RhNjI2MTNmMzA3N2EyYTk1ZDQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.XVfwbTdDr6RpTFFQ3mASwXCpz_xLFflqFSDJkZuJ0aw)
The new fill angle parameters appearing when 2D Lattice is the selected pattern
![Screenshot 2025-02-02 142122](https://private-user-images.githubusercontent.com/52842652/408904498-25d58721-c826-4d48-bcef-a1c35459dc16.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNzUxMTcsIm5iZiI6MTczOTI3NDgxNywicGF0aCI6Ii81Mjg0MjY1Mi80MDg5MDQ0OTgtMjVkNTg3MjEtYzgyNi00ZDQ4LWJjZWYtYTFjMzU0NTlkYzE2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDExNTMzN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTY2YjdkZjRmY2U3YTg4NmRhYTljODY1NTkzZjhhYTI2OWE3OGZkYTdmOTNkNzBiZDE1NjUyYWZkN2Y3YmQwNjEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.qa177RwbDcRFD4Apc9uXbYmqZleMllFGEf6RvQFR8rA)
When "Advanced" is not selected, the angles default to +/- 45 degrees and their fields are hidden
![Screenshot 2025-02-02 142234](https://private-user-images.githubusercontent.com/52842652/408904500-9ca27c8d-83a9-454f-ad60-e11770fafec7.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNzUxMTcsIm5iZiI6MTczOTI3NDgxNywicGF0aCI6Ii81Mjg0MjY1Mi80MDg5MDQ1MDAtOWNhMjdjOGQtODNhOS00NTRmLWFkNjAtZTExNzcwZmFmZWM3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDExNTMzN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTRkZGQwYjZkYmI4Zjk2OTBjNzExZDE5YTYzYTExNDdhZmZkMWIzMDBjMTQzYjBkZDRkODhkMjFkMjA3NGEzMTcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.jUmdQxRiuvlmZhC4kogK7p-prqISp2OUl6saQR8PvP8)
A completed test part
![PXL_20250202_222552826](https://private-user-images.githubusercontent.com/52842652/408904870-ab0db74a-8d3c-4edd-944f-33564e26e3c9.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNzUxMTcsIm5iZiI6MTczOTI3NDgxNywicGF0aCI6Ii81Mjg0MjY1Mi80MDg5MDQ4NzAtYWIwZGI3NGEtOGQzYy00ZWRkLTk0NGYtMzM1NjRlMjZlM2M5LmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDExNTMzN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWUzNzA5YjgxM2ZjZDI4YjY4NGJkNDA0YTkzMjgyYjlmNTFiYzBlNWJhN2I1YTQ4N2U2NTQ4YjJlMzI2MTMzNWYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.DJTAddvZZ8xR380vQP-l-WNef_tmN2iVKqzCApYc3I4)
Tests