If you want to have a specific infill density, you can design the infill yourself as part of the solid model. (Note I use these two methods to design parts for strength, but it's basically the same thing that you're looking at doing)
I have two methods for doing this as follows (I use Solidworks, but the features exist with most CAD software)
Design the part for the geometry that you'd like as you usually would. (check the volume of the part)
Hollow out your part and set your wall thickness to the desired dimension. In solidworks, you can use the shell command for this. (check the new volume of your part)
Create a pattern for the print orientation you want and make the thickness of the pattern set to a variable you can easily change. For example if you want a hex pattern, then create a hex pattern that covers the footprint of your part.
Extrude your pattern from the bottom surface to the upper surface.
(depending on how complex your part is you may have to iterate between steps 3 and 4 to fill the part completely, but that's half the fun).
Close the part off. The Shell feature hollows out a part, and removes most of one flat surface. You just need to go back in and close this surface off again once you're done, generally with a single extrude.(check the volume of your part again)
Now you can compare the volumes of your part, this may require you to change the thickness of the hex pattern, and may require several iterations to get an exact density that you want.
This process wont necessarily work for every part you come up with but it's a good start for fairly blocky parts. It's also relatively quick and easy to do.
The second way is as follows
Create your part as usual and save as a unique file (lets call it "Solid file")
Create hollow the part out and save as a unique file (lets call it "shell file")
Create a new part that is your hex pattern, but instead of modelling the walls that will be in your final part, create the hex voids as a solid. Save this as a separate unique file ( lets call it "Void profile")
Create a new part and import both the "Void Profile" and the "Solid File".
Subtract the "Void Profile" from the "Solid File"
Import the "Shell file" and merge it with the result of step 5
This process I like a bit more, but it takes longer, creates more files and is a bit messier I think. However it gives you a lot more control over how your voids will work and you can delete sections of the voids if you want different parts to be more solid that others.
If you're using solidworks shell model and you have very tight features sometimes it gives you errors, and you may need to suppress small features and then add them back in after all of this. Just a heads up, it can be a bit of a flaky feature to use sometimes.
Now that you have your 'designed' internal structure don't forget to print at 100% infill, otherwise a slicer program may hollow out your designed infill pattern.