Hi,
the usual way of using Blockly is that the code generated by blocks is used to generate a result or a behavior on a different panel, like navigating a maze, etc.
If I understood correctly, you want instead that the code generated by a block has effects on another block in the workspace.
As a fact, I do that in my project and it is perfectly feasible, although it requires to study a bit how Blockly works.
I can give you some pointers and ideas to help you get started.
You don't need a generator for the 'pic_dog' block, if you are going to use it just as "an output".
What you would need is to do is dynamically change the content of the 'pic_dog' block each time the 'dog' block changes.
I don't know how a pair of 'dog' and 'pic_dog' blocks will be associated in your app (may be one is a subblock of the other, or there is just one of each, ....).
There you will generate change the 'pic_dog' content according to the 'dog' content.
If you need to generate some Javascript code for that, you will use Blockly.JavaScript.blockToCode(dogBlock) and execute the result (may be with eval() ?).
If 'dog' has just some parameters, may be you don't even need the 'dog' Javascript generator, you just directly assemble 'pic_dog' depending on the content of fields and sub-blocks of 'dog'.
To change the content of the block 'pic_dog' you can use most of the methods you can use to configure a block during initialization, and some more.
As the onchange method you will write is attached to one of the two blocks, you have to find a way to refer to the other block.
I hope this can be useful.
Best regards,
Miguel