I have designed a generator that allows to design LEGO compatible bricks of any shape using a very simple to use online editor (nothing to install on your PC). This can be used to print anything, from basic standard bricks such as a 2x2 one, to complex shapes that don't exist in the LEGO catalog. Look at the example STL files provided in the "Thing Files" section above.
The online editor can be accessed here : http://bricks.lapinoo.net
I think its usage is straightforward. Draw your brick on the editor and then choose to generate either a standard height brick, a thin brick or a base plate. No programming knowledge is needed, all is done visually. Just ask if something is unclear.
For standard height bricks, you can choose to add reinforcements in the bottom cavity of the brick, so that there are less chances that the bottom cylinder structures will break over time. Type 1 reinforcement adds some small walls around the bottom cylinders. Type 2 reinforcement fills most of the bottom cavity, while still keeping mating compatibility with standard LEGO bricks. Type 2 will probably print faster as there are less details to print and as the infill algorithms of the slicer can be used to fill the volume.
There also options to adjust some dimensions of the bricks if your printer prints some features too small or too large. Place your cursor on the ? signs in the editor for a description. I recommend that you first print a simple 2x2 brick with no adjustment and try to mate the printed brick with a standard LEGO one. Adjust then the tolerances as needed.
Note that for very large bricks the generation of the 3D model can take several minutes. This is highly dependent of the processing power of your computer. Just be patient and wait.
The generator doesn't work properly with the now obsolete Internet Explorer (unable to save the resulting STL file). Use Microsoft Edge, Google Chrome, Firefox, etc instead. Not tested on Safari, can a Mac user test it for me?