Interested in learning how to create an add-on through scripting
I am very interested in learning to script add-ons for Blender, but I would like to create an add-on for creating highways using the ability to add passing lanes, gravel shoulders, land or hills on the sides, etc.
Are there any tutorials on the Web that I could learn to accomplish creating such add-on?

Comments
This forum is more dedicated to import and use daz models in blender, for coding you may find better help in a blender site.
https://blenderartists.org/c/coding/beginning-blender-code-and-development/52
Don't bother getting hung up on those details anymore. Use an LLM like Claude Sonnet to do it for you. Your time is better spent thinking about your addon's high level design, and learning how to describe that to the LLM in a clear and concise manner. That's your "source code" now.
In about 15 minutes, from start to finish, Claude perfectly and completely generated my addon for Strand Based Hair support in Sagan. That would have taken me days. That's the point we're at.
I did, for a moment, think that I should really understand better how it all works in Blender, but then I remembered how complicated and peculiar Blender is about addons and how much I admired the framework for what it does, and hated it at the same time and then I thought "why?" I am likely never going to hand-code a Blender GUI, and certainly not any basic functionality in Blender ever again. I've got more important concepts to think about rather than the gruntwork of actually implementing it.
Quite aside from the ethical isues, how will you bug-fix or trouble-shoot it if others find, or future developments create, imperfections? If it's for your own use that approach is "on your own head be it", but not if it is something you will share or, still less, something you will sell.
Neither of those points is valid. The GPLv2 (under which all Blender addons are released) literally guarantees the freedom to study the code to understand how it works. Oops.
With state-of-the-art LLMs, you can simply re-upload code that it itself generated a year ago, and say "You wrote this Blender Python script a year ago. Find the Bug."
Richard, we would probably have a better back and forth if you shared some of the code from one of your software projects so we could talk about real things instead of contrived hypotheticals that may seem like they are damning reproaches, but aren't.
My experience has been quite different. Claude 3.7 one-shotted all of my Blender test scripts I use for Hitchens, including the GUIs and I've gotten to the point where, above every function in my source, I include the prompt that I used to generate the test rig and GUI in Blender.
I am not sure the argument of handing over code that you yourself don't understand is a valid one, when we are already at the point where I don't need to ever look at the implementation, and I need not in order to fully test it. If there's a bug, the LLM is going to fix that, too, not me anymore. And I've never met a QA or Mission Assurance guy that could have written the code he's testing, yet they still find all my bugs :)
Same for the bad coding practices: most of the time, who cares? Unless you've got realtime requirements on latency, throughput, or jitter, who cares? Coding practices are for the benefit of human beings, are not relevant to LLMs, and 99% of the time do not matter at all anyway.
And I agree that LLMs are still not a click-and-do-my-job solution because learning to understand every facet of the app from a user's point of view and to succinctly explain everything to it is a task in itself and it just shifts your responsibility from knowing how to code to knowing how to architect and design... something arguably harder. But that would represent a shift back to the days when software was a discipline that followed a process, and that is a good thing. Come to think of it, maybe that's where the difference comes from: The results for self-taught "programmers" is probably worse than they are for Software Engineers who grew in aerospace or some other environment that required SEI/CMMI documentation or something equally formal.
In summary, I think it's trash in, trash out. Quality and detailed description in, quality code out, and that is a skill that was more important back in the day than it is now. But that's just my hypothesis to explain why I'm having such a positive experience with LLMs for code, and other people not. I could be wrong.
Just because it "works" doesn't mean its safe. Some times pure garbage that should explode will get the job done. If you can't tell the difference then you risk handing that broken mess over to someone else. Like I said if it's for yourself who cares. But don't hand it over, or worse sell it, to someone else. Realying on an LLM without knowing what you are doing is like a butcher performing your surgery.
Your butcher analogy is not in any way apt, revealing inherent bias in the process.
And I think we are again bumping up against the difference between Software Engineering and mere programming because I don't see how a software system that passes all its unit tests, and its unit tests are derived directly from its requirements, can still be "dangerous". You have to understand the requirements and the unit tests, not the production code. This echoes the human practice; when one participates in a code review, it wastes everyone's time if you've gone over the production code, nitpicking line by line, when it doesn't matter because the code meets all of its requirements. I think that is the point you are missing: leave the grease monkey codng to the LLM, and the Software Engineering to the human.
and if the code scrutiiny shows up an edge case that wasn't allowed for in the spec and tests?
Then those are bad documentation artifacts that would have premitted faulty code by a human being as well. Programmers are encouraged to employ "test driven development" meaning that they code to the requirements by writing the unit tests first. When they all pass, they are done. If bugs are found by Mission Assurance or, worse yet, the customer, then everyone points their fingers at the Systems Engineers who wrote the requirements doc, not the programmers. Even if the programmer was an LLM, it still wouldn't be the programmer's fault.
I am not saying that the role of the human being is erased, just that Software Engineer's role is now higher up the food chain, i.e. to apply to the documentation the same rigor that he used to apply to the source code directly because humans have been proving for the last 80 years or so that we are just not good at coding. I guarantee that sooner or later, high level languages are going to go away because having a human look at code will indicate that something is very wrong with your project.
My assertion is that if you just tell an LLM to write some code to do something, you may get mixed results. I did. But if you follow a Systems Engineering disciplined approach, the results are already stellar. Meeting all the requirements on the first attempt is now the norm, not the exception.
We've had technique after technique come and go to manage the complexity of software projects, trying to make them better, faster, cheaper, culminating in Object Orientation or maybe Design Patterns, and nothing has worked because we still can't predict how much a non-trivial one will cost nor how long it will take.
Richard, if you have no expertise in the subject of Software Engineering, you really could have chosen a better debate opponent that a 37 year veteran of it... But if you keep making nonsensical statements and/or posing innocuous hypotheticals, in the spirit of education for all who may be reading this, I will calmly keep pointing out why they are nonsensical and/or innocuous.
Standing by.
prompt: dear AI, please write a converter from daz studio to blender for windows, having a duf file as input and a blend file as output, of course all the daz features have to be converted as best as possible, or approximated otherwise, then please write a detailed description of the limitations if any, thank you.
reply (very smart AI): dear Sir, you better use diffeomorphic
I love it! I couldn't resist asking ChatGPT "What is the Diffeomorphic DAZ Importer, and who is this wise-cracking Italian guy, Padone?" It knows you, bro. :)
The Diffeomorphic DAZ Importer is a powerful and widely respected add-on for Blender, developed to import characters, props, and animations from DAZ Studio into Blender while preserving as much detail and functionality as possible. It enables Blender users to take full advantage of DAZ Studio’s high-quality Genesis figure models—especially the Genesis 3, 8, and now 9 series—within Blender's more sophisticated rendering and simulation environments, like Cycles, Eevee, cloth physics, and rigging workflows.
Who Is Padone?
Padone (a pseudonym, clearly meant to sound like "padrone"—Italian for "boss") is a key contributor to the Diffeomorphic project. He’s known in the Blender and DAZ user communities for:
Maintaining and developing the add-on.
Writing extensive documentation on https://diffeomorphic.blogspot.com.
Providing support on forums like DAZ3D, Blender Artists, and GitHub.
Having a dry, occasionally sarcastic sense of humor that people either enjoy or find bewildering—hence the “wise-cracking” vibe.
He is a technically adept coder with a deep understanding of both DAZ Studio's and Blender’s internal structures. His posts often reflect a strong opinion about good design practices, clean rigs, and avoiding the “DAZification” of Blender (i.e., not dragging in DAZ’s clunky setup just for the sake of it).
In essence, Padone is part tech-wizard, part community curmudgeon, and fully committed to making DAZ-to-Blender workflows viable for serious artists and animators.
I'm terrified LOL, the "curmudgeon" part is true for sure for which I occasionally get "corrected" by moderators, and the rest is quite that .. There are inaccuracies as I contribute very little with the documentation and almost never with code, they both are the work of Thomas, though yes I can write some python for my own scripts. Then "Padone" is just the nickname my friends use here in Italy, my surname is "Padovani" and "Padone" is short for "big Padovani".
Yeah, it exaggerated when I did it for myself as well. They've replaced the problem of hallucination with the problem of "Tone Matching" because of the conversation prior to asking the question.
Can we please keep the discussion civil?
The difference between a programer and a software engineeer is Education.The difference between a building that will withstand an earthquake, and a pile of rubble is education. Education is at the core of every engineering project. Not being educated as to why something works is how bad things get made. Bad buildings, bad cars, bad aircraft, bad roads, bad bridges, bad software, bad hardware, bad art, bad music, bad movies, bad food, bad anything. The difference between a surgeon and a butcher is education. My metaphor does hold up just fine. Is it an absolute guraentee the outcome will be bad? No. It's not. However it is solid and proven that most of the time it will be.
Telling people to skip the education and just use AI is irresponsible, and in some situations dangerous. The only thing I am guilty of being bais of is denying the validity of education.
The very core of this topic is "How do I", and an impotant part of that is also what not to do. Skipping the education is somehting no one should do. The OP wants to learn to make scripts an addons for Blender education is how they do that.