# Wizard Blocks

**URL:** <https://tech-community.robotics.abb.com/t/wizard-blocks/15055>\
**Category:** Wizard Easy Programming\
**Tags:** skill-creator\
**Created:** [July 10, 2026, 1:43pm UTC](https://tech-community.robotics.abb.com/t/wizard-blocks/15055 "2026-07-10T13:43:01Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jur](https://dub1.discourse-cdn.com/flex005/user_avatar/tech-community.robotics.abb.com/jur/32/4670_2.png) [@Jur](https://tech-community.robotics.abb.com/u/Jur)\
**Post date:** [July 10, 2026, 1:43pm UTC](https://tech-community.robotics.abb.com/t/wizard-blocks/15055/1 "2026-07-10T13:43:01Z")

</div>

I’m currently working on creating blocks for the wizard, but I’ve run into an issue. When creating the blocks, I can’t access the variables of a record that’s stored in an array. How can I implement this? Right now, the only option I see is using a dropdown, but I’d rather avoid that because an operator should be able to create new variables instead of being limited to selecting existing ones.

PERS multidata mdA7{3}:= [  
[10,0,0,0],  
[4,0,0,6],  
[0,4,10,6]  
];

RECORD multidata  
num offsetVertical;  
num offsetHorizontal;  
num offsetAngle;  
num offsetStartEnd;  
ENDRECORD

{

“blockType”: “WeldMoveLinear\_\*2”,

“instructionName”: “WeldMoveLinear”,

“blockDefinition”: {

“initJson”: {

“type”: “WeldMoveLinear\_\*2”,

“message0”: “Weld linear to %1 using %2 and %3 %4”,

“args0”: [

{

“type”: “field\_coblox\_variable”,

“name”: “ToPoint”,

“varType”: “Location”

},

{

“type”: “field\_coblox\_variable”,

“name”: “wiSeamdata”,

“varType”: “Seamdata”,

“options”: “”

},

{

“type”: “field\_coblox\_variable”,

“name”: “wiWelddata”,

“varType”: “Welddata”,

“options”: “”

},

{

“type”: “field\_plusminus”,

“name”: “HAS\_OPTIONAL”

}

],

“mutator”: “optional\_block\_mutator”,

“inputsInline”: true,

“previousStatement”: null,

“nextStatement”: null,

“colour”: “#5c29cc”,

“tooltip”: “”,

“helpUrl”: “”,

“blockinformation”: {

“description”: “”,

“webappname”: “”,

“additionalinformation”: “”

},

“bindIf”: false,

“expandOptParams”: false

},

“selectedDPItem”: {

“wiSeamdata”: “”,

“wiWelddata”: “”

},

“colour”: “#5c29cc”

},

“optBlockDefinition”: {

“initJson”: {

“type”: “WeldMoveLinear\_\*2\_#opt”,

“message0”: "\\wmWeaveData := %1 \\wmMultiData := %2 ",

“args0”: [

{

“type”: “field\_coblox\_variable”,

“name”: “wmWeaveData”,

“varType”: “Weavedata”,

“options”: “disable”

},

{

“type”: “field\_coblox\_variable”,

“name”: “wmMultiData”,

“varType”: “MultiData”,

“options”: “disable”

}

],

“output”: “Optional”,

“colour”: “#5c29cc”,

“tooltip”: “”,

“helpUrl”: “”

},

“colour”: “#5c29cc”

},

“blockGenerator”: “function(block) {\n var ToPoint = block.getFieldValue(‘ToPoint’);\n var wiSeamdata = block.getFieldValue(‘wiSeamdata’);\n var wiWelddata = block.getFieldValue(‘wiWelddata’);\nif (block.getInputTargetBlock(‘OPTIONAL’) != null) {\n var optional = {}\n for (const iterator of block.getInputTargetBlock(‘OPTIONAL’).inputList[0].fieldRow) {\n if (iterator instanceof Blockly.FieldLabel) continue\n optional[iterator.name] = { name: iterator.name, value: iterator.value\_ }\n }\n}\n let instrName = block.type.split(\”\_\*\“);\n var \_res = ToPoint+‘,’+wiSeamdata+‘,’+wiWelddata+‘,’+(optional && optional.wmWeaveData && optional.wmWeaveData.value != ‘disable’? (optional.wmWeaveData.value == ‘enable’?(‘\\\\’ + optional.wmWeaveData.name+‘,’):(‘\\\\’ + optional.wmWeaveData.name + ‘:=’ + optional.wmWeaveData.value+‘,’)): ‘’)+(optional && optional.wmMultiData && optional.wmMultiData.value != ‘disable’? (optional.wmMultiData.value == ‘enable’?(‘\\\\’ + optional.wmMultiData.name+‘,’):(‘\\\\’ + optional.wmMultiData.name + ‘:=’ + optional.wmMultiData.value+‘,’)): ‘’);\n \_res = (typeof \_res).toLowerCase()==‘string’?\_res.substr(-1)== ‘,’? \_res.slice(0,-1):\_res:\_res;\n var code = \“ID:\” + block.id + \” \" + instrName[0]+ \" \" + \_res + \“;\\n\”;\n return code;\n}",

“sortedFields”: [

{

“type”: “shown”,

“fieldName”: “ToPoint”

},

{

“type”: “shown”,

“fieldName”: “wiSeamdata”

},

{

“type”: “shown”,

“fieldName”: “wiWelddata”

},

{

“type”: “shown”,

“fieldName”: “wmWeaveData”

},

{

“type”: “shown”,

“fieldName”: “wmMultiData”

}

],

“inputBCArray”: [

{

“text”: "Weld linear to ",

“type”: 0,

“label”: “field\_static”

},

{

“text”: “ToPoint”,

“type”: 1,

“label”: “field\_location”

},

{

“text”: " using ",

“type”: 0,

“label”: “field\_static”

},

{

“text”: “wiSeamdata”,

“type”: 1,

“label”: “field\_dropdown\_custom”

},

{

“text”: " and ",

“type”: 0,

“label”: “field\_static”

},

{

“text”: “wiWelddata”,

“type”: 1,

“label”: “field\_dropdown\_custom”

},

{

“text”: " ",

“type”: 0,

“label”: “field\_static”

}

],

“inputOptBCArray”: [

{

“text”: "\\wmWeaveData := ",

“type”: 0,

“label”: “field\_static”

},

{

“text”: “Weavedata”,

“type”: 1,

“label”: “field\_dropdown\_custom”

},

{

“text”: " \\wmMultiData := ",

“type”: 0,

“label”: “field\_static”

},

{

“text”: “wmMultiData”,

“type”: 1,

“label”: “field\_dropdown\_custom”

},

{

“text”: " ",

“type”: 0,

“label”: “field\_static”

}

],

“addedFields”: [

{

“text”: “ToPoint”,

“label”: “field\_location”,

“defaultValue”: “somewhere”,

“bOptional”: false

},

{

“text”: “wiSeamdata”,

“label”: “field\_dropdown\_custom”,

“defaultValue”: “Seamdata”,

“bOptional”: false

},

{

“text”: “wiWelddata”,

“label”: “field\_dropdown\_custom”,

“defaultValue”: “Welddata”,

“bOptional”: false

}

],

“addedOptFields”: [

{

“text”: “Weavedata”,

“label”: “field\_dropdown\_custom”,

“defaultValue”: “Weavedata”,

“bOptional”: true

},

{

“text”: “wmMultiData”,

“label”: “field\_dropdown\_custom”,

“defaultValue”: “Multidata”,

“bOptional”: true

}

],

“hasOptionalBlock”: true,

“defaultLang”: “”,

“allBCofLangs”: {}

},
