Script: 3D Structural Roof Driven By Control Points

3D Structural Roof Driven By Control Points picture
Type
Rete logo indicatorrete
Date Created
Oct 3, 2024, 12:23:32 PM
Last Edit Date
May 9, 2025, 7:42:54 AM

Project Information

With the latest release we introduced support for BabylonJS gizmo manager, which allows you to move meshes in your scene. You can track the positions of such meshes and use them to create other types of geometry in real time. These movements can change your geometry in various ways and this project demonstrates few of the capabilities.

View Full Project

Script Code

{
  "id": "rete-v2-json",
  "nodes": {
    "2603321af859291c": {
      "id": "2603321af859291c",
      "name": "bitbybit.occt.shapes.wire.interpolatePoints",
      "customName": "interpolate",
      "async": true,
      "drawable": true,
      "data": {
        "genericNodeData": {
          "hide": true,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "periodic": false,
        "tolerance": 1e-7
      },
      "inputs": {
        "points": {
          "connections": [
            {
              "node": "f44e03d70f4c20f8",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        -935.9868326531307,
        2685.933358140276
      ]
    },
    "f44e03d70f4c20f8": {
      "id": "f44e03d70f4c20f8",
      "name": "bitbybit.code.jsonEditor",
      "customName": "json editor",
      "async": true,
      "drawable": true,
      "data": {
        "genericNodeData": {
          "hide": true,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": true
        },
        "code": {
          "code": "[\n    [\n        -32,\n        0,\n        -10\n    ],\n    [\n        -15,\n        0,\n        -5\n    ],\n    [\n        0,\n        0,\n        10\n    ],\n    [\n        32,\n        0,\n        10\n    ]\n]"
        }
      },
      "inputs": {},
      "position": [
        -1556.3532612906383,
        2723.2082211345787
      ]
    },
    "56699746c41068da": {
      "id": "56699746c41068da",
      "name": "bitbybit.occt.shapes.wire.divideWireByParamsToPoints",
      "customName": "points by params",
      "async": true,
      "drawable": true,
      "data": {
        "genericNodeData": {
          "hide": true,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "nrOfDivisions": 5,
        "removeStartPoint": false,
        "removeEndPoint": false
      },
      "inputs": {
        "shape": {
          "connections": [
            {
              "node": "2603321af859291c",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        -81.84153654645249,
        2424.974156665822
      ]
    },
    "8698aa61968f0753": {
      "id": "8698aa61968f0753",
      "name": "bitbybit.babylon.meshBuilder.createGoldberg",
      "customName": "create goldberg",
      "async": false,
      "drawable": true,
      "data": {
        "genericNodeData": {
          "hide": true,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "m": 1,
        "n": 1,
        "size": 0.5,
        "sizeX": 0,
        "sizeY": 0,
        "sizeZ": 0,
        "sideOrientation": "frontside",
        "enableShadows": true
      },
      "inputs": {},
      "position": [
        -977.3469626789534,
        1729.7221092748805
      ]
    },
    "5beaa31ac0b12cc1": {
      "id": "5beaa31ac0b12cc1",
      "name": "bitbybit.babylon.mesh.cloneToPositions",
      "customName": "clone to positions",
      "async": false,
      "drawable": true,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "positions": []
      },
      "inputs": {
        "positions": {
          "connections": [
            {
              "node": "56699746c41068da",
              "output": "result",
              "data": {}
            }
          ]
        },
        "babylonMesh": {
          "connections": [
            {
              "node": "8698aa61968f0753",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        466.4073770847728,
        2280.41604728442
      ]
    },
    "3f5b5f3901694b70": {
      "id": "3f5b5f3901694b70",
      "name": "bitbybit.babylon.gizmo.manager.createGizmoManager",
      "customName": "create gizmo manager",
      "async": false,
      "drawable": false,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "positionGizmoEnabled": true,
        "rotationGizmoEnabled": false,
        "scaleGizmoEnabled": false,
        "boundingBoxGizmoEnabled": false,
        "usePointerToAttachGizmos": true,
        "clearGizmoOnEmptyPointerEvent": true,
        "scaleRatio": 0.5
      },
      "inputs": {
        "attachableMeshes": {
          "connections": [
            {
              "node": "5beaa31ac0b12cc1",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        1246.471038780341,
        3372.058372046561
      ]
    },
    "cc2ab51934745ecb": {
      "id": "cc2ab51934745ecb",
      "name": "bitbybit.babylon.gizmo.manager.getPositionGizmo",
      "customName": "get position gizmo",
      "async": false,
      "drawable": false,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        }
      },
      "inputs": {
        "gizmoManager": {
          "connections": [
            {
              "node": "3f5b5f3901694b70",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        1631.786804644318,
        3369.9652796475034
      ]
    },
    "ff32cb865a2ca86d": {
      "id": "ff32cb865a2ca86d",
      "name": "bitbybit.babylon.gizmo.positionGizmo.getXGizmo",
      "customName": "get x gizmo",
      "async": false,
      "drawable": false,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        }
      },
      "inputs": {
        "positionGizmo": {
          "connections": [
            {
              "node": "cc2ab51934745ecb",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        2229.7476101575708,
        4268.659411931366
      ]
    },
    "029d08c7be601ddb": {
      "id": "029d08c7be601ddb",
      "name": "bitbybit.babylon.gizmo.positionGizmo.getZGizmo",
      "customName": "get z gizmo",
      "async": false,
      "drawable": false,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        }
      },
      "inputs": {
        "positionGizmo": {
          "connections": [
            {
              "node": "cc2ab51934745ecb",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        2228.1755855872216,
        4545.157392082679
      ]
    },
    "a99a803dcd4eb00a": {
      "id": "a99a803dcd4eb00a",
      "name": "bitbybit.babylon.gizmo.axisDragGizmo.setIsEnabled",
      "customName": "set is axis enabled",
      "async": false,
      "drawable": false,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "isEnabled": false
      },
      "inputs": {
        "axisDragGizmo": {
          "connections": [
            {
              "node": "ff32cb865a2ca86d",
              "output": "result",
              "data": {}
            },
            {
              "node": "029d08c7be601ddb",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        2616.8267591253157,
        4428.969423338504
      ]
    },
    "cbb0372479833f26": {
      "id": "cbb0372479833f26",
      "name": "bitbybit.flow.babylon.observableListener",
      "customName": "babylon observable listener",
      "data": {},
      "inputs": {
        "object": {
          "connections": [
            {
              "node": "cc2ab51934745ecb",
              "output": "result",
              "data": {}
            }
          ]
        },
        "observableSelector": {
          "connections": [
            {
              "node": "18e1c7ad6c5fd7e0",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        4288.0802825596,
        5440.635605972712
      ]
    },
    "18e1c7ad6c5fd7e0": {
      "id": "18e1c7ad6c5fd7e0",
      "name": "bitbybit.babylon.gizmo.positionGizmo.createPositionGizmoObservableSelector",
      "customName": "position gizmo observable selector",
      "async": false,
      "drawable": false,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "selector": "onDragEndObservable"
      },
      "inputs": {},
      "position": [
        3644.469943761036,
        5535.429154449998
      ]
    },
    "cc84e46d0c9e5e93": {
      "id": "cc84e46d0c9e5e93",
      "name": "bitbybit.babylon.mesh.getPosition",
      "customName": "position",
      "async": false,
      "drawable": false,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": true
        }
      },
      "inputs": {
        "babylonMesh": {
          "connections": [
            {
              "node": "0771489144d165d8",
              "output": "result",
              "data": {}
            }
          ]
        },
        "exec": {
          "connections": [
            {
              "node": "cbb0372479833f26",
              "output": "exec",
              "data": {}
            }
          ]
        }
      },
      "position": [
        5835.6977447521285,
        4988.595895577259
      ]
    },
    "0771489144d165d8": {
      "id": "0771489144d165d8",
      "name": "bitbybit.lists.flatten",
      "customName": "flatten",
      "data": {
        "nrLevels": 1
      },
      "inputs": {
        "list": {
          "connections": [
            {
              "node": "5beaa31ac0b12cc1",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        4754.19477173895,
        4390.829235847128
      ]
    },
    "88dc327604568974": {
      "id": "88dc327604568974",
      "name": "bitbybit.lists.createList",
      "customName": "create list",
      "data": {},
      "inputs": {
        "listElements": {
          "connections": [
            {
              "node": "cc84e46d0c9e5e93",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        6165.736793330634,
        5023.751970974189
      ]
    },
    "b1deb669dadc2620": {
      "id": "b1deb669dadc2620",
      "name": "bitbybit.occt.shapes.wire.interpolatePoints",
      "customName": "interpolate",
      "async": true,
      "drawable": true,
      "data": {
        "genericNodeData": {
          "hide": true,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "periodic": false,
        "tolerance": 1e-7
      },
      "inputs": {
        "points": {
          "connections": [
            {
              "node": "88dc327604568974",
              "output": "list",
              "data": {}
            }
          ]
        }
      },
      "position": [
        6455.514346347646,
        4983.865314256876
      ]
    },
    "9c882e0a2cb6022e": {
      "id": "9c882e0a2cb6022e",
      "name": "bitbybit.flow.counters.counterMinMax",
      "customName": "counter min max",
      "data": {
        "count": 0,
        "min": 0,
        "max": 360,
        "step": 1,
        "pulse": false,
        "end": false
      },
      "inputs": {
        "exec": {
          "connections": [
            {
              "node": "3f6fe8029931f67b",
              "output": "exec",
              "data": {}
            }
          ]
        },
        "max": {
          "connections": [
            {
              "node": "fe7030cd999aacc5",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        4334.3498223875595,
        1121.3066705472806
      ]
    },
    "3f6fe8029931f67b": {
      "id": "3f6fe8029931f67b",
      "name": "bitbybit.flow.babylon.observableListener",
      "customName": "babylon observable listener",
      "data": {},
      "inputs": {
        "observableSelector": {
          "connections": [
            {
              "node": "b4cfaaf49110f15c",
              "output": "result",
              "data": {}
            }
          ]
        },
        "object": {
          "connections": [
            {
              "node": "cc2ab51934745ecb",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        3784.2832780219455,
        1282.0405988337222
      ]
    },
    "b4cfaaf49110f15c": {
      "id": "b4cfaaf49110f15c",
      "name": "bitbybit.babylon.gizmo.positionGizmo.createPositionGizmoObservableSelector",
      "customName": "position gizmo observable selector",
      "async": false,
      "drawable": false,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "selector": "onDragObservable"
      },
      "inputs": {},
      "position": [
        2961.1048086877086,
        1281.9084044847234
      ]
    },
    "088e5d5f7c4d3a33": {
      "id": "088e5d5f7c4d3a33",
      "name": "bitbybit.logic.compare",
      "customName": "compare",
      "async": false,
      "drawable": false,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": true
        },
        "operator": "=="
      },
      "inputs": {
        "first": {
          "connections": [
            {
              "node": "9c882e0a2cb6022e",
              "output": "result",
              "data": {}
            }
          ]
        },
        "exec": {
          "connections": [
            {
              "node": "9c882e0a2cb6022e",
              "output": "exec",
              "data": {}
            }
          ]
        },
        "second": {
          "connections": [
            {
              "node": "fe7030cd999aacc5",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        5045.186291997142,
        895.1534759884842
      ]
    },
    "fe7030cd999aacc5": {
      "id": "fe7030cd999aacc5",
      "name": "bitbybit.math.number",
      "customName": "number",
      "async": false,
      "drawable": false,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "number": 10
      },
      "inputs": {},
      "position": [
        3670.5943100753298,
        928.84209312544
      ]
    },
    "adae57d2855e8ff1": {
      "id": "adae57d2855e8ff1",
      "name": "bitbybit.flow.logic.booleanGate",
      "customName": "boolean gate",
      "data": {
        "boolean": false
      },
      "inputs": {
        "exec": {
          "connections": [
            {
              "node": "088e5d5f7c4d3a33",
              "output": "exec",
              "data": {}
            }
          ]
        },
        "boolean": {
          "connections": [
            {
              "node": "088e5d5f7c4d3a33",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        5470.190924375926,
        924.6745805552491
      ]
    },
    "387fda9b3d75efa2": {
      "id": "387fda9b3d75efa2",
      "name": "bitbybit.babylon.mesh.getPosition",
      "customName": "position",
      "async": false,
      "drawable": false,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": true
        }
      },
      "inputs": {
        "babylonMesh": {
          "connections": [
            {
              "node": "0771489144d165d8",
              "output": "result",
              "data": {}
            }
          ]
        },
        "exec": {
          "connections": [
            {
              "node": "adae57d2855e8ff1",
              "output": "execTrue",
              "data": {}
            }
          ]
        }
      },
      "position": [
        6054.255365490857,
        845.6847785216047
      ]
    },
    "73b310372717f215": {
      "id": "73b310372717f215",
      "name": "bitbybit.occt.shapes.wire.interpolatePoints",
      "customName": "interpolate",
      "async": true,
      "drawable": true,
      "data": {
        "genericNodeData": {
          "hide": true,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "periodic": false,
        "tolerance": 1e-7
      },
      "inputs": {
        "points": {
          "connections": [
            {
              "node": "a18ee1211bcc6ff6",
              "output": "list",
              "data": {}
            }
          ]
        },
        "exec": {
          "connections": [
            {
              "node": "a18ee1211bcc6ff6",
              "output": "exec",
              "data": {}
            }
          ]
        }
      },
      "position": [
        6866.215086464819,
        804.3675130655216
      ]
    },
    "a18ee1211bcc6ff6": {
      "id": "a18ee1211bcc6ff6",
      "name": "bitbybit.lists.createList",
      "customName": "create list",
      "data": {},
      "inputs": {
        "listElements": {
          "connections": [
            {
              "node": "387fda9b3d75efa2",
              "output": "result",
              "data": {}
            }
          ]
        },
        "exec": {
          "connections": [
            {
              "node": "387fda9b3d75efa2",
              "output": "exec",
              "data": {}
            }
          ]
        }
      },
      "position": [
        6462.91736378674,
        895.480029096713
      ]
    },
    "c55a21fd94a12eaf": {
      "id": "c55a21fd94a12eaf",
      "name": "bitbybit.draw.drawAnyAsync",
      "customName": "draw async",
      "async": true,
      "drawable": true,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        }
      },
      "inputs": {
        "exec": {
          "connections": [
            {
              "node": "73b310372717f215",
              "output": "exec",
              "data": {}
            }
          ]
        },
        "options": {
          "connections": [
            {
              "node": "739d72f5c3efa87e",
              "output": "result",
              "data": {}
            }
          ]
        },
        "entity": {
          "connections": [
            {
              "node": "73b310372717f215",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        7261.615551999211,
        745.1438046761411
      ]
    },
    "581f23322de7a035": {
      "id": "581f23322de7a035",
      "name": "bitbybit.babylon.mesh.hide",
      "customName": "hide",
      "async": false,
      "drawable": false,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "includeChildren": true
      },
      "inputs": {
        "babylonMesh": {
          "connections": [
            {
              "node": "c55a21fd94a12eaf",
              "output": "result",
              "data": {}
            }
          ]
        },
        "exec": {
          "connections": [
            {
              "node": "cbb0372479833f26",
              "output": "exec",
              "data": {}
            }
          ]
        }
      },
      "position": [
        7740.8762036295075,
        957.1530760238478
      ]
    },
    "68aecf6d83a3bc2c": {
      "id": "68aecf6d83a3bc2c",
      "name": "bitbybit.babylon.mesh.show",
      "customName": "show",
      "async": false,
      "drawable": false,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "includeChildren": true
      },
      "inputs": {
        "exec": {
          "connections": [
            {
              "node": "c55a21fd94a12eaf",
              "output": "exec",
              "data": {}
            }
          ]
        }
      },
      "position": [
        7729.787352025913,
        621.870970417277
      ]
    },
    "13670cd5abee487f": {
      "id": "13670cd5abee487f",
      "name": "bitbybit.occt.transforms.translate",
      "customName": "translate",
      "async": true,
      "drawable": true,
      "data": {
        "genericNodeData": {
          "hide": true,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "translation": [
          0,
          0,
          0
        ]
      },
      "inputs": {
        "shape": {
          "connections": [
            {
              "node": "2603321af859291c",
              "output": "result",
              "data": {}
            }
          ]
        },
        "translation": {
          "connections": [
            {
              "node": "d00cada85b222992",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        6909.867417508643,
        3636.365779525158
      ]
    },
    "d00cada85b222992": {
      "id": "d00cada85b222992",
      "name": "bitbybit.vector.vectorXYZ",
      "customName": "vector XYZ",
      "async": false,
      "drawable": true,
      "data": {
        "genericNodeData": {
          "hide": true,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "x": 0,
        "y": 0,
        "z": 20
      },
      "inputs": {
        "z": {
          "connections": [
            {
              "node": "1e6740c3b3a85b7d",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        6547.273017995997,
        3834.850020366361
      ]
    },
    "ad6a075b0e4247e6": {
      "id": "ad6a075b0e4247e6",
      "name": "bitbybit.occt.transforms.translate",
      "customName": "translate",
      "async": true,
      "drawable": true,
      "data": {
        "genericNodeData": {
          "hide": true,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "translation": [
          0,
          0,
          0
        ]
      },
      "inputs": {
        "translation": {
          "connections": [
            {
              "node": "f302ca35bdb3d4e1",
              "output": "result",
              "data": {}
            }
          ]
        },
        "shape": {
          "connections": [
            {
              "node": "2603321af859291c",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        6954.175205691483,
        4123.137653376864
      ]
    },
    "3e189867eb825eae": {
      "id": "3e189867eb825eae",
      "name": "bitbybit.math.negate",
      "customName": "negate",
      "async": false,
      "drawable": false,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "number": 1
      },
      "inputs": {
        "number": {
          "connections": [
            {
              "node": "1e6740c3b3a85b7d",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        6179.779174707313,
        4395.255811034627
      ]
    },
    "1e6740c3b3a85b7d": {
      "id": "1e6740c3b3a85b7d",
      "name": "bitbybit.math.number",
      "customName": "number",
      "async": false,
      "drawable": false,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "number": 20
      },
      "inputs": {},
      "position": [
        5740.375450868789,
        4273.370541959771
      ]
    },
    "f302ca35bdb3d4e1": {
      "id": "f302ca35bdb3d4e1",
      "name": "bitbybit.vector.vectorXYZ",
      "customName": "vector XYZ",
      "async": false,
      "drawable": true,
      "data": {
        "genericNodeData": {
          "hide": true,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "x": 0,
        "y": 0,
        "z": 20
      },
      "inputs": {
        "z": {
          "connections": [
            {
              "node": "3e189867eb825eae",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        6574.625549335163,
        4322.1892802877555
      ]
    },
    "d3b35cc343f16ac7": {
      "id": "d3b35cc343f16ac7",
      "name": "bitbybit.occt.operations.loft",
      "customName": "loft",
      "async": true,
      "drawable": true,
      "data": {
        "genericNodeData": {
          "hide": true,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "makeSolid": false
      },
      "inputs": {
        "shapes": {
          "connections": [
            {
              "node": "1bba7c7362ccdf2f",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        9394.895919425933,
        4375.262149038021
      ]
    },
    "9d96abaf204822ee": {
      "id": "9d96abaf204822ee",
      "name": "bitbybit.lists.createList",
      "customName": "create list",
      "data": {},
      "inputs": {
        "listElements": {
          "connections": [
            {
              "node": "ad6a075b0e4247e6",
              "output": "result",
              "data": {}
            },
            {
              "node": "b1deb669dadc2620",
              "output": "result",
              "data": {}
            },
            {
              "node": "13670cd5abee487f",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        8639.599059834856,
        4416.328455132772
      ]
    },
    "1bba7c7362ccdf2f": {
      "id": "1bba7c7362ccdf2f",
      "name": "bitbybit.lists.reverse",
      "customName": "reverse",
      "async": false,
      "drawable": false,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "clone": true
      },
      "inputs": {
        "list": {
          "connections": [
            {
              "node": "9d96abaf204822ee",
              "output": "list",
              "data": {}
            }
          ]
        }
      },
      "position": [
        9024.812659214622,
        4378.280286021756
      ]
    },
    "eae6ec6599810d28": {
      "id": "eae6ec6599810d28",
      "name": "bitbybit.occt.transforms.translate",
      "customName": "translate",
      "async": true,
      "drawable": true,
      "data": {
        "genericNodeData": {
          "hide": true,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "translation": [
          0,
          0,
          0
        ]
      },
      "inputs": {
        "translation": {
          "connections": [
            {
              "node": "7ed758754391422b",
              "output": "result",
              "data": {}
            }
          ]
        },
        "shape": {
          "connections": [
            {
              "node": "d3b35cc343f16ac7",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        9794.736991722291,
        4543.002914071538
      ]
    },
    "7ed758754391422b": {
      "id": "7ed758754391422b",
      "name": "bitbybit.vector.vectorXYZ",
      "customName": "vector XYZ",
      "async": false,
      "drawable": true,
      "data": {
        "genericNodeData": {
          "hide": true,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "x": 0,
        "y": -4,
        "z": 0
      },
      "inputs": {},
      "position": [
        9397.645341360447,
        4686.196412594997
      ]
    },
    "8d3d368d827b2f99": {
      "id": "8d3d368d827b2f99",
      "name": "bitbybit.occt.shapes.face.getFace",
      "customName": "face",
      "async": true,
      "drawable": true,
      "data": {
        "genericNodeData": {
          "hide": true,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "index": 0
      },
      "inputs": {
        "shape": {
          "connections": [
            {
              "node": "eae6ec6599810d28",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        10160.200896587987,
        4542.28915904675
      ]
    },
    "d7b3120495fa5a4f": {
      "id": "d7b3120495fa5a4f",
      "name": "bitbybit.json.parse",
      "customName": "parse",
      "async": false,
      "drawable": false,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "text": "[0.9]"
      },
      "inputs": {},
      "position": [
        10161.096160891531,
        4854.984041092913
      ]
    },
    "b3458974a8d6a5f9": {
      "id": "b3458974a8d6a5f9",
      "name": "bitbybit.babylon.mesh.hide",
      "customName": "hide",
      "async": false,
      "drawable": false,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "includeChildren": true
      },
      "inputs": {
        "babylonMesh": {
          "connections": [
            {
              "node": "8698aa61968f0753",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        -508.88301178976855,
        2336.3354552009187
      ]
    },
    "ceab28bb3db66972": {
      "id": "ceab28bb3db66972",
      "name": "bitbybit.occt.shapes.face.subdivideToRectangleHoles",
      "customName": "rectangle holes on face",
      "async": true,
      "drawable": true,
      "data": {
        "genericNodeData": {
          "hide": true,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "nrRectanglesU": 10,
        "nrRectanglesV": 10,
        "holesToFaces": true,
        "offsetFromBorderU": 0,
        "offsetFromBorderV": 0
      },
      "inputs": {
        "scalePatternU": {
          "connections": [
            {
              "node": "d7b3120495fa5a4f",
              "output": "result",
              "data": {}
            }
          ]
        },
        "scalePatternV": {
          "connections": [
            {
              "node": "d7b3120495fa5a4f",
              "output": "result",
              "data": {}
            }
          ]
        },
        "shape": {
          "connections": [
            {
              "node": "8d3d368d827b2f99",
              "output": "result",
              "data": {}
            }
          ]
        },
        "filletPattern": {
          "connections": [
            {
              "node": "3abb8baf9ed4edc6",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        10731.138713501849,
        4796.032635785045
      ]
    },
    "ac2e2cd69c8b5cae": {
      "id": "ac2e2cd69c8b5cae",
      "name": "bitbybit.lists.removeItemAtIndex",
      "customName": "remove item",
      "async": false,
      "drawable": false,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "index": 0,
        "clone": true
      },
      "inputs": {
        "list": {
          "connections": [
            {
              "node": "ceab28bb3db66972",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        11179.833896279943,
        5156.999407259542
      ]
    },
    "f4fed924cd3831e3": {
      "id": "f4fed924cd3831e3",
      "name": "bitbybit.occt.operations.makeThickSolidSimple",
      "customName": "thicken",
      "async": true,
      "drawable": true,
      "data": {
        "genericNodeData": {
          "hide": true,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "offset": 1
      },
      "inputs": {
        "shape": {
          "connections": [
            {
              "node": "1c312de55edafa67",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        11876.454763782267,
        5154.699332295322
      ]
    },
    "1c312de55edafa67": {
      "id": "1c312de55edafa67",
      "name": "bitbybit.lists.flatten",
      "customName": "flatten",
      "data": {
        "nrLevels": 1
      },
      "inputs": {
        "list": {
          "connections": [
            {
              "node": "ac2e2cd69c8b5cae",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        11528.661469744666,
        5193.415669311626
      ]
    },
    "c0ca70830f63f214": {
      "id": "c0ca70830f63f214",
      "name": "bitbybit.draw.drawAnyAsync",
      "customName": "draw async",
      "async": true,
      "drawable": true,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        }
      },
      "inputs": {
        "options": {
          "connections": [
            {
              "node": "6d8bcfe2f21d68e5",
              "output": "result",
              "data": {}
            }
          ]
        },
        "entity": {
          "connections": [
            {
              "node": "b1deb669dadc2620",
              "output": "result",
              "data": {}
            }
          ]
        },
        "exec": {
          "connections": [
            {
              "node": "cbb0372479833f26",
              "output": "exec",
              "data": {}
            }
          ]
        }
      },
      "position": [
        7243.165273110032,
        5928.900027731704
      ]
    },
    "6d8bcfe2f21d68e5": {
      "id": "6d8bcfe2f21d68e5",
      "name": "bitbybit.draw.optionsOcctShapeSimple",
      "customName": "occt shape simple",
      "async": false,
      "drawable": false,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "precision": 0.01,
        "drawFaces": false,
        "faceColour": "#ff0000",
        "drawEdges": true,
        "edgeColour": "#11ff00",
        "edgeWidth": 20
      },
      "inputs": {},
      "position": [
        6633.689801079033,
        5598.610084651518
      ]
    },
    "a9346475dfd2ef3b": {
      "id": "a9346475dfd2ef3b",
      "name": "bitbybit.babylon.scene.drawDirectionalLight",
      "customName": "directional light",
      "async": false,
      "drawable": false,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "direction": [
          -100,
          -100,
          -100
        ],
        "intensity": 3,
        "diffuse": "#ffffff",
        "specular": "#ffffff",
        "shadowGeneratorMapSize": 2056,
        "enableShadows": true,
        "shadowDarkness": 0,
        "shadowUsePercentageCloserFiltering": true,
        "shadowContactHardeningLightSizeUVRatio": 0.2,
        "shadowBias": 0.0003,
        "shadowNormalBias": 0.002,
        "shadowMaxZ": 1000,
        "shadowMinZ": 0
      },
      "inputs": {},
      "position": [
        -1616.8120298040851,
        4143.678042931654
      ]
    },
    "3f1719fa403897db": {
      "id": "3f1719fa403897db",
      "name": "bitbybit.babylon.scene.enableSkybox",
      "customName": "skybox",
      "async": false,
      "drawable": false,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "skybox": "clearSky",
        "size": 1000,
        "blur": 0.5,
        "environmentIntensity": 0.7
      },
      "inputs": {},
      "position": [
        -2004.4694856060073,
        4405.645017713094
      ]
    },
    "9dd477cb7d376c03": {
      "id": "9dd477cb7d376c03",
      "name": "bitbybit.occt.shapes.face.createCircleFace",
      "customName": "circle",
      "async": true,
      "drawable": true,
      "data": {
        "genericNodeData": {
          "hide": true,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "radius": 60,
        "center": [
          0,
          0,
          0
        ],
        "direction": [
          0,
          1,
          0
        ]
      },
      "inputs": {
        "center": {
          "connections": [
            {
              "node": "c1ef4b013b4857fa",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        49.60387539817907,
        5086.500371768862
      ]
    },
    "c1ef4b013b4857fa": {
      "id": "c1ef4b013b4857fa",
      "name": "bitbybit.vector.vectorXYZ",
      "customName": "vector XYZ",
      "async": false,
      "drawable": true,
      "data": {
        "genericNodeData": {
          "hide": true,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "x": 0,
        "y": -20,
        "z": 0
      },
      "inputs": {},
      "position": [
        -320.47392307777676,
        5124.624737828461
      ]
    },
    "bb88d561b53c0e3e": {
      "id": "bb88d561b53c0e3e",
      "name": "bitbybit.babylon.material.pbrMetallicRoughness.create",
      "customName": "pbr material",
      "async": false,
      "drawable": false,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "name": "Custom Material",
        "baseColor": "#000000",
        "emissiveColor": "#000000",
        "metallic": 0.6,
        "roughness": 0.5,
        "alpha": 1,
        "backFaceCulling": false,
        "zOffset": 2
      },
      "inputs": {},
      "position": [
        -321.2260536054992,
        5483.788181827284
      ]
    },
    "aa946c4600c83896": {
      "id": "aa946c4600c83896",
      "name": "bitbybit.draw.optionsOcctShapeMaterial",
      "customName": "occt shape with material",
      "async": false,
      "drawable": false,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "precision": 0.01,
        "drawEdges": true,
        "edgeColour": "#ffffff",
        "edgeWidth": 2
      },
      "inputs": {
        "faceMaterial": {
          "connections": [
            {
              "node": "bb88d561b53c0e3e",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        48.21027839280944,
        5448.388406857614
      ]
    },
    "3abb8baf9ed4edc6": {
      "id": "3abb8baf9ed4edc6",
      "name": "bitbybit.json.parse",
      "customName": "parse",
      "async": false,
      "drawable": false,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "text": "[0.6]"
      },
      "inputs": {},
      "position": [
        10353.199174731106,
        5126.730587634254
      ]
    },
    "5da52c85dd85b840": {
      "id": "5da52c85dd85b840",
      "name": "bitbybit.draw.drawAnyAsync",
      "customName": "draw async",
      "async": true,
      "drawable": true,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        }
      },
      "inputs": {
        "entity": {
          "connections": [
            {
              "node": "9dd477cb7d376c03",
              "output": "result",
              "data": {}
            }
          ]
        },
        "options": {
          "connections": [
            {
              "node": "aa946c4600c83896",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        636.2385447653305,
        5135.092829428861
      ]
    },
    "6c7a4671bec97400": {
      "id": "6c7a4671bec97400",
      "name": "bitbybit.occt.shapes.compound.makeCompound",
      "customName": "make",
      "async": true,
      "drawable": true,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        }
      },
      "inputs": {
        "exec": {
          "connections": [
            {
              "node": "cbb0372479833f26",
              "output": "exec",
              "data": {}
            }
          ]
        },
        "shapes": {
          "connections": [
            {
              "node": "7a854c44eee7f7f1",
              "output": "list",
              "data": {}
            }
          ]
        }
      },
      "position": [
        12633.728380524226,
        5399.220008268812
      ]
    },
    "7a854c44eee7f7f1": {
      "id": "7a854c44eee7f7f1",
      "name": "bitbybit.lists.createList",
      "customName": "create list",
      "data": {},
      "inputs": {
        "listElements": {
          "connections": [
            {
              "node": "f4fed924cd3831e3",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        12234.182651893216,
        5251.814623266402
      ]
    },
    "739d72f5c3efa87e": {
      "id": "739d72f5c3efa87e",
      "name": "bitbybit.draw.optionsOcctShapeSimple",
      "customName": "occt shape simple",
      "async": false,
      "drawable": false,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "precision": 0.01,
        "drawFaces": false,
        "faceColour": "#ff0000",
        "drawEdges": true,
        "edgeColour": "#ffae00",
        "edgeWidth": 20
      },
      "inputs": {},
      "position": [
        6814.017702334545,
        298.86930015459416
      ]
    },
    "55f2f543b6dd4c78": {
      "id": "55f2f543b6dd4c78",
      "name": "bitbybit.babylon.mesh.show",
      "customName": "show",
      "async": false,
      "drawable": false,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "includeChildren": true
      },
      "inputs": {
        "babylonMesh": {
          "connections": [
            {
              "node": "5c76720fa2f583d6",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        1557.2709613308507,
        2146.356625503563
      ]
    },
    "5c76720fa2f583d6": {
      "id": "5c76720fa2f583d6",
      "name": "bitbybit.lists.flatten",
      "customName": "flatten",
      "data": {
        "nrLevels": 1
      },
      "inputs": {
        "list": {
          "connections": [
            {
              "node": "5beaa31ac0b12cc1",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        1086.4130661732072,
        2120.348665705799
      ]
    },
    "cc595c2f1ac9b93b": {
      "id": "cc595c2f1ac9b93b",
      "name": "bitbybit.babylon.mesh.setMaterial",
      "customName": "material",
      "async": false,
      "drawable": false,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "includeChildren": false
      },
      "inputs": {
        "babylonMesh": {
          "connections": [
            {
              "node": "5c76720fa2f583d6",
              "output": "result",
              "data": {}
            }
          ]
        },
        "material": {
          "connections": [
            {
              "node": "ddc8a50424520f0d",
              "output": "result",
              "data": {}
            }
          ]
        }
      },
      "position": [
        1621.5883976119562,
        1488.9528678576928
      ]
    },
    "ddc8a50424520f0d": {
      "id": "ddc8a50424520f0d",
      "name": "bitbybit.babylon.material.pbrMetallicRoughness.create",
      "customName": "pbr material",
      "async": false,
      "drawable": false,
      "data": {
        "genericNodeData": {
          "hide": false,
          "oneOnOne": false,
          "flatten": 0,
          "forceExecution": false
        },
        "name": "Custom Material",
        "baseColor": "#0400ff",
        "emissiveColor": "#000000",
        "metallic": 0.3,
        "roughness": 0.5,
        "alpha": 1,
        "backFaceCulling": false,
        "zOffset": 0
      },
      "inputs": {},
      "position": [
        1095.2027326266582,
        1537.3352265075814
      ]
    }
  }
}
Plans & Pricing

Choose Your Plan

Editor plans for 3D development, API keys for server-side CAD algorithms

B2B

ENTERPRISE

Custom pricing

Custom software development, dedicated servers & CAD automation at scale.

CAD Automation & Software
  • Custom software development
  • Cloud CAD automation pipelines
  • 3D configurators (STEP & GLTF)
  • Batch export jobs
  • Custom algorithms & deployment
Infrastructure & Support
  • Custom compute allocation
  • Dedicated / VPS server tenants
  • Long-running computation jobs
  • Custom upload limits & overage
  • SLA & premium support