I would like to create a program for generating a class of objects using Blender and Python. Basically, I would like to create an addOn or a program that can generate different types of the same object, as different models of cars. Let's say that I have a basic model and I would like the user can modify some parameters as the wheels, the length of the car, the seats and so on in a really user-friendly interface. The final effect I am achieving is something like MakeHuman, the tool in which you modify some characteristic of a human being in order to obtain your personalized one. Obviously I am not trying to create a tool with the same complexity of MakeHuman but I would like to have something simpler but in the same time similar for the class of objects I have in mind.
How do you suggest to start? Do you have some recommendations? Do you thing that using Python in Blender is a good choice?
The choice of the technology is quite subjective but yes, blender and python could be a great solution depending of the complexity of the transform you need to do. I've made some addon that can generate complex object based on parameters and it work pretty well.
You could begin by defining a list of properties that can be displayed in a Blender addon panel, and add an update function on each of them that will redraw your car or parts of your car based on this parameter, change the size of the wheel base on a FloatProperty , the type of wheel or vehicle with an EnumProperty, ...
So, this is possible but keep in mind that if you want to make really complex operations, like mesh transform on high poly models, load complex parts, ... the update function will take more time and the properties update could make blender a little laggy. You can also decide to forget the real time idea and the update function in this case, to change the parameter and the clic a "process" button for more complex operations.
The question of the user friendly interface is another point. Do you think that blender is user friendly enough? The solution I gave you would be a Panel in the blender interface, surrounded by other blender functionalities. This is an easy and quick way to do what you want but your interface wont be dedicated to your app. (It is maybe possible to do something better with blender games but this is out of my area of knowledge)