{
  "id": "curvesect",
  "name": "Curvesect",
  "displayName": "Curvesect",
  "category": "SOP",
  "subcategory": "Generators",
  "version": "",
  "lastUpdated": "2025-08-08T00:37:41.827Z",
  "sourceFile": "C:\\Program Files\\Derivative\\TouchDesigner\\Samples\\Learn\\OfflineHelp\\https.docs.derivative.ca\\Curvesect_SOP.htm",
  "url": "",
  "description": "The Curvesect SOP finds the intersections or the points of minimum distance between two or more faces (polygons, Bziers, and NURBS curves) or between faces and a polygonal or spline surface.",
  "summary": "The Curvesect SOP finds the intersections or the points of minimum distance between two or more faces (polygons, Bziers, and NURBS curves) or between faces and a polygonal or spline surface.",
  "details": "",
  "usage": "",
  "tips": [],
  "warnings": [],
  "parameters": [
    {
      "id": null,
      "name": "Face Group",
      "label": "Face Group",
      "group": "General",
      "page": "",
      "type": "float",
      "dataType": "number",
      "style": "",
      "defaultValue": null,
      "minValue": null,
      "maxValue": null,
      "step": null,
      "menuItems": [],
      "menuLabels": [],
      "allowCustom": false,
      "maxLength": null,
      "pattern": null,
      "isArray": false,
      "arraySize": 1,
      "dimensions": 1,
      "description": "From Derivative\n\t\t\n\t\t\n\t\t\n\t\t\n\t\tJump to navigation\n\t\tJump to search\n\t\t\nThe Curvesect  finds the intersections or the points of minimum distance between two or more faces (polygons, Bziers, and NURBS curves) or between faces and a polygonal or spline surface.\ncurvesectSOP_Class\n\nContents\n \n \n \n \n \n \n\n \n \n \n \n\n\n\n\n\n  leftgroup - A subset of faces (NURBS, Bzier, polygons) to act upon. Accepts patterns, as described in Pattern Matching.\n\n\n\t\t\t\n  rightgroup - A subset of faces or spline surfaces to intersect with. Accepts patterns, as described in Pattern Matching.\n\n\n\t\t\t\n  xsect - Compute intersection points if the faces touch the cutter primitive. If the button is unchecked, only the point of minimum distance will be found. Currently, finding the minimum distance between a face and a surface is not available.\n\n\n\t\t\t\n  tolerance - Determines the precision of the intersection.\n\n\n\t\n  method -  - Choose between 'Cut' or 'Extract' operations.\n\n cut - extract -\n\t\t\n  left -  - Choose what parts of the left faces to keep:\n\n lkeepall - All the face segments generated by the intersection(s). lkeepodd - The odd face segments: 1, 3, 5... lkeepeven - The even face segments: 0, 2, 4... lkeepnone - Delete the entire face.\n\t\t\n  right -  - Choose what parts of the right faces to keep:\n\n rkeepall - All the face segments generated by the intersection(s). rkeepodd - The odd face segments: 1, 3, 5... rkeepeven - The even face segments: 0, 2, 4... rkeepnone - Delete the entire face.\n\t\t\t\n  affect -  - Choose which input to operate on:\n\n left - Extract from the left input faces. right - Extract from the right input (face or surface). both - Extract from both left and right inputs.\n\t\t\n  extractpt - If the right input is a surface, choose between point and isoparm extraction; only points are extracted if the right input is a face.\n\n\n\t\t\n  keeporiginal - When using Extract method, turning this on will keep the original geometry connected to the first input (input0).\n\n\n\n\n\n\n\nPlace two NURBS Circle SOPs, one of them slightly offset in X and Y (not Z).\n their outputs into a Curvesect , make it the display .\nMethod: Cut. For the Left Face, select Keep Odd-numbered Ones.\nYou can extract the inside (even) or outside (odd) portion of the curve where they intersect.\n\nModel a closed NURBS curve in the shape of a star (use a Model ).\nPlace a NURBS Circle .\n them into a Curvesect , make it the display .\nIt produces five independent NURBS curves based on their intersection with the NURBS circle.\nYou could append a Join  to reconnect the individual NURBS curves into a new continuous curve. It smoothly connects the remaining segments.\n\nPlace a new Font  and then a Circle . Circle  - Type: NURBS, Radius 0.1, 0.1; Centre -3, 0.3, 0.2. Font  - Text: \"Creep Along Me\".\nAppend a Curvesect  with the Font and Circle SOPs feeding into the first and second inputs respectively. Change the Tolerance to 1.0, and enable the Extract operation. Turn off Find All Intersections. Make it the display .\nEnable the template flags on the Font and Circle SOPs (use S click).\nHome the view, and enable the  display in the Viewport options.\nAs you change the Circle's X value from -3.0 to 3.0, you will notice that a number of points will creep along the paths of the curves within the text. Using a Copy  to copy geometry to each of these points gives you a simple way of creating an irregular \"flocking behaviour\" along predetermined paths. This works, because as the circle moves above the curves in the text, the points in the curves that are closest to the circle move also.\nUse a Model  instead of a Font  to model several NURBS curves which are the paths to follow for more precise control over the motion.\n\n\n -\n -\n\nExtra Information for the Curvesect  can be accessed via an Info CHOP.\n\n\n\n - Number of points in this . - Number of primitives in this . - Number of particles in this . - Time spent in another thread updating geometry data on the  from the 's CPU data. As it is part of another thread, this time is not part of the usual frame time. - Time spent in another thread updating meta surface geometry data (such as metaballs or nurbs) on the  from the 's CPU data. As it is part of another thread, this time is not part of the usual frame time.\n - Number of times the operator has cooked since the process started. - Duration of the last cook in milliseconds. - Frame number when this operator was last cooked relative to the component timeline. - Frame number when this operator was last cooked relative to the absolute time. - Time in milliseconds at which the operator started cooking in the frame it was cooked. - Time in milliseconds at which the operator finished cooking in the frame it was cooked. - 1 if operator was cooked this frame. - Number of warnings in this operator if any. - Number of errors in this operator if any.\nTouchDesigner Build: Latest\\n2022.241402021.100002018.28070before 2018.28070\nSOPs\n• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • \n\nA Operator Family that reads, creates and modifies 3D points, polygons, lines, particles, surfaces, spheres and meatballs. Particles and point clouds are now done primarily on the GPU using TOPs.\n\n\n\nEach SOP has a list of Points. Each point has an XYZ 3D position value plus other optional attributes. Each polygon Primitive is defined by a vertex list, which is list of point numbers.\n\n\n\nA way of moving data from one TouchDesigner process to another. Images are moved via Touch Out / In TOPs, channels are moved via Touch Out / In CHOPs and Pipe Out / In CHOPs. Data moves via TCP/IP or UDP.\n\n\n\nThe location of an operator within the TouchDesigner environment, for example, /geo1/circle1, a node called circle1 in a component called geo1. The path / is called Root. This path is displayed at the top of every Pane, showing which Component's network you are currently in. To refer instead to a filesystem folder, directory, disk file or http: address, see Folder.\n\n\n\nAn Operator Family which operate on Channels (a sequence of numbers (Samples)) which are used for animation, audio, mathematics, simulation, logic, UI construction, and data streamed from/to devices and protocols.\n\n\n\nThe Graphics Processing Unit. This is the high-speed, many-core processor of the graphics card/chip that takes geometry, images and data from the CPU and creates images and processed data.\n\n\n\n\n\n\n\n\nRetrieved from \"https://docs.derivative.ca/index.php?title=Curvesect_SOP&oldid=24185\"\n\t\tCategory: SOPs",
      "tooltip": "",
      "help": "",
      "units": "",
      "examples": [],
      "isReadOnly": false,
      "isAdvanced": false,
      "isHidden": false,
      "isAnimatable": true,
      "isExpression": false,
      "isPython": false,
      "dependsOn": [],
      "affects": [],
      "linkedTo": [],
      "expressionLanguage": "",
      "defaultExpression": "",
      "commonExpressions": [],
      "order": 0,
      "isVisible": true,
      "conditionalDisplay": null,
      "isValid": true,
      "validationErrors": [],
      "lastUpdated": "2025-08-08T00:37:41.823Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Face Group",
      "label": "Face Group",
      "group": "General",
      "page": "",
      "type": "float",
      "dataType": "number",
      "style": "",
      "defaultValue": null,
      "minValue": null,
      "maxValue": null,
      "step": null,
      "menuItems": [],
      "menuLabels": [],
      "allowCustom": false,
      "maxLength": null,
      "pattern": null,
      "isArray": false,
      "arraySize": 1,
      "dimensions": 1,
      "description": "From Derivative\n\t\t\n\t\t\n\t\t\n\t\t\n\t\tJump to navigation\n\t\tJump to search\n\t\t\nThe Curvesect  finds the intersections or the points of minimum distance between two or more faces (polygons, Bziers, and NURBS curves) or between faces and a polygonal or spline surface.\ncurvesectSOP_Class\n\nContents\n \n \n \n \n \n \n\n \n \n \n \n\n\n\n\n\n  leftgroup - A subset of faces (NURBS, Bzier, polygons) to act upon. Accepts patterns, as described in Pattern Matching.\n\n\n\t\t\t\n  rightgroup - A subset of faces or spline surfaces to intersect with. Accepts patterns, as described in Pattern Matching.\n\n\n\t\t\t\n  xsect - Compute intersection points if the faces touch the cutter primitive. If the button is unchecked, only the point of minimum distance will be found. Currently, finding the minimum distance between a face and a surface is not available.\n\n\n\t\t\t\n  tolerance - Determines the precision of the intersection.\n\n\n\t\n  method -  - Choose between 'Cut' or 'Extract' operations.\n\n cut - extract -\n\t\t\n  left -  - Choose what parts of the left faces to keep:\n\n lkeepall - All the face segments generated by the intersection(s). lkeepodd - The odd face segments: 1, 3, 5... lkeepeven - The even face segments: 0, 2, 4... lkeepnone - Delete the entire face.\n\t\t\n  right -  - Choose what parts of the right faces to keep:\n\n rkeepall - All the face segments generated by the intersection(s). rkeepodd - The odd face segments: 1, 3, 5... rkeepeven - The even face segments: 0, 2, 4... rkeepnone - Delete the entire face.\n\t\t\t\n  affect -  - Choose which input to operate on:\n\n left - Extract from the left input faces. right - Extract from the right input (face or surface). both - Extract from both left and right inputs.\n\t\t\n  extractpt - If the right input is a surface, choose between point and isoparm extraction; only points are extracted if the right input is a face.\n\n\n\t\t\n  keeporiginal - When using Extract method, turning this on will keep the original geometry connected to the first input (input0).\n\n\n\n\n\n\n\nPlace two NURBS Circle SOPs, one of them slightly offset in X and Y (not Z).\n their outputs into a Curvesect , make it the display .\nMethod: Cut. For the Left Face, select Keep Odd-numbered Ones.\nYou can extract the inside (even) or outside (odd) portion of the curve where they intersect.\n\nModel a closed NURBS curve in the shape of a star (use a Model ).\nPlace a NURBS Circle .\n them into a Curvesect , make it the display .\nIt produces five independent NURBS curves based on their intersection with the NURBS circle.\nYou could append a Join  to reconnect the individual NURBS curves into a new continuous curve. It smoothly connects the remaining segments.\n\nPlace a new Font  and then a Circle . Circle  - Type: NURBS, Radius 0.1, 0.1; Centre -3, 0.3, 0.2. Font  - Text: \"Creep Along Me\".\nAppend a Curvesect  with the Font and Circle SOPs feeding into the first and second inputs respectively. Change the Tolerance to 1.0, and enable the Extract operation. Turn off Find All Intersections. Make it the display .\nEnable the template flags on the Font and Circle SOPs (use S click).\nHome the view, and enable the  display in the Viewport options.\nAs you change the Circle's X value from -3.0 to 3.0, you will notice that a number of points will creep along the paths of the curves within the text. Using a Copy  to copy geometry to each of these points gives you a simple way of creating an irregular \"flocking behaviour\" along predetermined paths. This works, because as the circle moves above the curves in the text, the points in the curves that are closest to the circle move also.\nUse a Model  instead of a Font  to model several NURBS curves which are the paths to follow for more precise control over the motion.\n\n\n -\n -\n\nExtra Information for the Curvesect  can be accessed via an Info CHOP.\n\n\n\n - Number of points in this . - Number of primitives in this . - Number of particles in this . - Time spent in another thread updating geometry data on the  from the 's CPU data. As it is part of another thread, this time is not part of the usual frame time. - Time spent in another thread updating meta surface geometry data (such as metaballs or nurbs) on the  from the 's CPU data. As it is part of another thread, this time is not part of the usual frame time.\n - Number of times the operator has cooked since the process started. - Duration of the last cook in milliseconds. - Frame number when this operator was last cooked relative to the component timeline. - Frame number when this operator was last cooked relative to the absolute time. - Time in milliseconds at which the operator started cooking in the frame it was cooked. - Time in milliseconds at which the operator finished cooking in the frame it was cooked. - 1 if operator was cooked this frame. - Number of warnings in this operator if any. - Number of errors in this operator if any.\nTouchDesigner Build: Latest\\n2022.241402021.100002018.28070before 2018.28070\nSOPs\n• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • \n\nA Operator Family that reads, creates and modifies 3D points, polygons, lines, particles, surfaces, spheres and meatballs. Particles and point clouds are now done primarily on the GPU using TOPs.\n\n\n\nEach SOP has a list of Points. Each point has an XYZ 3D position value plus other optional attributes. Each polygon Primitive is defined by a vertex list, which is list of point numbers.\n\n\n\nA way of moving data from one TouchDesigner process to another. Images are moved via Touch Out / In TOPs, channels are moved via Touch Out / In CHOPs and Pipe Out / In CHOPs. Data moves via TCP/IP or UDP.\n\n\n\nThe location of an operator within the TouchDesigner environment, for example, /geo1/circle1, a node called circle1 in a component called geo1. The path / is called Root. This path is displayed at the top of every Pane, showing which Component's network you are currently in. To refer instead to a filesystem folder, directory, disk file or http: address, see Folder.\n\n\n\nAn Operator Family which operate on Channels (a sequence of numbers (Samples)) which are used for animation, audio, mathematics, simulation, logic, UI construction, and data streamed from/to devices and protocols.\n\n\n\nThe Graphics Processing Unit. This is the high-speed, many-core processor of the graphics card/chip that takes geometry, images and data from the CPU and creates images and processed data.\n\n\n\n\n\n\n\n\nRetrieved from \"https://docs.derivative.ca/index.php?title=Curvesect_SOP&oldid=24185\"\n\t\tCategory: SOPs",
      "tooltip": "",
      "help": "",
      "units": "",
      "examples": [],
      "isReadOnly": false,
      "isAdvanced": false,
      "isHidden": false,
      "isAnimatable": true,
      "isExpression": false,
      "isPython": false,
      "dependsOn": [],
      "affects": [],
      "linkedTo": [],
      "expressionLanguage": "",
      "defaultExpression": "",
      "commonExpressions": [],
      "order": 0,
      "isVisible": true,
      "conditionalDisplay": null,
      "isValid": true,
      "validationErrors": [],
      "lastUpdated": "2025-08-08T00:37:41.824Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Face Group",
      "label": "Face Group",
      "group": "General",
      "page": "",
      "type": "float",
      "dataType": "number",
      "style": "",
      "defaultValue": null,
      "minValue": null,
      "maxValue": null,
      "step": null,
      "menuItems": [],
      "menuLabels": [],
      "allowCustom": false,
      "maxLength": null,
      "pattern": null,
      "isArray": false,
      "arraySize": 1,
      "dimensions": 1,
      "description": "The Curvesect  finds the intersections or the points of minimum distance between two or more faces (polygons, Bziers, and NURBS curves) or between faces and a polygonal or spline surface.\ncurvesectSOP_Class\n\nContents\n \n \n \n \n \n \n\n \n \n \n \n\n\n\n\n\n  leftgroup - A subset of faces (NURBS, Bzier, polygons) to act upon. Accepts patterns, as described in Pattern Matching.\n\n\n\t\t\t\n  rightgroup - A subset of faces or spline surfaces to intersect with. Accepts patterns, as described in Pattern Matching.\n\n\n\t\t\t\n  xsect - Compute intersection points if the faces touch the cutter primitive. If the button is unchecked, only the point of minimum distance will be found. Currently, finding the minimum distance between a face and a surface is not available.\n\n\n\t\t\t\n  tolerance - Determines the precision of the intersection.\n\n\n\t\n  method -  - Choose between 'Cut' or 'Extract' operations.\n\n cut - extract -\n\t\t\n  left -  - Choose what parts of the left faces to keep:\n\n lkeepall - All the face segments generated by the intersection(s). lkeepodd - The odd face segments: 1, 3, 5... lkeepeven - The even face segments: 0, 2, 4... lkeepnone - Delete the entire face.\n\t\t\n  right -  - Choose what parts of the right faces to keep:\n\n rkeepall - All the face segments generated by the intersection(s). rkeepodd - The odd face segments: 1, 3, 5... rkeepeven - The even face segments: 0, 2, 4... rkeepnone - Delete the entire face.\n\t\t\t\n  affect -  - Choose which input to operate on:\n\n left - Extract from the left input faces. right - Extract from the right input (face or surface). both - Extract from both left and right inputs.\n\t\t\n  extractpt - If the right input is a surface, choose between point and isoparm extraction; only points are extracted if the right input is a face.\n\n\n\t\t\n  keeporiginal - When using Extract method, turning this on will keep the original geometry connected to the first input (input0).\n\n\n\n\n\n\n\nPlace two NURBS Circle SOPs, one of them slightly offset in X and Y (not Z).\n their outputs into a Curvesect , make it the display .\nMethod: Cut. For the Left Face, select Keep Odd-numbered Ones.\nYou can extract the inside (even) or outside (odd) portion of the curve where they intersect.\n\nModel a closed NURBS curve in the shape of a star (use a Model ).\nPlace a NURBS Circle .\n them into a Curvesect , make it the display .\nIt produces five independent NURBS curves based on their intersection with the NURBS circle.\nYou could append a Join  to reconnect the individual NURBS curves into a new continuous curve. It smoothly connects the remaining segments.\n\nPlace a new Font  and then a Circle . Circle  - Type: NURBS, Radius 0.1, 0.1; Centre -3, 0.3, 0.2. Font  - Text: \"Creep Along Me\".\nAppend a Curvesect  with the Font and Circle SOPs feeding into the first and second inputs respectively. Change the Tolerance to 1.0, and enable the Extract operation. Turn off Find All Intersections. Make it the display .\nEnable the template flags on the Font and Circle SOPs (use S click).\nHome the view, and enable the  display in the Viewport options.\nAs you change the Circle's X value from -3.0 to 3.0, you will notice that a number of points will creep along the paths of the curves within the text. Using a Copy  to copy geometry to each of these points gives you a simple way of creating an irregular \"flocking behaviour\" along predetermined paths. This works, because as the circle moves above the curves in the text, the points in the curves that are closest to the circle move also.\nUse a Model  instead of a Font  to model several NURBS curves which are the paths to follow for more precise control over the motion.\n\n\n -\n -\n\nExtra Information for the Curvesect  can be accessed via an Info CHOP.\n\n\n\n - Number of points in this . - Number of primitives in this . - Number of particles in this . - Time spent in another thread updating geometry data on the  from the 's CPU data. As it is part of another thread, this time is not part of the usual frame time. - Time spent in another thread updating meta surface geometry data (such as metaballs or nurbs) on the  from the 's CPU data. As it is part of another thread, this time is not part of the usual frame time.\n - Number of times the operator has cooked since the process started. - Duration of the last cook in milliseconds. - Frame number when this operator was last cooked relative to the component timeline. - Frame number when this operator was last cooked relative to the absolute time. - Time in milliseconds at which the operator started cooking in the frame it was cooked. - Time in milliseconds at which the operator finished cooking in the frame it was cooked. - 1 if operator was cooked this frame. - Number of warnings in this operator if any. - Number of errors in this operator if any.\nTouchDesigner Build: Latest\\n2022.241402021.100002018.28070before 2018.28070\nSOPs\n• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • \n\nA Operator Family that reads, creates and modifies 3D points, polygons, lines, particles, surfaces, spheres and meatballs. Particles and point clouds are now done primarily on the GPU using TOPs.\n\n\n\nEach SOP has a list of Points. Each point has an XYZ 3D position value plus other optional attributes. Each polygon Primitive is defined by a vertex list, which is list of point numbers.\n\n\n\nA way of moving data from one TouchDesigner process to another. Images are moved via Touch Out / In TOPs, channels are moved via Touch Out / In CHOPs and Pipe Out / In CHOPs. Data moves via TCP/IP or UDP.\n\n\n\nThe location of an operator within the TouchDesigner environment, for example, /geo1/circle1, a node called circle1 in a component called geo1. The path / is called Root. This path is displayed at the top of every Pane, showing which Component's network you are currently in. To refer instead to a filesystem folder, directory, disk file or http: address, see Folder.\n\n\n\nAn Operator Family which operate on Channels (a sequence of numbers (Samples)) which are used for animation, audio, mathematics, simulation, logic, UI construction, and data streamed from/to devices and protocols.\n\n\n\nThe Graphics Processing Unit. This is the high-speed, many-core processor of the graphics card/chip that takes geometry, images and data from the CPU and creates images and processed data.\n\n\n\n\n\n\n\n\nRetrieved from \"https://docs.derivative.ca/index.php?title=Curvesect_SOP&oldid=24185\"",
      "tooltip": "",
      "help": "",
      "units": "",
      "examples": [],
      "isReadOnly": false,
      "isAdvanced": false,
      "isHidden": false,
      "isAnimatable": true,
      "isExpression": false,
      "isPython": false,
      "dependsOn": [],
      "affects": [],
      "linkedTo": [],
      "expressionLanguage": "",
      "defaultExpression": "",
      "commonExpressions": [],
      "order": 0,
      "isVisible": true,
      "conditionalDisplay": null,
      "isValid": true,
      "validationErrors": [],
      "lastUpdated": "2025-08-08T00:37:41.826Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Face Group",
      "label": "Face Group",
      "group": "General",
      "page": "",
      "type": "float",
      "dataType": "number",
      "style": "",
      "defaultValue": null,
      "minValue": null,
      "maxValue": null,
      "step": null,
      "menuItems": [],
      "menuLabels": [],
      "allowCustom": false,
      "maxLength": null,
      "pattern": null,
      "isArray": false,
      "arraySize": 1,
      "dimensions": 1,
      "description": "leftgroup - A subset of faces (NURBS, Bzier, polygons) to act upon. Accepts patterns, as described in Pattern Matching.",
      "tooltip": "",
      "help": "",
      "units": "",
      "examples": [],
      "isReadOnly": false,
      "isAdvanced": false,
      "isHidden": false,
      "isAnimatable": true,
      "isExpression": false,
      "isPython": false,
      "dependsOn": [],
      "affects": [],
      "linkedTo": [],
      "expressionLanguage": "",
      "defaultExpression": "",
      "commonExpressions": [],
      "order": 0,
      "isVisible": true,
      "conditionalDisplay": null,
      "isValid": true,
      "validationErrors": [],
      "lastUpdated": "2025-08-08T00:37:41.826Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Cutter Group",
      "label": "Cutter Group",
      "group": "General",
      "page": "",
      "type": "float",
      "dataType": "number",
      "style": "",
      "defaultValue": null,
      "minValue": null,
      "maxValue": null,
      "step": null,
      "menuItems": [],
      "menuLabels": [],
      "allowCustom": false,
      "maxLength": null,
      "pattern": null,
      "isArray": false,
      "arraySize": 1,
      "dimensions": 1,
      "description": "rightgroup - A subset of faces or spline surfaces to intersect with. Accepts patterns, as described in Pattern Matching.",
      "tooltip": "",
      "help": "",
      "units": "",
      "examples": [],
      "isReadOnly": false,
      "isAdvanced": false,
      "isHidden": false,
      "isAnimatable": true,
      "isExpression": false,
      "isPython": false,
      "dependsOn": [],
      "affects": [],
      "linkedTo": [],
      "expressionLanguage": "",
      "defaultExpression": "",
      "commonExpressions": [],
      "order": 0,
      "isVisible": true,
      "conditionalDisplay": null,
      "isValid": true,
      "validationErrors": [],
      "lastUpdated": "2025-08-08T00:37:41.826Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Find All Intersections",
      "label": "Find All Intersections",
      "group": "General",
      "page": "",
      "type": "float",
      "dataType": "number",
      "style": "",
      "defaultValue": null,
      "minValue": null,
      "maxValue": null,
      "step": null,
      "menuItems": [],
      "menuLabels": [],
      "allowCustom": false,
      "maxLength": null,
      "pattern": null,
      "isArray": false,
      "arraySize": 1,
      "dimensions": 1,
      "description": "xsect - Compute intersection points if the faces touch the cutter primitive. If the button is unchecked, only the point of minimum distance will be found. Currently, finding the minimum distance between a face and a surface is not available.",
      "tooltip": "",
      "help": "",
      "units": "",
      "examples": [],
      "isReadOnly": false,
      "isAdvanced": false,
      "isHidden": false,
      "isAnimatable": true,
      "isExpression": false,
      "isPython": false,
      "dependsOn": [],
      "affects": [],
      "linkedTo": [],
      "expressionLanguage": "",
      "defaultExpression": "",
      "commonExpressions": [],
      "order": 0,
      "isVisible": true,
      "conditionalDisplay": null,
      "isValid": true,
      "validationErrors": [],
      "lastUpdated": "2025-08-08T00:37:41.826Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Tolerance",
      "label": "Tolerance",
      "group": "General",
      "page": "",
      "type": "float",
      "dataType": "number",
      "style": "",
      "defaultValue": null,
      "minValue": null,
      "maxValue": null,
      "step": null,
      "menuItems": [],
      "menuLabels": [],
      "allowCustom": false,
      "maxLength": null,
      "pattern": null,
      "isArray": false,
      "arraySize": 1,
      "dimensions": 1,
      "description": "tolerance - Determines the precision of the intersection.",
      "tooltip": "",
      "help": "",
      "units": "",
      "examples": [],
      "isReadOnly": false,
      "isAdvanced": false,
      "isHidden": false,
      "isAnimatable": true,
      "isExpression": false,
      "isPython": false,
      "dependsOn": [],
      "affects": [],
      "linkedTo": [],
      "expressionLanguage": "",
      "defaultExpression": "",
      "commonExpressions": [],
      "order": 0,
      "isVisible": true,
      "conditionalDisplay": null,
      "isValid": true,
      "validationErrors": [],
      "lastUpdated": "2025-08-08T00:37:41.826Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Method",
      "label": "Method",
      "group": "General",
      "page": "",
      "type": "float",
      "dataType": "number",
      "style": "",
      "defaultValue": null,
      "minValue": null,
      "maxValue": null,
      "step": null,
      "menuItems": [],
      "menuLabels": [],
      "allowCustom": false,
      "maxLength": null,
      "pattern": null,
      "isArray": false,
      "arraySize": 1,
      "dimensions": 1,
      "description": "method -  - Choose between 'Cut' or 'Extract' operations.\n\n cut - extract -",
      "tooltip": "",
      "help": "",
      "units": "",
      "examples": [],
      "isReadOnly": false,
      "isAdvanced": false,
      "isHidden": false,
      "isAnimatable": true,
      "isExpression": false,
      "isPython": false,
      "dependsOn": [],
      "affects": [],
      "linkedTo": [],
      "expressionLanguage": "",
      "defaultExpression": "",
      "commonExpressions": [],
      "order": 0,
      "isVisible": true,
      "conditionalDisplay": null,
      "isValid": true,
      "validationErrors": [],
      "lastUpdated": "2025-08-08T00:37:41.826Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Cut",
      "label": "Cut",
      "group": "General",
      "page": "",
      "type": "float",
      "dataType": "number",
      "style": "",
      "defaultValue": null,
      "minValue": null,
      "maxValue": null,
      "step": null,
      "menuItems": [],
      "menuLabels": [],
      "allowCustom": false,
      "maxLength": null,
      "pattern": null,
      "isArray": false,
      "arraySize": 1,
      "dimensions": 1,
      "description": "cut - extract -",
      "tooltip": "",
      "help": "",
      "units": "",
      "examples": [],
      "isReadOnly": false,
      "isAdvanced": false,
      "isHidden": false,
      "isAnimatable": true,
      "isExpression": false,
      "isPython": false,
      "dependsOn": [],
      "affects": [],
      "linkedTo": [],
      "expressionLanguage": "",
      "defaultExpression": "",
      "commonExpressions": [],
      "order": 0,
      "isVisible": true,
      "conditionalDisplay": null,
      "isValid": true,
      "validationErrors": [],
      "lastUpdated": "2025-08-08T00:37:41.826Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Left Face Pieces",
      "label": "Left Face Pieces",
      "group": "General",
      "page": "",
      "type": "float",
      "dataType": "number",
      "style": "",
      "defaultValue": null,
      "minValue": null,
      "maxValue": null,
      "step": null,
      "menuItems": [],
      "menuLabels": [],
      "allowCustom": false,
      "maxLength": null,
      "pattern": null,
      "isArray": false,
      "arraySize": 1,
      "dimensions": 1,
      "description": "left -  - Choose what parts of the left faces to keep:\n\n lkeepall - All the face segments generated by the intersection(s). lkeepodd - The odd face segments: 1, 3, 5... lkeepeven - The even face segments: 0, 2, 4... lkeepnone - Delete the entire face.",
      "tooltip": "",
      "help": "",
      "units": "",
      "examples": [],
      "isReadOnly": false,
      "isAdvanced": false,
      "isHidden": false,
      "isAnimatable": true,
      "isExpression": false,
      "isPython": false,
      "dependsOn": [],
      "affects": [],
      "linkedTo": [],
      "expressionLanguage": "",
      "defaultExpression": "",
      "commonExpressions": [],
      "order": 0,
      "isVisible": true,
      "conditionalDisplay": null,
      "isValid": true,
      "validationErrors": [],
      "lastUpdated": "2025-08-08T00:37:41.826Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Keep All",
      "label": "Keep All",
      "group": "General",
      "page": "",
      "type": "float",
      "dataType": "number",
      "style": "",
      "defaultValue": null,
      "minValue": null,
      "maxValue": null,
      "step": null,
      "menuItems": [],
      "menuLabels": [],
      "allowCustom": false,
      "maxLength": null,
      "pattern": null,
      "isArray": false,
      "arraySize": 1,
      "dimensions": 1,
      "description": "lkeepall - All the face segments generated by the intersection(s). lkeepodd - The odd face segments: 1, 3, 5... lkeepeven - The even face segments: 0, 2, 4... lkeepnone - Delete the entire face.",
      "tooltip": "",
      "help": "",
      "units": "",
      "examples": [],
      "isReadOnly": false,
      "isAdvanced": false,
      "isHidden": false,
      "isAnimatable": true,
      "isExpression": false,
      "isPython": false,
      "dependsOn": [],
      "affects": [],
      "linkedTo": [],
      "expressionLanguage": "",
      "defaultExpression": "",
      "commonExpressions": [],
      "order": 0,
      "isVisible": true,
      "conditionalDisplay": null,
      "isValid": true,
      "validationErrors": [],
      "lastUpdated": "2025-08-08T00:37:41.826Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Right Face Pieces",
      "label": "Right Face Pieces",
      "group": "General",
      "page": "",
      "type": "float",
      "dataType": "number",
      "style": "",
      "defaultValue": null,
      "minValue": null,
      "maxValue": null,
      "step": null,
      "menuItems": [],
      "menuLabels": [],
      "allowCustom": false,
      "maxLength": null,
      "pattern": null,
      "isArray": false,
      "arraySize": 1,
      "dimensions": 1,
      "description": "right -  - Choose what parts of the right faces to keep:\n\n rkeepall - All the face segments generated by the intersection(s). rkeepodd - The odd face segments: 1, 3, 5... rkeepeven - The even face segments: 0, 2, 4... rkeepnone - Delete the entire face.",
      "tooltip": "",
      "help": "",
      "units": "",
      "examples": [],
      "isReadOnly": false,
      "isAdvanced": false,
      "isHidden": false,
      "isAnimatable": true,
      "isExpression": false,
      "isPython": false,
      "dependsOn": [],
      "affects": [],
      "linkedTo": [],
      "expressionLanguage": "",
      "defaultExpression": "",
      "commonExpressions": [],
      "order": 0,
      "isVisible": true,
      "conditionalDisplay": null,
      "isValid": true,
      "validationErrors": [],
      "lastUpdated": "2025-08-08T00:37:41.826Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Keep All",
      "label": "Keep All",
      "group": "General",
      "page": "",
      "type": "float",
      "dataType": "number",
      "style": "",
      "defaultValue": null,
      "minValue": null,
      "maxValue": null,
      "step": null,
      "menuItems": [],
      "menuLabels": [],
      "allowCustom": false,
      "maxLength": null,
      "pattern": null,
      "isArray": false,
      "arraySize": 1,
      "dimensions": 1,
      "description": "rkeepall - All the face segments generated by the intersection(s). rkeepodd - The odd face segments: 1, 3, 5... rkeepeven - The even face segments: 0, 2, 4... rkeepnone - Delete the entire face.",
      "tooltip": "",
      "help": "",
      "units": "",
      "examples": [],
      "isReadOnly": false,
      "isAdvanced": false,
      "isHidden": false,
      "isAnimatable": true,
      "isExpression": false,
      "isPython": false,
      "dependsOn": [],
      "affects": [],
      "linkedTo": [],
      "expressionLanguage": "",
      "defaultExpression": "",
      "commonExpressions": [],
      "order": 0,
      "isVisible": true,
      "conditionalDisplay": null,
      "isValid": true,
      "validationErrors": [],
      "lastUpdated": "2025-08-08T00:37:41.826Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Affect",
      "label": "Affect",
      "group": "General",
      "page": "",
      "type": "float",
      "dataType": "number",
      "style": "",
      "defaultValue": null,
      "minValue": null,
      "maxValue": null,
      "step": null,
      "menuItems": [],
      "menuLabels": [],
      "allowCustom": false,
      "maxLength": null,
      "pattern": null,
      "isArray": false,
      "arraySize": 1,
      "dimensions": 1,
      "description": "affect -  - Choose which input to operate on:\n\n left - Extract from the left input faces. right - Extract from the right input (face or surface). both - Extract from both left and right inputs.",
      "tooltip": "",
      "help": "",
      "units": "",
      "examples": [],
      "isReadOnly": false,
      "isAdvanced": false,
      "isHidden": false,
      "isAnimatable": true,
      "isExpression": false,
      "isPython": false,
      "dependsOn": [],
      "affects": [],
      "linkedTo": [],
      "expressionLanguage": "",
      "defaultExpression": "",
      "commonExpressions": [],
      "order": 0,
      "isVisible": true,
      "conditionalDisplay": null,
      "isValid": true,
      "validationErrors": [],
      "lastUpdated": "2025-08-08T00:37:41.826Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Left Input",
      "label": "Left Input",
      "group": "General",
      "page": "",
      "type": "float",
      "dataType": "number",
      "style": "",
      "defaultValue": null,
      "minValue": null,
      "maxValue": null,
      "step": null,
      "menuItems": [],
      "menuLabels": [],
      "allowCustom": false,
      "maxLength": null,
      "pattern": null,
      "isArray": false,
      "arraySize": 1,
      "dimensions": 1,
      "description": "left - Extract from the left input faces. right - Extract from the right input (face or surface). both - Extract from both left and right inputs.",
      "tooltip": "",
      "help": "",
      "units": "",
      "examples": [],
      "isReadOnly": false,
      "isAdvanced": false,
      "isHidden": false,
      "isAnimatable": true,
      "isExpression": false,
      "isPython": false,
      "dependsOn": [],
      "affects": [],
      "linkedTo": [],
      "expressionLanguage": "",
      "defaultExpression": "",
      "commonExpressions": [],
      "order": 0,
      "isVisible": true,
      "conditionalDisplay": null,
      "isValid": true,
      "validationErrors": [],
      "lastUpdated": "2025-08-08T00:37:41.826Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Extract Point",
      "label": "Extract Point",
      "group": "General",
      "page": "",
      "type": "float",
      "dataType": "number",
      "style": "",
      "defaultValue": null,
      "minValue": null,
      "maxValue": null,
      "step": null,
      "menuItems": [],
      "menuLabels": [],
      "allowCustom": false,
      "maxLength": null,
      "pattern": null,
      "isArray": false,
      "arraySize": 1,
      "dimensions": 1,
      "description": "extractpt - If the right input is a surface, choose between point and isoparm extraction; only points are extracted if the right input is a face.",
      "tooltip": "",
      "help": "",
      "units": "",
      "examples": [],
      "isReadOnly": false,
      "isAdvanced": false,
      "isHidden": false,
      "isAnimatable": true,
      "isExpression": false,
      "isPython": false,
      "dependsOn": [],
      "affects": [],
      "linkedTo": [],
      "expressionLanguage": "",
      "defaultExpression": "",
      "commonExpressions": [],
      "order": 0,
      "isVisible": true,
      "conditionalDisplay": null,
      "isValid": true,
      "validationErrors": [],
      "lastUpdated": "2025-08-08T00:37:41.826Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Keep Original",
      "label": "Keep Original",
      "group": "General",
      "page": "",
      "type": "float",
      "dataType": "number",
      "style": "",
      "defaultValue": null,
      "minValue": null,
      "maxValue": null,
      "step": null,
      "menuItems": [],
      "menuLabels": [],
      "allowCustom": false,
      "maxLength": null,
      "pattern": null,
      "isArray": false,
      "arraySize": 1,
      "dimensions": 1,
      "description": "keeporiginal - When using Extract method, turning this on will keep the original geometry connected to the first input (input0).",
      "tooltip": "",
      "help": "",
      "units": "",
      "examples": [],
      "isReadOnly": false,
      "isAdvanced": false,
      "isHidden": false,
      "isAnimatable": true,
      "isExpression": false,
      "isPython": false,
      "dependsOn": [],
      "affects": [],
      "linkedTo": [],
      "expressionLanguage": "",
      "defaultExpression": "",
      "commonExpressions": [],
      "order": 0,
      "isVisible": true,
      "conditionalDisplay": null,
      "isValid": true,
      "validationErrors": [],
      "lastUpdated": "2025-08-08T00:37:41.826Z",
      "rawData": {},
      "sourceElement": null
    }
  ],
  "parameterGroups": {},
  "codeExamples": [],
  "pythonExamples": [],
  "expressions": [],
  "commonInputs": [],
  "commonOutputs": [],
  "relatedOperators": [],
  "workflowPatterns": [],
  "images": [],
  "videos": [],
  "assets": [],
  "keywords": [
    "curvesect",
    "finds",
    "intersections",
    "points",
    "minimum",
    "distance",
    "between",
    "more",
    "faces",
    "(polygons,"
  ],
  "tags": [
    "SOP",
    "TouchDesigner",
    "Curvesect"
  ],
  "searchWeight": 1,
  "contentHash": "",
  "processingDate": "2025-08-08T00:37:41.827Z",
  "processingVersion": "1.0.0",
  "isValid": true,
  "validationErrors": []
}