Create B4W logic nodes by using Python

12 May 2016 18:06 #9463

I have (#9455).
Oh sorry, I haven't noticed

I got it! I gave you wrong recommendations(((
You should always specify sock parameter as "Jump_Dummy_Output_Socket".
So code snippet should look like this:

bpy.ops.node.b4w_logic_add_dyn_jump_sock('INVOKE_DEFAULT', node_tree="B4WLogicNodeTree", node="B4WLogicNode", sock="Jump_Dummy_Output_Socket")
Blend4Web Team - developer
12 May 2016 19:26 #9464

Thank you very much!

12 May 2016 23:24 #9468

Glad to hear!
Looking forward to new interesting questions
Blend4Web Team - developer
06 December 2016 18:04 #14388
Reply to post of user bjk
Thank you Konstantin!

After searching I was able to create a small tree (as a start):

import bpy

scene = bpy.context.scene

scene.render.engine = 'BLEND4WEB'
scene.b4w_use_logic_editor = True
bpy.ops.node.new_node_tree(type='B4WLogicNodeTreeType', name="B4WLogicNodeTree")
scene.b4w_active_logic_node_tree = "B4WLogicNodeTree"

ntree =['B4WLogicNodeTree']

e_point ='B4W_logic_node')
e_point.type = 'ENTRYPOINT'

regstore ='B4W_logic_node')
regstore.type = 'REGSTORE'
regstore.floats['inp1'].float = 2 [s]regstore.param_number1 = 1[/s]
regstore.location = 160, 100

sw_select ='B4W_logic_node')
sw_select.type = 'SWITCH_SELECT'
sw_select.location = 400, 100

move_to ='B4W_logic_node')
move_to.type = 'MOVE_TO'
move_to.location = 650, 100

reroute1 ="NodeReroute")
reroute1.location = 600, -100

reroute2 ="NodeReroute")
reroute2.location = 380, -100[0], regstore.inputs[0])[0], sw_select.inputs[0])[0], move_to.inputs[0])[2], reroute1.inputs[0])[0], reroute2.inputs[0])[0], sw_select.inputs[0])

This is okay, I believe, but how do I select an object (the default cube) in Switch_Select and how do I add a new socket?

By the way, I watched the conference video. Congratulations!

Hi bjk,
I would like also add a new logic nodes.
Where do you add this code (above in the quote) ? Do you inject it in the "" file or do you create an extra file for it ?

And where should this code be added:
bpy.ops.node.b4w_logic_add_dyn_jump_sock('INVOKE_DEFAULT', node_tree="B4WLogicNodeTree", node="B4WLogicNode", sock="Jump_Dummy_Output_Socket")

Thank you !
09 December 2016 21:45 #14532
Hi Sunnix,
It's all in the Blender file. Look at the attached blend file, run the script and browse the NodeTree to see the result.

For Blender Scripting tutorials take a look at
12 December 2016 14:12 #14568
Hi bjk,
great, thank you very much for your attachment.
I've downloaded it on my windows7 desktop, opened it and run the script "blad1". I became the first 3 nodes diplayed in the nodes blender aera but at this point (line 26 in the script) the console displays an error : KeyError: 'bpy_prop_collection[key]: key "vd" not found'
(see screenshot attached)
I use Blender 2.76b and Blend4Web 16.02 SDK. could it be the reason of this trouble ?
Or should I copy your blend file in a specific folder before opening it ?

Thank you for your advice
12 December 2016 22:32 #14574
I think it's because of the old SDK version. File has been changed.
The latest version has the lines (from 1911)
                if "entryp" in self:
row.prop_search(self.variables_names["vd"], "variable",
self.id_data.nodes[self["entryp"]], 'variables', text=_('Var. name'))

In 'your' version you 'll find (from 1882)
                if "entryp" in self:
row.prop_search(self, "param_var_dest",
self.id_data.nodes[self["entryp"]], 'variables', text=_('Var. name'))

So in the script you can change line 26
regstore.variables_names['vd'].variable = "R2" 

regstore. param_var_dest = ”R2”
After line 26 you will certainly get more errors like this. Open the logic_node_tree files of both versions to find out what you have to change, or just download the latest SDK version
12 December 2016 22:46 #14575
Nice to see people interested in this topic
Blend4Web Team - developer
13 December 2016 17:36 #14600
Hi bjk,
Thank you very much for your help !
I'll download the last version to make it. Thanks again
Please register or log in to leave a reply.