Curves

A curve in 3D modeling space is represented as a line geometry, referred to as a 3D curve.

Such curves are often used to define complex relationships that are difficult to express analytically, such as in a Point-to-Curve (PTCV) constraint.

A curve is defined parametrically using a single free parameter, u . As illustrated in the image below, consider a curve C defined within a coordinate system O x y z . The coordinates of any arbitrary point P on the curve, measured in O x y z , can be uniquely expressed as functions of u :

x = f ( u )

y = g ( u )

z = h ( u )

These functions define the x-, y-, and z-coordinates of point P. The range of the parameter u, from its start to end values, determines the extent of the curve.



For information on how to add or edit an entity like a curve, see Entity Creation.

When you create a curve, you must select a Source:
  • Part: From the Features field, select one or more geometric features on a part. Features can be edges and lines.
    Note: A curve can consist of multiple geometric features, but these features must be connected, form a continuous path, and belong to the same part.
  • File:
    • Spline Control: Select whether the points are to be exactly on the curve (Curve Points) or used to fit the curve (Control Points).
    • Loop Type: Select whether or not the first and last point should be connected for a closed curve. Choosing Closed results in a continuous path for a constraint using this curve.
    • Select .csv files for the X File, Y File, and Z File.
  • Value:
    • Spline Control: Select whether the points are to be exactly on the curve (Curve Points) or used to fit the curve (Control Points).
    • Loop Type: Select whether or not the first and last point should be connected for a closed curve. Choosing Closed results in a continuous path for a constraint using this curve.
    • Enter the x, y, and z data values for each point.

      Double-click each cell in the table to edit the data values.

      You can use the Add
      Add Plus Sign Icon
      and Delete
      Trash Can Delete Icon
      buttons to adjust the number of rows of data values in the table.
  • Math:
    • Spline Control: Select whether the points are to be exactly on the curve (Curve Points) or used to fit the curve (Control Points).
    • Loop Type: Select whether or not the first and last point should be connected for a closed curve. Choosing Closed results in a continuous path for a constraint using this curve.
    • Define the vector mathematically in the X Expression, Y Expression, and Z Expression fields.
      Below are two sample expressions:
      Expression Description
      X Expression 0:10:1 X vector expression to generate a series of numbers from 0 to 10 at regular intervals of 1.
      Y Expression cos(Curve_0.x) Y vector expression to apply a cosine function on the X vector of the curve.
      Z Expression sin(Curve_0.x) Z vector expression to apply a sine function on the X vector of the curve.

Curve Properties

Descriptions of curve properties in the Property Editor.

Table 1.
Property Name Description
General
Name Name of the entity
Variable Name The variable name, a unique identifier string of the entity
ID A unique identifying integer
Type 3D Cartesian
Properties
X Data source File

This is set in the guide panel.

File Browse for location of .csv file with data values.
Type The Type is a block of data. Options are Unknown, column_names, and Index where column_names refer to the name assigned to the column in the header row of the .csv file for each column. If the .csv does not have any header row, column_names take default names as Column 1, Column 2 etc.
Request The Request is a sub-block of data. Options available depend on the value of Type.

If Type is set to Unknown, Request is set to Block 1.

If Type is set to Column 1 or Index, Request is set to Index.

Component The component is a vector (or column) within a sub-block of data. Options available depend on the value of Type.

If Type is set to Unknown, options are column_names.

If Type is set to Column 1, Component is set to Column 1.

If Type is set to Index, Component is set to Index.

Data source Value

This is set in the guide panel.

Values Click to open the guide panel and set values.
Data source Math

This is set in the guide panel.

Math Enter an expression for the X vector.
Y Data source File

This is set in the guide panel.

File Browse for location of .csv file with data values.
Type The Type is a block of data. Options are Unknown, column_names, and Index where column_names refer to the name assigned to the column in the header row of the .csv file for each column. If the .csv does not have any header row, column_names take default names as Column 1, Column 2, etc.
Request The Request is a sub-block of data. Options available depend on the value of Type.

If Type is set to Unknown, Request is set to Block 1.

If Type is set to Column 1 or Index, Request is set to Index.

Component The component is a vector (or column) within a sub-block of data. Options available depend on the value of Type.

If Type is set to Unknown, options are column_names.

If Type is set to Column 1, Component is set to Column 1.

If Type is set to Index, Component is set to Index.

Data source Value

This is set in the guide panel.

Values Click to open the guide panel and set values.
Data source Math

This is set in the guide panel.

Math Enter an expression for the Y vector.
Z Data source File

This is set in the guide panel.

File Browse for location of .csv file with data values.
Type The Type is a block of data. Options are Unknown, column_names, and Index where column_names refer to the name assigned to the column in the header row of the .csv file for each column. If the .csv does not have any header row, column_names take default names as Column 1, Column 2, etc.
Request The Request is a sub-block of data. Options available depend on the value of Type.

If Type is set to Unknown, Request is set to Block 1.

If Type is set to Column 1 or Index, Request is set to Index.

Component The component is a vector (or column) within a sub-block of data. Options available depend on the value of Type.

If Type is set to Unknown, options are column_names.

If Type is set to Column 1, Component is set to Column 1.

If Type is set to Index, Component is set to Index.

Data source Value

This is set in the guide panel.

Values Click to open the guide panel and set values.
Data source Math

This is set in the guide panel.

Math Enter an expression for the Z vector.
Attributes
X Scale

Define the scale for the X vector. When a data vector is scaled, the vector is multiplied by a specified value. The original data values are not actually altered.

Offset Define the offset for the X vector. Offsetting a data vector shifts the data along the corresponding axis.
Y Scale

Define the scale for the Y vector. When a data vector is scaled, the vector is multiplied by a specified value. The original data values are not actually altered.

Offset Define the offset for the Y vector. Offsetting a data vector shifts the data along the corresponding axis.
Z Scale

Define the scale for the Z vector. When a data vector is scaled, the vector is multiplied by a specified value. The original data values are not actually altered.

Offset Define the offset for the Z vector. Offsetting a data vector shifts the data along the corresponding axis.
Signal
User-defined Use a subroutine to define the curve.
  • For User expr, provide an expression with the USER solver function with parameters being passed to the user subroutine.
  • Turn on Use local file and function name to provide a local file for the subroutine. Otherwise, Inspire Motion will search for the subroutine within its search path.
    1. Specify a Local file where the subroutine code can be accessed by the solver. If this option is not specified, the application will search for a subroutine following its user subroutine loading rules.
      Note: The type of file to be specified will depend on the selected function type. For example, if DLL/SO is selected, you can specify a file with a .dll extension (for Windows) or an .so extension (for Linux).
    2. Select a Function type from the dropdown menu:
      • DLL/SO
      • Python
      • MatLab
      • Compose
    3. Specify the Function name in the subroutine that defines the entity, or accept the default name provided by the application.