This is my first Python project, where I created a tool that enables me to create any curve, and have the geo that I want to be distributed along the line that I made. I also made the option to edit the curve vertex available so that I can always change the direction of the distribution. There is also an option to set our own parameters and randomize the position, scale and rotation values of the geo, so that there are more random distribution included.
Below is an example of how I use my tool when making rows of roof for my project, Sicily. By having controls of the vertex, I can have a row of roof in a short amount of time, while also still able to add randomization to make it look more natural.