| 
54 | 54 |     "GeometryNodeFillCurve"                 : ["mode"],   | 
55 | 55 |     "GeometryNodeFilletCurve"               : ["mode"],  | 
56 | 56 |     "GeometryNodeResampleCurve"             : ["mode"],  | 
57 |  | -    "GeometryNodeSampleCurve"               : ["mode"],  | 
 | 57 | +    "GeometryNodeSampleCurve"               : ["data_type", "mode",  | 
 | 58 | +                                               "use_all_curves"],  | 
58 | 59 |     "GeometryNodeTrimCurve"                 : ["mode"],  | 
 | 60 | +    "GeometryNodeSetCurveNormal"            : ["mode"],  | 
59 | 61 |     "GeometryNodeCurveHandleTypeSelection"  : ["mode", "handle_type"],  | 
60 | 62 |     "GeometryNodeSetCurveHandlePositions"   : ["mode"],  | 
61 | 63 |     "GeometryNodeCurveSetHandles"           : ["mode", "handle_type"],  | 
 | 
74 | 76 |     "GeometryNodeProximity"         : ["target_element"],  | 
75 | 77 |     "GeometryNodeMergeByDistance"   : ["mode"],  | 
76 | 78 |     "GeometryNodeRaycast"           : ["data_type", "mapping"],  | 
 | 79 | +    "GeometryNodeSampleIndex"       : ["data_type", "domain", "clamp"],  | 
 | 80 | +    "GeometryNodeSampleNearest"     : ["domain"],  | 
77 | 81 |     "GeometryNodeSeparateGeometry"  : ["domain"],  | 
78 | 82 | 
 
  | 
79 | 83 |     #input  | 
 | 
86 | 90 |     "GeometryNodeMeshBoolean"           : ["operation"],  | 
87 | 91 |     "GeometryNodeMeshToPoints"          : ["mode"],  | 
88 | 92 |     "GeometryNodeMeshToVolume"          : ["resolution_mode"],  | 
 | 93 | +    "GeometryNodeSampleNearestSurface"  : ["data_type"],  | 
 | 94 | +    "GeometryNodeSampleUVSurface"       : ["data_type"],  | 
89 | 95 |     "GeometryNodeSubdivisionSurface"    : ["uv_smooth", "boundary_smooth"],  | 
90 | 96 |     "GeometryNodeTriangulate"           : ["quad_method", "ngon_method"],  | 
91 | 97 |     "GeometryNodeScaleElements"         : ["domain", "scale_mode"],  | 
 | 
96 | 102 |     "GeometryNodeMeshCircle"    : ["fill_type"],  | 
97 | 103 |     "GeometryNodeMeshLine"      : ["mode"],  | 
98 | 104 | 
 
  | 
 | 105 | +    #output  | 
 | 106 | +    "GeometryNodeViewer"    : ["domain"],  | 
 | 107 | +      | 
99 | 108 |     #point  | 
100 |  | -    "GeometryNodeDistributePointsOnFaces" : ["distribute_method"],  | 
101 |  | -    "GeometryNodePointsToVolume"          : ["resolution_mode"],  | 
 | 109 | +    "GeometryNodeDistributePointsInVolume"  : ["mode"],  | 
 | 110 | +    "GeometryNodeDistributePointsOnFaces"   : ["distribute_method"],  | 
 | 111 | +    "GeometryNodePointsToVolume"            : ["resolution_mode"],  | 
102 | 112 | 
 
  | 
103 | 113 |     #text  | 
104 | 114 |     "GeometryNodeStringToCurves" : ["overflow", "align_x", "align_y",   | 
@@ -280,11 +290,12 @@ def process_node_group(node_group, level):  | 
280 | 290 |                 #special nodes  | 
281 | 291 |                 if node.bl_idname in node_settings:  | 
282 | 292 |                     for setting in node_settings[node.bl_idname]:  | 
283 |  | -                        attr = getattr(node, setting)  | 
284 |  | -                        if type(attr) == str:  | 
285 |  | -                            attr = f"\'{attr}\'"  | 
286 |  | -                        file.write((f"{inner}{node_name}.{setting} = "  | 
287 |  | -                                    f"{attr}\n"))  | 
 | 293 | +                        attr = getattr(node, setting, None)  | 
 | 294 | +                        if attr:  | 
 | 295 | +                            if type(attr) == str:  | 
 | 296 | +                                attr = f"\'{attr}\'"  | 
 | 297 | +                            file.write((f"{inner}{node_name}.{setting} "  | 
 | 298 | +                                        f"= {attr}\n"))  | 
288 | 299 |                 elif node.bl_idname == 'GeometryNodeGroup':  | 
289 | 300 |                     file.write((f"{inner}{node_name}.node_tree = "  | 
290 | 301 |                                 f"bpy.data.node_groups"  | 
 | 
0 commit comments