Skip to content

Instantly share code, notes, and snippets.

@eduo
Created December 18, 2025 22:02
Show Gist options
  • Select an option

  • Save eduo/453d3fd306a0c4f078602fdc6c548b2d to your computer and use it in GitHub Desktop.

Select an option

Save eduo/453d3fd306a0c4f078602fdc6c548b2d to your computer and use it in GitHub Desktop.
Blender Geometry Node Group for tiled mesh design
import bpy
import mathutils
import os
import typing
def pd_boxstar_1_node_group(node_tree_names: dict[typing.Callable, str]):
"""Initialize PD_BoxStar node group"""
pd_boxstar_1 = bpy.data.node_groups.new(type='GeometryNodeTree', name="PD_BoxStar")
pd_boxstar_1.color_tag = 'NONE'
pd_boxstar_1.description = ""
pd_boxstar_1.default_group_node_width = 140
pd_boxstar_1.show_modifier_manage_panel = True
# pd_boxstar_1 interface
# Socket Geometry
geometry_socket = pd_boxstar_1.interface.new_socket(name="Geometry", in_out='OUTPUT', socket_type='NodeSocketGeometry')
geometry_socket.attribute_domain = 'POINT'
geometry_socket.default_input = 'VALUE'
geometry_socket.structure_type = 'AUTO'
# Socket Geometry
geometry_socket_1 = pd_boxstar_1.interface.new_socket(name="Geometry", in_out='INPUT', socket_type='NodeSocketGeometry')
geometry_socket_1.attribute_domain = 'POINT'
geometry_socket_1.default_input = 'VALUE'
geometry_socket_1.structure_type = 'AUTO'
# Socket Edge Thickness
edge_thickness_socket = pd_boxstar_1.interface.new_socket(name="Edge Thickness", in_out='INPUT', socket_type='NodeSocketFloat')
edge_thickness_socket.default_value = 0.10000000149011612
edge_thickness_socket.min_value = 0.0
edge_thickness_socket.max_value = 0.5
edge_thickness_socket.subtype = 'FACTOR'
edge_thickness_socket.attribute_domain = 'POINT'
edge_thickness_socket.default_input = 'VALUE'
edge_thickness_socket.structure_type = 'AUTO'
# Socket Bevel
bevel_socket = pd_boxstar_1.interface.new_socket(name="Bevel", in_out='INPUT', socket_type='NodeSocketFloat')
bevel_socket.default_value = 3.0
bevel_socket.min_value = 0.5
bevel_socket.max_value = 20.0
bevel_socket.subtype = 'FACTOR'
bevel_socket.attribute_domain = 'POINT'
bevel_socket.default_input = 'VALUE'
bevel_socket.structure_type = 'AUTO'
# Socket Depth
depth_socket = pd_boxstar_1.interface.new_socket(name="Depth", in_out='INPUT', socket_type='NodeSocketFloat')
depth_socket.default_value = 0.10000000149011612
depth_socket.min_value = 0.0
depth_socket.max_value = 10.0
depth_socket.subtype = 'DISTANCE'
depth_socket.attribute_domain = 'POINT'
depth_socket.default_input = 'VALUE'
depth_socket.structure_type = 'AUTO'
# Socket Cutoff
cutoff_socket = pd_boxstar_1.interface.new_socket(name="Cutoff", in_out='INPUT', socket_type='NodeSocketFloat')
cutoff_socket.default_value = 0.0
cutoff_socket.min_value = 0.0
cutoff_socket.max_value = 1.0
cutoff_socket.subtype = 'FACTOR'
cutoff_socket.attribute_domain = 'POINT'
cutoff_socket.default_input = 'VALUE'
cutoff_socket.structure_type = 'AUTO'
# Socket Scale
scale_socket = pd_boxstar_1.interface.new_socket(name="Scale", in_out='INPUT', socket_type='NodeSocketFloat')
scale_socket.default_value = 10.0
scale_socket.min_value = 0.0010000000474974513
scale_socket.max_value = 10000.0
scale_socket.subtype = 'NONE'
scale_socket.attribute_domain = 'POINT'
scale_socket.default_input = 'VALUE'
scale_socket.structure_type = 'AUTO'
# Socket Invert
invert_socket = pd_boxstar_1.interface.new_socket(name="Invert", in_out='INPUT', socket_type='NodeSocketBool')
invert_socket.default_value = False
invert_socket.attribute_domain = 'POINT'
invert_socket.default_input = 'VALUE'
invert_socket.structure_type = 'AUTO'
# Initialize pd_boxstar_1 nodes
# Node Position
position = pd_boxstar_1.nodes.new("GeometryNodeInputPosition")
position.name = "Position"
# Node Separate XYZ.002
separate_xyz_002 = pd_boxstar_1.nodes.new("ShaderNodeSeparateXYZ")
separate_xyz_002.name = "Separate XYZ.002"
# Node Math.005
math_005 = pd_boxstar_1.nodes.new("ShaderNodeMath")
math_005.name = "Math.005"
math_005.operation = 'ADD'
math_005.use_clamp = False
# Node Math.006
math_006 = pd_boxstar_1.nodes.new("ShaderNodeMath")
math_006.name = "Math.006"
math_006.hide = True
math_006.operation = 'SUBTRACT'
math_006.use_clamp = False
# Value_001
math_006.inputs[1].default_value = 0.5
# Node Map Range.002
map_range_002 = pd_boxstar_1.nodes.new("ShaderNodeMapRange")
map_range_002.name = "Map Range.002"
map_range_002.hide = True
map_range_002.clamp = True
map_range_002.data_type = 'FLOAT'
map_range_002.interpolation_type = 'LINEAR'
# From Min
map_range_002.inputs[1].default_value = 0.0
# From Max
map_range_002.inputs[2].default_value = 1.0
# To Min
map_range_002.inputs[3].default_value = 1.0
# To Max
map_range_002.inputs[4].default_value = 0.0
# Node Math.007
math_007 = pd_boxstar_1.nodes.new("ShaderNodeMath")
math_007.name = "Math.007"
math_007.hide = True
math_007.operation = 'MULTIPLY'
math_007.use_clamp = False
# Value_001
math_007.inputs[1].default_value = 0.7071067690849304
# Node Vector Math.004
vector_math_004 = pd_boxstar_1.nodes.new("ShaderNodeVectorMath")
vector_math_004.name = "Vector Math.004"
vector_math_004.hide = True
vector_math_004.operation = 'SUBTRACT'
# Vector_001
vector_math_004.inputs[1].default_value = (0.5, 0.5, 0.0)
# Node Value
value = pd_boxstar_1.nodes.new("ShaderNodeValue")
value.name = "Value"
value.outputs[0].default_value = 0.5
# Node Math.008
math_008 = pd_boxstar_1.nodes.new("ShaderNodeMath")
math_008.name = "Math.008"
math_008.hide = True
math_008.operation = 'MINIMUM'
math_008.use_clamp = False
# Node Vector Math.005
vector_math_005 = pd_boxstar_1.nodes.new("ShaderNodeVectorMath")
vector_math_005.name = "Vector Math.005"
vector_math_005.operation = 'SUBTRACT'
# Vector_001
vector_math_005.inputs[1].default_value = (0.5, 0.5, 0.0)
# Node Math.024
math_024 = pd_boxstar_1.nodes.new("ShaderNodeMath")
math_024.name = "Math.024"
math_024.hide = True
math_024.operation = 'MINIMUM'
math_024.use_clamp = False
# Node Math.028
math_028 = pd_boxstar_1.nodes.new("ShaderNodeMath")
math_028.name = "Math.028"
math_028.hide = True
math_028.operation = 'ABSOLUTE'
math_028.use_clamp = False
# Node Math.029
math_029 = pd_boxstar_1.nodes.new("ShaderNodeMath")
math_029.name = "Math.029"
math_029.operation = 'SUBTRACT'
math_029.use_clamp = False
# Value_001
math_029.inputs[1].default_value = 0.1666666716337204
# Node Math.031
math_031 = pd_boxstar_1.nodes.new("ShaderNodeMath")
math_031.name = "Math.031"
math_031.hide = True
math_031.operation = 'ADD'
math_031.use_clamp = False
# Value_001
math_031.inputs[1].default_value = 0.1666666716337204
# Node Vector Math.006
vector_math_006 = pd_boxstar_1.nodes.new("ShaderNodeVectorMath")
vector_math_006.name = "Vector Math.006"
vector_math_006.hide = True
vector_math_006.operation = 'ABSOLUTE'
vector_math_006.inputs[1].hide = True
vector_math_006.inputs[2].hide = True
vector_math_006.inputs[3].hide = True
vector_math_006.outputs[1].hide = True
# Node Vector Math.007
vector_math_007 = pd_boxstar_1.nodes.new("ShaderNodeVectorMath")
vector_math_007.name = "Vector Math.007"
vector_math_007.hide = True
vector_math_007.operation = 'SUBTRACT'
vector_math_007.inputs[2].hide = True
vector_math_007.inputs[3].hide = True
vector_math_007.outputs[1].hide = True
# Node Vector Math.008
vector_math_008 = pd_boxstar_1.nodes.new("ShaderNodeVectorMath")
vector_math_008.name = "Vector Math.008"
vector_math_008.hide = True
vector_math_008.operation = 'LENGTH'
vector_math_008.inputs[1].hide = True
vector_math_008.inputs[2].hide = True
vector_math_008.inputs[3].hide = True
vector_math_008.outputs[0].hide = True
# Node Vector Math.009
vector_math_009 = pd_boxstar_1.nodes.new("ShaderNodeVectorMath")
vector_math_009.name = "Vector Math.009"
vector_math_009.hide = True
vector_math_009.operation = 'MAXIMUM'
vector_math_009.inputs[1].hide = True
vector_math_009.inputs[2].hide = True
vector_math_009.inputs[3].hide = True
vector_math_009.outputs[1].hide = True
# Vector_001
vector_math_009.inputs[1].default_value = (0.0, 0.0, 0.0)
# Node Math.032
math_032 = pd_boxstar_1.nodes.new("ShaderNodeMath")
math_032.name = "Math.032"
math_032.hide = True
math_032.operation = 'MINIMUM'
math_032.use_clamp = False
math_032.inputs[1].hide = True
math_032.inputs[2].hide = True
# Value_001
math_032.inputs[1].default_value = 0.0
# Node Separate XYZ.003
separate_xyz_003 = pd_boxstar_1.nodes.new("ShaderNodeSeparateXYZ")
separate_xyz_003.name = "Separate XYZ.003"
separate_xyz_003.hide = True
separate_xyz_003.outputs[2].hide = True
# Node Math.033
math_033 = pd_boxstar_1.nodes.new("ShaderNodeMath")
math_033.name = "Math.033"
math_033.hide = True
math_033.operation = 'MAXIMUM'
math_033.use_clamp = False
math_033.inputs[2].hide = True
# Node Math.034
math_034 = pd_boxstar_1.nodes.new("ShaderNodeMath")
math_034.name = "Math.034"
math_034.hide = True
math_034.operation = 'ADD'
math_034.use_clamp = False
math_034.inputs[2].hide = True
# Node Vector Math.010
vector_math_010 = pd_boxstar_1.nodes.new("ShaderNodeVectorMath")
vector_math_010.name = "Vector Math.010"
vector_math_010.hide = True
vector_math_010.operation = 'ADD'
# Vector_001
vector_math_010.inputs[1].default_value = (0.0, 0.0, 0.0)
# Node Vector Math.011
vector_math_011 = pd_boxstar_1.nodes.new("ShaderNodeVectorMath")
vector_math_011.name = "Vector Math.011"
vector_math_011.hide = True
vector_math_011.operation = 'ADD'
vector_math_011.inputs[1].hide = True
vector_math_011.inputs[2].hide = True
vector_math_011.inputs[3].hide = True
vector_math_011.outputs[1].hide = True
# Vector
vector_math_011.inputs[0].default_value = (0.0, 0.0, 0.0)
# Vector_001
vector_math_011.inputs[1].default_value = (0.0, 0.0, 0.0)
# Node Vector Math.012
vector_math_012 = pd_boxstar_1.nodes.new("ShaderNodeVectorMath")
vector_math_012.name = "Vector Math.012"
vector_math_012.operation = 'ADD'
vector_math_012.inputs[1].hide = True
vector_math_012.inputs[2].hide = True
vector_math_012.inputs[3].hide = True
vector_math_012.outputs[1].hide = True
# Vector
vector_math_012.inputs[0].default_value = (0.0, -0.33333298563957214, 0.0)
# Vector_001
vector_math_012.inputs[1].default_value = (0.0, 0.0, 0.0)
# Node Vector Math.013
vector_math_013 = pd_boxstar_1.nodes.new("ShaderNodeVectorMath")
vector_math_013.name = "Vector Math.013"
vector_math_013.hide = True
vector_math_013.operation = 'SUBTRACT'
# Node Vector Math.014
vector_math_014 = pd_boxstar_1.nodes.new("ShaderNodeVectorMath")
vector_math_014.name = "Vector Math.014"
vector_math_014.operation = 'SUBTRACT'
# Node Vector Math.015
vector_math_015 = pd_boxstar_1.nodes.new("ShaderNodeVectorMath")
vector_math_015.name = "Vector Math.015"
vector_math_015.hide = True
vector_math_015.operation = 'DOT_PRODUCT'
# Node Vector Math.016
vector_math_016 = pd_boxstar_1.nodes.new("ShaderNodeVectorMath")
vector_math_016.name = "Vector Math.016"
vector_math_016.hide = True
vector_math_016.operation = 'DOT_PRODUCT'
# Node Math.035
math_035 = pd_boxstar_1.nodes.new("ShaderNodeMath")
math_035.name = "Math.035"
math_035.operation = 'DIVIDE'
math_035.use_clamp = True
# Node Vector Math.017
vector_math_017 = pd_boxstar_1.nodes.new("ShaderNodeVectorMath")
vector_math_017.name = "Vector Math.017"
vector_math_017.operation = 'LENGTH'
# Node Vector Math.018
vector_math_018 = pd_boxstar_1.nodes.new("ShaderNodeVectorMath")
vector_math_018.name = "Vector Math.018"
vector_math_018.operation = 'SUBTRACT'
# Node Vector Math.019
vector_math_019 = pd_boxstar_1.nodes.new("ShaderNodeVectorMath")
vector_math_019.name = "Vector Math.019"
vector_math_019.operation = 'SCALE'
# Node Vector Math.020
vector_math_020 = pd_boxstar_1.nodes.new("ShaderNodeVectorMath")
vector_math_020.name = "Vector Math.020"
vector_math_020.operation = 'SCALE'
# Node Vector Math.021
vector_math_021 = pd_boxstar_1.nodes.new("ShaderNodeVectorMath")
vector_math_021.name = "Vector Math.021"
vector_math_021.operation = 'FRACTION'
# Node Vector Math.029
vector_math_029 = pd_boxstar_1.nodes.new("ShaderNodeVectorMath")
vector_math_029.name = "Vector Math.029"
vector_math_029.operation = 'ABSOLUTE'
# Node Vector Math.055
vector_math_055 = pd_boxstar_1.nodes.new("ShaderNodeVectorMath")
vector_math_055.name = "Vector Math.055"
vector_math_055.operation = 'SUBTRACT'
# Vector_001
vector_math_055.inputs[1].default_value = (0.5, 0.5, 0.0)
# Node Vector Math.056
vector_math_056 = pd_boxstar_1.nodes.new("ShaderNodeVectorMath")
vector_math_056.name = "Vector Math.056"
vector_math_056.operation = 'SUBTRACT'
# Vector_001
vector_math_056.inputs[1].default_value = (0.5, 0.5, 0.0)
# Node Reroute
reroute = pd_boxstar_1.nodes.new("NodeReroute")
reroute.name = "Reroute"
reroute.socket_idname = "NodeSocketVector"
# Node Reroute.001
reroute_001 = pd_boxstar_1.nodes.new("NodeReroute")
reroute_001.name = "Reroute.001"
reroute_001.socket_idname = "NodeSocketVector"
# Node Reroute.005
reroute_005 = pd_boxstar_1.nodes.new("NodeReroute")
reroute_005.name = "Reroute.005"
reroute_005.socket_idname = "NodeSocketVector"
# Node Reroute.008
reroute_008 = pd_boxstar_1.nodes.new("NodeReroute")
reroute_008.name = "Reroute.008"
reroute_008.socket_idname = "NodeSocketVector"
# Node Reroute.010
reroute_010 = pd_boxstar_1.nodes.new("NodeReroute")
reroute_010.name = "Reroute.010"
reroute_010.socket_idname = "NodeSocketVector"
# Node Reroute.011
reroute_011 = pd_boxstar_1.nodes.new("NodeReroute")
reroute_011.name = "Reroute.011"
reroute_011.socket_idname = "NodeSocketVector"
# Node Reroute.012
reroute_012 = pd_boxstar_1.nodes.new("NodeReroute")
reroute_012.name = "Reroute.012"
reroute_012.socket_idname = "NodeSocketVector"
# Node Group Input.012
group_input_012 = pd_boxstar_1.nodes.new("NodeGroupInput")
group_input_012.name = "Group Input.012"
group_input_012.outputs[0].hide = True
group_input_012.outputs[1].hide = True
group_input_012.outputs[2].hide = True
group_input_012.outputs[3].hide = True
group_input_012.outputs[4].hide = True
group_input_012.outputs[6].hide = True
group_input_012.outputs[7].hide = True
# Node Group Output.001
group_output_001 = pd_boxstar_1.nodes.new("NodeGroupOutput")
group_output_001.name = "Group Output.001"
group_output_001.is_active_output = True
# Node Math.043
math_043 = pd_boxstar_1.nodes.new("ShaderNodeMath")
math_043.name = "Math.043"
math_043.operation = 'DIVIDE'
math_043.use_clamp = False
# Value
math_043.inputs[0].default_value = 1.0
# Node Math.010
math_010 = pd_boxstar_1.nodes.new("ShaderNodeMath")
math_010.name = "Math.010"
math_010.operation = 'MULTIPLY'
math_010.use_clamp = False
# Value
math_010.inputs[0].default_value = 0.5
# Node Reroute.014
reroute_014 = pd_boxstar_1.nodes.new("NodeReroute")
reroute_014.label = "edge"
reroute_014.name = "Reroute.014"
reroute_014.socket_idname = "NodeSocketVector"
# Node Normal.001
normal_001 = pd_boxstar_1.nodes.new("GeometryNodeInputNormal")
normal_001.label = "Normals (for redireciotn of vectors)"
normal_001.name = "Normal.001"
normal_001.legacy_corner_normals = False
# Node Vector Math.Disp.001
vector_math_disp_001 = pd_boxstar_1.nodes.new("ShaderNodeVectorMath")
vector_math_disp_001.name = "Vector Math.Disp.001"
vector_math_disp_001.operation = 'MULTIPLY'
# Node Set Position.001
set_position_001 = pd_boxstar_1.nodes.new("GeometryNodeSetPosition")
set_position_001.name = "Set Position.001"
# Selection
set_position_001.inputs[1].default_value = True
# Position
set_position_001.inputs[2].default_value = (0.0, 0.0, 0.0)
# Node Set Shade Smooth.001
set_shade_smooth_001 = pd_boxstar_1.nodes.new("GeometryNodeSetShadeSmooth")
set_shade_smooth_001.name = "Set Shade Smooth.001"
set_shade_smooth_001.domain = 'FACE'
# Selection
set_shade_smooth_001.inputs[1].default_value = True
# Shade Smooth
set_shade_smooth_001.inputs[2].default_value = True
# Node Vector Math.024
vector_math_024 = pd_boxstar_1.nodes.new("ShaderNodeVectorMath")
vector_math_024.name = "Vector Math.024"
vector_math_024.operation = 'MULTIPLY'
# Node Math.011
math_011 = pd_boxstar_1.nodes.new("ShaderNodeMath")
math_011.name = "Math.011"
math_011.operation = 'SUBTRACT'
math_011.use_clamp = False
# Value_001
math_011.inputs[1].default_value = 1.0
# Node Mix.003
mix_003 = pd_boxstar_1.nodes.new("ShaderNodeMix")
mix_003.name = "Mix.003"
mix_003.blend_type = 'MIX'
mix_003.clamp_factor = True
mix_003.clamp_result = False
mix_003.data_type = 'FLOAT'
mix_003.factor_mode = 'UNIFORM'
# Node Map Range.003
map_range_003 = pd_boxstar_1.nodes.new("ShaderNodeMapRange")
map_range_003.name = "Map Range.003"
map_range_003.clamp = True
map_range_003.data_type = 'FLOAT'
map_range_003.interpolation_type = 'LINEAR'
# From Max
map_range_003.inputs[2].default_value = 0.10000000149011612
# To Min
map_range_003.inputs[3].default_value = 0.0
# To Max
map_range_003.inputs[4].default_value = 1.0
# Node Math.012
math_012 = pd_boxstar_1.nodes.new("ShaderNodeMath")
math_012.name = "Math.012"
math_012.operation = 'POWER'
math_012.use_clamp = True
# Node Group Input.007
group_input_007 = pd_boxstar_1.nodes.new("NodeGroupInput")
group_input_007.name = "Group Input.007"
group_input_007.outputs[0].hide = True
group_input_007.outputs[1].hide = True
group_input_007.outputs[3].hide = True
group_input_007.outputs[4].hide = True
group_input_007.outputs[5].hide = True
group_input_007.outputs[6].hide = True
group_input_007.outputs[7].hide = True
# Node Group Input.013
group_input_013 = pd_boxstar_1.nodes.new("NodeGroupInput")
group_input_013.name = "Group Input.013"
group_input_013.outputs[0].hide = True
group_input_013.outputs[2].hide = True
group_input_013.outputs[3].hide = True
group_input_013.outputs[4].hide = True
group_input_013.outputs[5].hide = True
group_input_013.outputs[6].hide = True
group_input_013.outputs[7].hide = True
# Node Map Range.004
map_range_004 = pd_boxstar_1.nodes.new("ShaderNodeMapRange")
map_range_004.name = "Map Range.004"
map_range_004.clamp = True
map_range_004.data_type = 'FLOAT'
map_range_004.interpolation_type = 'LINEAR'
# From Min
map_range_004.inputs[1].default_value = 0.0
# To Min
map_range_004.inputs[3].default_value = 0.0
# To Max
map_range_004.inputs[4].default_value = 1.0
# Node Math.013
math_013 = pd_boxstar_1.nodes.new("ShaderNodeMath")
math_013.name = "Math.013"
math_013.operation = 'SUBTRACT'
math_013.use_clamp = False
# Value
math_013.inputs[0].default_value = 1.0
# Node Group Input.014
group_input_014 = pd_boxstar_1.nodes.new("NodeGroupInput")
group_input_014.name = "Group Input.014"
group_input_014.outputs[0].hide = True
group_input_014.outputs[1].hide = True
group_input_014.outputs[2].hide = True
group_input_014.outputs[4].hide = True
group_input_014.outputs[5].hide = True
group_input_014.outputs[6].hide = True
group_input_014.outputs[7].hide = True
# Node Group Input.015
group_input_015 = pd_boxstar_1.nodes.new("NodeGroupInput")
group_input_015.name = "Group Input.015"
group_input_015.outputs[0].hide = True
group_input_015.outputs[1].hide = True
group_input_015.outputs[2].hide = True
group_input_015.outputs[3].hide = True
group_input_015.outputs[5].hide = True
group_input_015.outputs[6].hide = True
group_input_015.outputs[7].hide = True
# Node Compare.001
compare_001 = pd_boxstar_1.nodes.new("FunctionNodeCompare")
compare_001.name = "Compare.001"
compare_001.data_type = 'FLOAT'
compare_001.mode = 'ELEMENT'
compare_001.operation = 'GREATER_THAN'
# Node Delete Geometry.001
delete_geometry_001 = pd_boxstar_1.nodes.new("GeometryNodeDeleteGeometry")
delete_geometry_001.name = "Delete Geometry.001"
delete_geometry_001.domain = 'FACE'
delete_geometry_001.mode = 'ALL'
# Node Frame.005
frame_005 = pd_boxstar_1.nodes.new("NodeFrame")
frame_005.label = "Tile Math"
frame_005.name = "Frame.005"
frame_005.use_custom_color = True
frame_005.color = (0.6079999804496765, 0.12647965550422668, 0.2114803045988083)
frame_005.label_size = 20
frame_005.shrink = True
# Node Frame.006
frame_006 = pd_boxstar_1.nodes.new("NodeFrame")
frame_006.label = "Edge Thickness"
frame_006.name = "Frame.006"
frame_006.use_custom_color = True
frame_006.color = (0.4081600606441498, 0.4081600606441498, 0.4081600606441498)
frame_006.label_size = 20
frame_006.shrink = True
# Node Frame.007
frame_007 = pd_boxstar_1.nodes.new("NodeFrame")
frame_007.label = "Bevel"
frame_007.name = "Frame.007"
frame_007.use_custom_color = True
frame_007.color = (0.12623369693756104, 0.6079999804496765, 0.13649295270442963)
frame_007.label_size = 20
frame_007.shrink = True
# Node Frame.008
frame_008 = pd_boxstar_1.nodes.new("NodeFrame")
frame_008.label = "Invert"
frame_008.name = "Frame.008"
frame_008.use_custom_color = True
frame_008.color = (0.7309557199478149, 0.0, 0.597551167011261)
frame_008.label_size = 20
frame_008.shrink = True
# Node Frame.009
frame_009 = pd_boxstar_1.nodes.new("NodeFrame")
frame_009.label = "Cutoff"
frame_009.name = "Frame.009"
frame_009.use_custom_color = True
frame_009.color = (0.6079999804496765, 0.39080536365509033, 0.20349149405956268)
frame_009.label_size = 20
frame_009.shrink = True
# Node Group Input.021
group_input_021 = pd_boxstar_1.nodes.new("NodeGroupInput")
group_input_021.name = "Group Input.021"
group_input_021.outputs[1].hide = True
group_input_021.outputs[2].hide = True
group_input_021.outputs[3].hide = True
group_input_021.outputs[4].hide = True
group_input_021.outputs[5].hide = True
group_input_021.outputs[6].hide = True
group_input_021.outputs[7].hide = True
# Node Group Input.022
group_input_022 = pd_boxstar_1.nodes.new("NodeGroupInput")
group_input_022.name = "Group Input.022"
group_input_022.outputs[0].hide = True
group_input_022.outputs[1].hide = True
group_input_022.outputs[2].hide = True
group_input_022.outputs[3].hide = True
group_input_022.outputs[4].hide = True
group_input_022.outputs[6].hide = True
group_input_022.outputs[7].hide = True
# Node Math.InvertCarve
math_invertcarve = pd_boxstar_1.nodes.new("ShaderNodeMath")
math_invertcarve.name = "Math.InvertCarve"
math_invertcarve.operation = 'MULTIPLY'
math_invertcarve.use_clamp = False
# Value
math_invertcarve.inputs[0].default_value = -1.0
# Node Frame.010
frame_010 = pd_boxstar_1.nodes.new("NodeFrame")
frame_010.label = "Depth"
frame_010.name = "Frame.010"
frame_010.use_custom_color = True
frame_010.color = (0.09379604458808899, 0.00846133567392826, 0.6079999804496765)
frame_010.label_size = 20
frame_010.shrink = True
# Node Group Input
group_input = pd_boxstar_1.nodes.new("NodeGroupInput")
group_input.name = "Group Input"
group_input.outputs[0].hide = True
group_input.outputs[1].hide = True
group_input.outputs[2].hide = True
group_input.outputs[3].hide = True
group_input.outputs[4].hide = True
group_input.outputs[5].hide = True
group_input.outputs[7].hide = True
# Node Math
math = pd_boxstar_1.nodes.new("ShaderNodeMath")
math.name = "Math"
math.operation = 'DIVIDE'
math.use_clamp = False
# Node Group Input.001
group_input_001 = pd_boxstar_1.nodes.new("NodeGroupInput")
group_input_001.name = "Group Input.001"
group_input_001.outputs[0].hide = True
group_input_001.outputs[1].hide = True
group_input_001.outputs[2].hide = True
group_input_001.outputs[3].hide = True
group_input_001.outputs[4].hide = True
group_input_001.outputs[6].hide = True
group_input_001.outputs[7].hide = True
# Set parents
pd_boxstar_1.nodes["Separate XYZ.002"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Math.005"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Math.006"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Map Range.002"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Math.007"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Vector Math.004"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Value"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Math.008"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Vector Math.005"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Math.024"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Math.028"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Math.029"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Math.031"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Vector Math.006"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Vector Math.007"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Vector Math.008"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Vector Math.009"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Math.032"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Separate XYZ.003"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Math.033"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Math.034"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Vector Math.010"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Vector Math.011"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Vector Math.012"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Vector Math.013"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Vector Math.014"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Vector Math.015"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Vector Math.016"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Math.035"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Vector Math.017"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Vector Math.018"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Vector Math.019"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Vector Math.020"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Vector Math.021"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Vector Math.029"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Vector Math.055"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Vector Math.056"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Reroute"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Reroute.001"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Reroute.005"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Reroute.008"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Reroute.010"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Reroute.011"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Reroute.012"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Math.043"].parent = pd_boxstar_1.nodes["Frame.010"]
pd_boxstar_1.nodes["Math.010"].parent = pd_boxstar_1.nodes["Frame.010"]
pd_boxstar_1.nodes["Vector Math.024"].parent = pd_boxstar_1.nodes["Frame.010"]
pd_boxstar_1.nodes["Math.011"].parent = pd_boxstar_1.nodes["Frame.008"]
pd_boxstar_1.nodes["Mix.003"].parent = pd_boxstar_1.nodes["Frame.008"]
pd_boxstar_1.nodes["Map Range.003"].parent = pd_boxstar_1.nodes["Frame.006"]
pd_boxstar_1.nodes["Math.012"].parent = pd_boxstar_1.nodes["Frame.007"]
pd_boxstar_1.nodes["Group Input.007"].parent = pd_boxstar_1.nodes["Frame.007"]
pd_boxstar_1.nodes["Group Input.013"].parent = pd_boxstar_1.nodes["Frame.006"]
pd_boxstar_1.nodes["Map Range.004"].parent = pd_boxstar_1.nodes["Frame.007"]
pd_boxstar_1.nodes["Math.013"].parent = pd_boxstar_1.nodes["Frame.007"]
pd_boxstar_1.nodes["Group Input.014"].parent = pd_boxstar_1.nodes["Frame.010"]
pd_boxstar_1.nodes["Group Input.015"].parent = pd_boxstar_1.nodes["Frame.009"]
pd_boxstar_1.nodes["Compare.001"].parent = pd_boxstar_1.nodes["Frame.009"]
pd_boxstar_1.nodes["Delete Geometry.001"].parent = pd_boxstar_1.nodes["Frame.009"]
pd_boxstar_1.nodes["Group Input.022"].parent = pd_boxstar_1.nodes["Frame.010"]
pd_boxstar_1.nodes["Math.InvertCarve"].parent = pd_boxstar_1.nodes["Frame.008"]
pd_boxstar_1.nodes["Math"].parent = pd_boxstar_1.nodes["Frame.005"]
pd_boxstar_1.nodes["Group Input.001"].parent = pd_boxstar_1.nodes["Frame.005"]
# Set locations
pd_boxstar_1.nodes["Position"].location = (-3355.57470703125, 764.0057373046875)
pd_boxstar_1.nodes["Separate XYZ.002"].location = (1378.9820556640625, -733.0186767578125)
pd_boxstar_1.nodes["Math.005"].location = (2252.792236328125, -597.67578125)
pd_boxstar_1.nodes["Math.006"].location = (2632.792236328125, -647.67578125)
pd_boxstar_1.nodes["Map Range.002"].location = (2442.79248046875, -642.67578125)
pd_boxstar_1.nodes["Math.007"].location = (2822.792236328125, -647.67578125)
pd_boxstar_1.nodes["Vector Math.004"].location = (1277.792236328125, -40.069091796875)
pd_boxstar_1.nodes["Value"].location = (1480.292236328125, -114.069091796875)
pd_boxstar_1.nodes["Math.008"].location = (2822.792236328125, -224.7940673828125)
pd_boxstar_1.nodes["Vector Math.005"].location = (1016.562255859375, -37.852783203125)
pd_boxstar_1.nodes["Math.024"].location = (3025.292236328125, -327.5816650390625)
pd_boxstar_1.nodes["Math.028"].location = (3215.292236328125, -327.5816650390625)
pd_boxstar_1.nodes["Math.029"].location = (2632.792236328125, -290.5816650390625)
pd_boxstar_1.nodes["Math.031"].location = (2632.792236328125, -87.2109375)
pd_boxstar_1.nodes["Vector Math.006"].location = (1480.292236328125, -40.069091796875)
pd_boxstar_1.nodes["Vector Math.007"].location = (1682.792236328125, -87.2392578125)
pd_boxstar_1.nodes["Vector Math.008"].location = (2252.792236328125, -48.2109375)
pd_boxstar_1.nodes["Vector Math.009"].location = (2062.792236328125, -48.2109375)
pd_boxstar_1.nodes["Math.032"].location = (2252.792236328125, -126.2109375)
pd_boxstar_1.nodes["Separate XYZ.003"].location = (1872.792236328125, -126.2109375)
pd_boxstar_1.nodes["Math.033"].location = (2062.792236328125, -126.2109375)
pd_boxstar_1.nodes["Math.034"].location = (2442.79248046875, -87.2109375)
pd_boxstar_1.nodes["Vector Math.010"].location = (1277.792236328125, -280.2623291015625)
pd_boxstar_1.nodes["Vector Math.011"].location = (1277.792236328125, -597.336669921875)
pd_boxstar_1.nodes["Vector Math.012"].location = (1277.792236328125, -377.336669921875)
pd_boxstar_1.nodes["Vector Math.013"].location = (1480.292236328125, -280.2623291015625)
pd_boxstar_1.nodes["Vector Math.014"].location = (1480.292236328125, -437.836669921875)
pd_boxstar_1.nodes["Vector Math.015"].location = (1682.792236328125, -507.352294921875)
pd_boxstar_1.nodes["Vector Math.016"].location = (1682.792236328125, -585.352294921875)
pd_boxstar_1.nodes["Math.035"].location = (1872.792236328125, -435.7987060546875)
pd_boxstar_1.nodes["Vector Math.017"].location = (2442.79248046875, -290.5816650390625)
pd_boxstar_1.nodes["Vector Math.018"].location = (2252.792236328125, -290.5816650390625)
pd_boxstar_1.nodes["Vector Math.019"].location = (2062.792236328125, -363.196533203125)
pd_boxstar_1.nodes["Vector Math.020"].location = (29.7919921875, -514.7640380859375)
pd_boxstar_1.nodes["Vector Math.021"].location = (409.7919921875, -514.7640380859375)
pd_boxstar_1.nodes["Vector Math.029"].location = (789.7919921875, -462.5433349609375)
pd_boxstar_1.nodes["Vector Math.055"].location = (599.7919921875, -462.5433349609375)
pd_boxstar_1.nodes["Vector Math.056"].location = (219.7919921875, -514.7640380859375)
pd_boxstar_1.nodes["Reroute"].location = (1682.792236328125, -377.7987060546875)
pd_boxstar_1.nodes["Reroute.001"].location = (1872.792236328125, -377.7987060546875)
pd_boxstar_1.nodes["Reroute.005"].location = (992.2919921875, -497.5963134765625)
pd_boxstar_1.nodes["Reroute.008"].location = (1050.292236328125, -497.5963134765625)
pd_boxstar_1.nodes["Reroute.010"].location = (1872.792236328125, -58.16064453125)
pd_boxstar_1.nodes["Reroute.011"].location = (1872.792236328125, -290.0487060546875)
pd_boxstar_1.nodes["Reroute.012"].location = (2062.792236328125, -290.0487060546875)
pd_boxstar_1.nodes["Group Input.012"].location = (-3396.712890625, 671.7964477539062)
pd_boxstar_1.nodes["Group Output.001"].location = (-888.4359130859375, -550.6224365234375)
pd_boxstar_1.nodes["Math.043"].location = (202.5904541015625, -176.41053771972656)
pd_boxstar_1.nodes["Math.010"].location = (385.1197509765625, -36.15907287597656)
pd_boxstar_1.nodes["Reroute.014"].location = (-425.3631286621094, -93.37733459472656)
pd_boxstar_1.nodes["Normal.001"].location = (-367.3631286621094, 28.622665405273438)
pd_boxstar_1.nodes["Vector Math.Disp.001"].location = (-177.36312866210938, 48.10215759277344)
pd_boxstar_1.nodes["Set Position.001"].location = (42.63685607910156, 98.64317321777344)
pd_boxstar_1.nodes["Set Shade Smooth.001"].location = (232.63685607910156, 98.64317321777344)
pd_boxstar_1.nodes["Vector Math.024"].location = (550.7574462890625, -57.20155334472656)
pd_boxstar_1.nodes["Math.011"].location = (30.1573486328125, -88.70350646972656)
pd_boxstar_1.nodes["Mix.003"].location = (359.0928955078125, -35.886627197265625)
pd_boxstar_1.nodes["Map Range.003"].location = (274.921142578125, -36.0806884765625)
pd_boxstar_1.nodes["Math.012"].location = (604.76904296875, -228.40614318847656)
pd_boxstar_1.nodes["Group Input.007"].location = (30.18798828125, -274.0101318359375)
pd_boxstar_1.nodes["Group Input.013"].location = (29.921142578125, -160.3297119140625)
pd_boxstar_1.nodes["Map Range.004"].location = (427.51611328125, -36.100006103515625)
pd_boxstar_1.nodes["Math.013"].location = (214.59521484375, -380.7503967285156)
pd_boxstar_1.nodes["Group Input.014"].location = (379.4752197265625, -209.18006896972656)
pd_boxstar_1.nodes["Group Input.015"].location = (29.9532470703125, -168.4425048828125)
pd_boxstar_1.nodes["Compare.001"].location = (178.3642578125, -152.61795043945312)
pd_boxstar_1.nodes["Delete Geometry.001"].location = (390.8350830078125, -56.050445556640625)
pd_boxstar_1.nodes["Frame.005"].location = (-3168.0, 1252.5)
pd_boxstar_1.nodes["Frame.006"].location = (-3217.0, 305.5)
pd_boxstar_1.nodes["Frame.007"].location = (-2683.5, 271.5)
pd_boxstar_1.nodes["Frame.008"].location = (-1788.5, 225.0)
pd_boxstar_1.nodes["Frame.009"].location = (-1692.5, -329.0)
pd_boxstar_1.nodes["Group Input.021"].location = (-177.36312866210938, 150.10215759277344)
pd_boxstar_1.nodes["Group Input.022"].location = (30.2315673828125, -232.76991271972656)
pd_boxstar_1.nodes["Math.InvertCarve"].location = (203.7530517578125, -208.09754943847656)
pd_boxstar_1.nodes["Frame.010"].location = (-1214.0, 177.0)
pd_boxstar_1.nodes["Group Input"].location = (-1677.9443359375, 188.40158081054688)
pd_boxstar_1.nodes["Math"].location = (3214.701416015625, -436.25537109375)
pd_boxstar_1.nodes["Group Input.001"].location = (3044.52685546875, -621.2807006835938)
# Set dimensions
pd_boxstar_1.nodes["Position"].width = 140.0
pd_boxstar_1.nodes["Position"].height = 100.0
pd_boxstar_1.nodes["Separate XYZ.002"].width = 140.0
pd_boxstar_1.nodes["Separate XYZ.002"].height = 100.0
pd_boxstar_1.nodes["Math.005"].width = 140.0
pd_boxstar_1.nodes["Math.005"].height = 100.0
pd_boxstar_1.nodes["Math.006"].width = 140.0
pd_boxstar_1.nodes["Math.006"].height = 100.0
pd_boxstar_1.nodes["Map Range.002"].width = 140.0
pd_boxstar_1.nodes["Map Range.002"].height = 100.0
pd_boxstar_1.nodes["Math.007"].width = 140.0
pd_boxstar_1.nodes["Math.007"].height = 100.0
pd_boxstar_1.nodes["Vector Math.004"].width = 140.0
pd_boxstar_1.nodes["Vector Math.004"].height = 100.0
pd_boxstar_1.nodes["Value"].width = 140.0
pd_boxstar_1.nodes["Value"].height = 100.0
pd_boxstar_1.nodes["Math.008"].width = 140.0
pd_boxstar_1.nodes["Math.008"].height = 100.0
pd_boxstar_1.nodes["Vector Math.005"].width = 140.0
pd_boxstar_1.nodes["Vector Math.005"].height = 100.0
pd_boxstar_1.nodes["Math.024"].width = 140.0
pd_boxstar_1.nodes["Math.024"].height = 100.0
pd_boxstar_1.nodes["Math.028"].width = 140.0
pd_boxstar_1.nodes["Math.028"].height = 100.0
pd_boxstar_1.nodes["Math.029"].width = 140.0
pd_boxstar_1.nodes["Math.029"].height = 100.0
pd_boxstar_1.nodes["Math.031"].width = 140.0
pd_boxstar_1.nodes["Math.031"].height = 100.0
pd_boxstar_1.nodes["Vector Math.006"].width = 140.0
pd_boxstar_1.nodes["Vector Math.006"].height = 100.0
pd_boxstar_1.nodes["Vector Math.007"].width = 140.0
pd_boxstar_1.nodes["Vector Math.007"].height = 100.0
pd_boxstar_1.nodes["Vector Math.008"].width = 140.0
pd_boxstar_1.nodes["Vector Math.008"].height = 100.0
pd_boxstar_1.nodes["Vector Math.009"].width = 140.0
pd_boxstar_1.nodes["Vector Math.009"].height = 100.0
pd_boxstar_1.nodes["Math.032"].width = 140.0
pd_boxstar_1.nodes["Math.032"].height = 100.0
pd_boxstar_1.nodes["Separate XYZ.003"].width = 140.0
pd_boxstar_1.nodes["Separate XYZ.003"].height = 100.0
pd_boxstar_1.nodes["Math.033"].width = 140.0
pd_boxstar_1.nodes["Math.033"].height = 100.0
pd_boxstar_1.nodes["Math.034"].width = 140.0
pd_boxstar_1.nodes["Math.034"].height = 100.0
pd_boxstar_1.nodes["Vector Math.010"].width = 140.0
pd_boxstar_1.nodes["Vector Math.010"].height = 100.0
pd_boxstar_1.nodes["Vector Math.011"].width = 140.0
pd_boxstar_1.nodes["Vector Math.011"].height = 100.0
pd_boxstar_1.nodes["Vector Math.012"].width = 140.0
pd_boxstar_1.nodes["Vector Math.012"].height = 100.0
pd_boxstar_1.nodes["Vector Math.013"].width = 140.0
pd_boxstar_1.nodes["Vector Math.013"].height = 100.0
pd_boxstar_1.nodes["Vector Math.014"].width = 140.0
pd_boxstar_1.nodes["Vector Math.014"].height = 100.0
pd_boxstar_1.nodes["Vector Math.015"].width = 140.0
pd_boxstar_1.nodes["Vector Math.015"].height = 100.0
pd_boxstar_1.nodes["Vector Math.016"].width = 140.0
pd_boxstar_1.nodes["Vector Math.016"].height = 100.0
pd_boxstar_1.nodes["Math.035"].width = 140.0
pd_boxstar_1.nodes["Math.035"].height = 100.0
pd_boxstar_1.nodes["Vector Math.017"].width = 140.0
pd_boxstar_1.nodes["Vector Math.017"].height = 100.0
pd_boxstar_1.nodes["Vector Math.018"].width = 140.0
pd_boxstar_1.nodes["Vector Math.018"].height = 100.0
pd_boxstar_1.nodes["Vector Math.019"].width = 140.0
pd_boxstar_1.nodes["Vector Math.019"].height = 100.0
pd_boxstar_1.nodes["Vector Math.020"].width = 140.0
pd_boxstar_1.nodes["Vector Math.020"].height = 100.0
pd_boxstar_1.nodes["Vector Math.021"].width = 140.0
pd_boxstar_1.nodes["Vector Math.021"].height = 100.0
pd_boxstar_1.nodes["Vector Math.029"].width = 140.0
pd_boxstar_1.nodes["Vector Math.029"].height = 100.0
pd_boxstar_1.nodes["Vector Math.055"].width = 140.0
pd_boxstar_1.nodes["Vector Math.055"].height = 100.0
pd_boxstar_1.nodes["Vector Math.056"].width = 140.0
pd_boxstar_1.nodes["Vector Math.056"].height = 100.0
pd_boxstar_1.nodes["Reroute"].width = 20.0
pd_boxstar_1.nodes["Reroute"].height = 100.0
pd_boxstar_1.nodes["Reroute.001"].width = 20.0
pd_boxstar_1.nodes["Reroute.001"].height = 100.0
pd_boxstar_1.nodes["Reroute.005"].width = 20.0
pd_boxstar_1.nodes["Reroute.005"].height = 100.0
pd_boxstar_1.nodes["Reroute.008"].width = 20.0
pd_boxstar_1.nodes["Reroute.008"].height = 100.0
pd_boxstar_1.nodes["Reroute.010"].width = 20.0
pd_boxstar_1.nodes["Reroute.010"].height = 100.0
pd_boxstar_1.nodes["Reroute.011"].width = 20.0
pd_boxstar_1.nodes["Reroute.011"].height = 100.0
pd_boxstar_1.nodes["Reroute.012"].width = 20.0
pd_boxstar_1.nodes["Reroute.012"].height = 100.0
pd_boxstar_1.nodes["Group Input.012"].width = 140.0
pd_boxstar_1.nodes["Group Input.012"].height = 100.0
pd_boxstar_1.nodes["Group Output.001"].width = 140.0
pd_boxstar_1.nodes["Group Output.001"].height = 100.0
pd_boxstar_1.nodes["Math.043"].width = 140.0
pd_boxstar_1.nodes["Math.043"].height = 100.0
pd_boxstar_1.nodes["Math.010"].width = 140.0
pd_boxstar_1.nodes["Math.010"].height = 100.0
pd_boxstar_1.nodes["Reroute.014"].width = 20.0
pd_boxstar_1.nodes["Reroute.014"].height = 100.0
pd_boxstar_1.nodes["Normal.001"].width = 140.0
pd_boxstar_1.nodes["Normal.001"].height = 100.0
pd_boxstar_1.nodes["Vector Math.Disp.001"].width = 140.0
pd_boxstar_1.nodes["Vector Math.Disp.001"].height = 100.0
pd_boxstar_1.nodes["Set Position.001"].width = 140.0
pd_boxstar_1.nodes["Set Position.001"].height = 100.0
pd_boxstar_1.nodes["Set Shade Smooth.001"].width = 140.0
pd_boxstar_1.nodes["Set Shade Smooth.001"].height = 100.0
pd_boxstar_1.nodes["Vector Math.024"].width = 140.0
pd_boxstar_1.nodes["Vector Math.024"].height = 100.0
pd_boxstar_1.nodes["Math.011"].width = 140.0
pd_boxstar_1.nodes["Math.011"].height = 100.0
pd_boxstar_1.nodes["Mix.003"].width = 140.0
pd_boxstar_1.nodes["Mix.003"].height = 100.0
pd_boxstar_1.nodes["Map Range.003"].width = 140.0
pd_boxstar_1.nodes["Map Range.003"].height = 100.0
pd_boxstar_1.nodes["Math.012"].width = 140.0
pd_boxstar_1.nodes["Math.012"].height = 100.0
pd_boxstar_1.nodes["Group Input.007"].width = 140.0
pd_boxstar_1.nodes["Group Input.007"].height = 100.0
pd_boxstar_1.nodes["Group Input.013"].width = 140.0
pd_boxstar_1.nodes["Group Input.013"].height = 100.0
pd_boxstar_1.nodes["Map Range.004"].width = 140.0
pd_boxstar_1.nodes["Map Range.004"].height = 100.0
pd_boxstar_1.nodes["Math.013"].width = 140.0
pd_boxstar_1.nodes["Math.013"].height = 100.0
pd_boxstar_1.nodes["Group Input.014"].width = 140.0
pd_boxstar_1.nodes["Group Input.014"].height = 100.0
pd_boxstar_1.nodes["Group Input.015"].width = 140.0
pd_boxstar_1.nodes["Group Input.015"].height = 100.0
pd_boxstar_1.nodes["Compare.001"].width = 140.0
pd_boxstar_1.nodes["Compare.001"].height = 100.0
pd_boxstar_1.nodes["Delete Geometry.001"].width = 140.0
pd_boxstar_1.nodes["Delete Geometry.001"].height = 100.0
pd_boxstar_1.nodes["Frame.005"].width = 3385.5
pd_boxstar_1.nodes["Frame.005"].height = 882.0
pd_boxstar_1.nodes["Frame.006"].width = 445.0
pd_boxstar_1.nodes["Frame.006"].height = 308.0
pd_boxstar_1.nodes["Frame.007"].width = 775.0
pd_boxstar_1.nodes["Frame.007"].height = 560.0
pd_boxstar_1.nodes["Frame.008"].width = 529.0
pd_boxstar_1.nodes["Frame.008"].height = 387.0
pd_boxstar_1.nodes["Frame.009"].width = 561.0
pd_boxstar_1.nodes["Frame.009"].height = 331.5
pd_boxstar_1.nodes["Group Input.021"].width = 140.0
pd_boxstar_1.nodes["Group Input.021"].height = 100.0
pd_boxstar_1.nodes["Group Input.022"].width = 140.0
pd_boxstar_1.nodes["Group Input.022"].height = 100.0
pd_boxstar_1.nodes["Math.InvertCarve"].width = 140.0
pd_boxstar_1.nodes["Math.InvertCarve"].height = 100.0
pd_boxstar_1.nodes["Frame.010"].width = 721.0
pd_boxstar_1.nodes["Frame.010"].height = 355.5
pd_boxstar_1.nodes["Group Input"].width = 140.0
pd_boxstar_1.nodes["Group Input"].height = 100.0
pd_boxstar_1.nodes["Math"].width = 140.0
pd_boxstar_1.nodes["Math"].height = 100.0
pd_boxstar_1.nodes["Group Input.001"].width = 140.0
pd_boxstar_1.nodes["Group Input.001"].height = 100.0
# Initialize pd_boxstar_1 links
# vector_math_010.Vector -> vector_math_013.Vector
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Vector Math.010"].outputs[0],
pd_boxstar_1.nodes["Vector Math.013"].inputs[0]
)
# vector_math_014.Vector -> vector_math_015.Vector
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Vector Math.014"].outputs[0],
pd_boxstar_1.nodes["Vector Math.015"].inputs[1]
)
# vector_math_011.Vector -> vector_math_013.Vector
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Vector Math.011"].outputs[0],
pd_boxstar_1.nodes["Vector Math.013"].inputs[1]
)
# vector_math_015.Value -> math_035.Value
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Vector Math.015"].outputs[1],
pd_boxstar_1.nodes["Math.035"].inputs[0]
)
# vector_math_013.Vector -> vector_math_015.Vector
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Vector Math.013"].outputs[0],
pd_boxstar_1.nodes["Vector Math.015"].inputs[0]
)
# math_007.Value -> math_024.Value
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Math.007"].outputs[0],
pd_boxstar_1.nodes["Math.024"].inputs[1]
)
# vector_math_014.Vector -> vector_math_016.Vector
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Vector Math.014"].outputs[0],
pd_boxstar_1.nodes["Vector Math.016"].inputs[1]
)
# separate_xyz_003.X -> math_033.Value
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Separate XYZ.003"].outputs[0],
pd_boxstar_1.nodes["Math.033"].inputs[0]
)
# math_035.Value -> vector_math_019.Scale
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Math.035"].outputs[0],
pd_boxstar_1.nodes["Vector Math.019"].inputs[3]
)
# vector_math_019.Vector -> vector_math_018.Vector
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Vector Math.019"].outputs[0],
pd_boxstar_1.nodes["Vector Math.018"].inputs[1]
)
# vector_math_012.Vector -> vector_math_014.Vector
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Vector Math.012"].outputs[0],
pd_boxstar_1.nodes["Vector Math.014"].inputs[0]
)
# vector_math_008.Value -> math_034.Value
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Vector Math.008"].outputs[1],
pd_boxstar_1.nodes["Math.034"].inputs[0]
)
# math_029.Value -> math_008.Value
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Math.029"].outputs[0],
pd_boxstar_1.nodes["Math.008"].inputs[1]
)
# math_008.Value -> math_024.Value
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Math.008"].outputs[0],
pd_boxstar_1.nodes["Math.024"].inputs[0]
)
# vector_math_021.Vector -> vector_math_055.Vector
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Vector Math.021"].outputs[0],
pd_boxstar_1.nodes["Vector Math.055"].inputs[0]
)
# math_033.Value -> math_032.Value
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Math.033"].outputs[0],
pd_boxstar_1.nodes["Math.032"].inputs[0]
)
# separate_xyz_002.X -> math_005.Value
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Separate XYZ.002"].outputs[0],
pd_boxstar_1.nodes["Math.005"].inputs[0]
)
# math_006.Value -> math_007.Value
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Math.006"].outputs[0],
pd_boxstar_1.nodes["Math.007"].inputs[0]
)
# math_005.Value -> map_range_002.Value
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Math.005"].outputs[0],
pd_boxstar_1.nodes["Map Range.002"].inputs[0]
)
# vector_math_005.Vector -> vector_math_010.Vector
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Vector Math.005"].outputs[0],
pd_boxstar_1.nodes["Vector Math.010"].inputs[0]
)
# vector_math_055.Vector -> vector_math_029.Vector
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Vector Math.055"].outputs[0],
pd_boxstar_1.nodes["Vector Math.029"].inputs[0]
)
# map_range_002.Result -> math_006.Value
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Map Range.002"].outputs[0],
pd_boxstar_1.nodes["Math.006"].inputs[0]
)
# vector_math_056.Vector -> vector_math_021.Vector
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Vector Math.056"].outputs[0],
pd_boxstar_1.nodes["Vector Math.021"].inputs[0]
)
# separate_xyz_002.Y -> math_005.Value
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Separate XYZ.002"].outputs[1],
pd_boxstar_1.nodes["Math.005"].inputs[1]
)
# vector_math_014.Vector -> vector_math_016.Vector
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Vector Math.014"].outputs[0],
pd_boxstar_1.nodes["Vector Math.016"].inputs[0]
)
# math_032.Value -> math_034.Value
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Math.032"].outputs[0],
pd_boxstar_1.nodes["Math.034"].inputs[1]
)
# value.Value -> vector_math_007.Vector
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Value"].outputs[0],
pd_boxstar_1.nodes["Vector Math.007"].inputs[1]
)
# vector_math_004.Vector -> vector_math_006.Vector
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Vector Math.004"].outputs[0],
pd_boxstar_1.nodes["Vector Math.006"].inputs[0]
)
# vector_math_017.Value -> math_029.Value
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Vector Math.017"].outputs[1],
pd_boxstar_1.nodes["Math.029"].inputs[0]
)
# math_031.Value -> math_008.Value
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Math.031"].outputs[0],
pd_boxstar_1.nodes["Math.008"].inputs[0]
)
# separate_xyz_003.Y -> math_033.Value
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Separate XYZ.003"].outputs[1],
pd_boxstar_1.nodes["Math.033"].inputs[1]
)
# vector_math_020.Vector -> vector_math_056.Vector
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Vector Math.020"].outputs[0],
pd_boxstar_1.nodes["Vector Math.056"].inputs[0]
)
# vector_math_018.Vector -> vector_math_017.Vector
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Vector Math.018"].outputs[0],
pd_boxstar_1.nodes["Vector Math.017"].inputs[0]
)
# vector_math_011.Vector -> vector_math_014.Vector
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Vector Math.011"].outputs[0],
pd_boxstar_1.nodes["Vector Math.014"].inputs[1]
)
# vector_math_009.Vector -> vector_math_008.Vector
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Vector Math.009"].outputs[0],
pd_boxstar_1.nodes["Vector Math.008"].inputs[0]
)
# math_034.Value -> math_031.Value
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Math.034"].outputs[0],
pd_boxstar_1.nodes["Math.031"].inputs[0]
)
# math_024.Value -> math_028.Value
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Math.024"].outputs[0],
pd_boxstar_1.nodes["Math.028"].inputs[0]
)
# vector_math_006.Vector -> vector_math_007.Vector
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Vector Math.006"].outputs[0],
pd_boxstar_1.nodes["Vector Math.007"].inputs[0]
)
# vector_math_016.Value -> math_035.Value
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Vector Math.016"].outputs[1],
pd_boxstar_1.nodes["Math.035"].inputs[1]
)
# vector_math_007.Vector -> separate_xyz_003.Vector
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Vector Math.007"].outputs[0],
pd_boxstar_1.nodes["Separate XYZ.003"].inputs[0]
)
# vector_math_029.Vector -> vector_math_005.Vector
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Vector Math.029"].outputs[0],
pd_boxstar_1.nodes["Vector Math.005"].inputs[0]
)
# vector_math_007.Vector -> reroute_010.Input
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Vector Math.007"].outputs[0],
pd_boxstar_1.nodes["Reroute.010"].inputs[0]
)
# vector_math_013.Vector -> reroute_011.Input
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Vector Math.013"].outputs[0],
pd_boxstar_1.nodes["Reroute.011"].inputs[0]
)
# vector_math_014.Vector -> reroute.Input
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Vector Math.014"].outputs[0],
pd_boxstar_1.nodes["Reroute"].inputs[0]
)
# vector_math_029.Vector -> reroute_005.Input
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Vector Math.029"].outputs[0],
pd_boxstar_1.nodes["Reroute.005"].inputs[0]
)
# reroute_005.Output -> reroute_008.Input
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Reroute.005"].outputs[0],
pd_boxstar_1.nodes["Reroute.008"].inputs[0]
)
# reroute_010.Output -> vector_math_009.Vector
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Reroute.010"].outputs[0],
pd_boxstar_1.nodes["Vector Math.009"].inputs[0]
)
# reroute_011.Output -> reroute_012.Input
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Reroute.011"].outputs[0],
pd_boxstar_1.nodes["Reroute.012"].inputs[0]
)
# reroute.Output -> reroute_001.Input
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Reroute"].outputs[0],
pd_boxstar_1.nodes["Reroute.001"].inputs[0]
)
# reroute_008.Output -> vector_math_004.Vector
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Reroute.008"].outputs[0],
pd_boxstar_1.nodes["Vector Math.004"].inputs[0]
)
# reroute_008.Output -> separate_xyz_002.Vector
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Reroute.008"].outputs[0],
pd_boxstar_1.nodes["Separate XYZ.002"].inputs[0]
)
# reroute_001.Output -> vector_math_019.Vector
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Reroute.001"].outputs[0],
pd_boxstar_1.nodes["Vector Math.019"].inputs[0]
)
# reroute_012.Output -> vector_math_018.Vector
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Reroute.012"].outputs[0],
pd_boxstar_1.nodes["Vector Math.018"].inputs[0]
)
# position.Position -> vector_math_020.Vector
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Position"].outputs[0],
pd_boxstar_1.nodes["Vector Math.020"].inputs[0]
)
# group_input_012.Scale -> vector_math_020.Scale
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Group Input.012"].outputs[5],
pd_boxstar_1.nodes["Vector Math.020"].inputs[3]
)
# normal_001.Normal -> vector_math_disp_001.Vector
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Normal.001"].outputs[0],
pd_boxstar_1.nodes["Vector Math.Disp.001"].inputs[0]
)
# vector_math_disp_001.Vector -> set_position_001.Offset
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Vector Math.Disp.001"].outputs[0],
pd_boxstar_1.nodes["Set Position.001"].inputs[3]
)
# math_043.Value -> math_010.Value
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Math.043"].outputs[0],
pd_boxstar_1.nodes["Math.010"].inputs[1]
)
# math_011.Value -> mix_003.A
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Math.011"].outputs[0],
pd_boxstar_1.nodes["Mix.003"].inputs[2]
)
# group_input_013.Edge Thickness -> map_range_003.From Min
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Group Input.013"].outputs[1],
pd_boxstar_1.nodes["Map Range.003"].inputs[1]
)
# map_range_004.Result -> math_012.Value
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Map Range.004"].outputs[0],
pd_boxstar_1.nodes["Math.012"].inputs[0]
)
# map_range_003.Result -> map_range_004.Value
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Map Range.003"].outputs[0],
pd_boxstar_1.nodes["Map Range.004"].inputs[0]
)
# group_input_007.Bevel -> math_013.Value
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Group Input.007"].outputs[2],
pd_boxstar_1.nodes["Math.013"].inputs[1]
)
# math_013.Value -> map_range_004.From Max
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Math.013"].outputs[0],
pd_boxstar_1.nodes["Map Range.004"].inputs[2]
)
# group_input_014.Depth -> vector_math_024.Vector
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Group Input.014"].outputs[3],
pd_boxstar_1.nodes["Vector Math.024"].inputs[1]
)
# group_input_015.Cutoff -> compare_001.B
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Group Input.015"].outputs[4],
pd_boxstar_1.nodes["Compare.001"].inputs[1]
)
# compare_001.Result -> delete_geometry_001.Selection
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Compare.001"].outputs[0],
pd_boxstar_1.nodes["Delete Geometry.001"].inputs[1]
)
# set_position_001.Geometry -> set_shade_smooth_001.Mesh
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Set Position.001"].outputs[0],
pd_boxstar_1.nodes["Set Shade Smooth.001"].inputs[0]
)
# set_shade_smooth_001.Mesh -> delete_geometry_001.Geometry
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Set Shade Smooth.001"].outputs[0],
pd_boxstar_1.nodes["Delete Geometry.001"].inputs[0]
)
# delete_geometry_001.Geometry -> group_output_001.Geometry
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Delete Geometry.001"].outputs[0],
pd_boxstar_1.nodes["Group Output.001"].inputs[0]
)
# vector_math_024.Vector -> reroute_014.Input
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Vector Math.024"].outputs[0],
pd_boxstar_1.nodes["Reroute.014"].inputs[0]
)
# group_input_021.Geometry -> set_position_001.Geometry
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Group Input.021"].outputs[0],
pd_boxstar_1.nodes["Set Position.001"].inputs[0]
)
# group_input_022.Scale -> math_043.Value
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Group Input.022"].outputs[5],
pd_boxstar_1.nodes["Math.043"].inputs[1]
)
# group_input_007.Bevel -> math_012.Value
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Group Input.007"].outputs[2],
pd_boxstar_1.nodes["Math.012"].inputs[1]
)
# math_012.Value -> math_011.Value
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Math.012"].outputs[0],
pd_boxstar_1.nodes["Math.011"].inputs[0]
)
# math_012.Value -> math_invertcarve.Value
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Math.012"].outputs[0],
pd_boxstar_1.nodes["Math.InvertCarve"].inputs[1]
)
# math_invertcarve.Value -> mix_003.B
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Math.InvertCarve"].outputs[0],
pd_boxstar_1.nodes["Mix.003"].inputs[3]
)
# reroute_014.Output -> vector_math_disp_001.Vector
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Reroute.014"].outputs[0],
pd_boxstar_1.nodes["Vector Math.Disp.001"].inputs[1]
)
# math_012.Value -> compare_001.A
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Math.012"].outputs[0],
pd_boxstar_1.nodes["Compare.001"].inputs[0]
)
# group_input.Invert -> mix_003.Factor
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Group Input"].outputs[6],
pd_boxstar_1.nodes["Mix.003"].inputs[0]
)
# math_028.Value -> math.Value
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Math.028"].outputs[0],
pd_boxstar_1.nodes["Math"].inputs[0]
)
# group_input_001.Scale -> math.Value
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Group Input.001"].outputs[5],
pd_boxstar_1.nodes["Math"].inputs[1]
)
# math.Value -> map_range_003.Value
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Math"].outputs[0],
pd_boxstar_1.nodes["Map Range.003"].inputs[0]
)
# mix_003.Result -> vector_math_024.Vector
pd_boxstar_1.links.new(
pd_boxstar_1.nodes["Mix.003"].outputs[0],
pd_boxstar_1.nodes["Vector Math.024"].inputs[0]
)
return pd_boxstar_1
if __name__ == "__main__":
# Maps node tree creation functions to the node tree
# name, such that we don't recreate node trees unnecessarily
node_tree_names : dict[typing.Callable, str] = {}
pd_boxstar = pd_boxstar_1_node_group(node_tree_names)
node_tree_names[pd_boxstar_1_node_group] = pd_boxstar.name
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment