I tried to force a siege by creating an army, a controller and targeting the fort. It seems to work just fine, so now I'm unsure whether just no one tried that, or there are known issues with this approach.
Anyway, here's the script
https://gist.github.com/pronvit/e256267e3c65c0e89e08b1aa947df600The script accepts the following parameters:
-civ HUMAN -race [ GOBLIN TOAD ] -count [ 2 10 ] -undead -debug -cleanup
-civ is optional. If not present, will find a civ for the first race. If present, it can be a race name (will find a civ), or a part of english civ name. Can also be "self" if you can't think of anything better.
-race is require and can be either one value or a list.
-count is required and can be either one value or a list with number of items matching races.
-undead is optional if you're a fan of corpses.
-debug is optional.
-cleanup is optional and will delete the created army controller.
I think doing the cleanup if generally better, but it needs more testing. I've had some crashes when generating a 100 goblin siege both with cleanup and without but not sure whether it's a vanilla DF crash because of a large number of units or is caused by the script.
There are also comments in the code about what some unidentified fields might do.