<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Quantum effect - getParameterAtLength() in Fusion API and Scripts Forum</title>
    <link>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/quantum-effect-getparameteratlength/m-p/9857590#M10147</link>
    <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/2900239"&gt;@MichaelT_123&lt;/a&gt;&amp;nbsp;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I made a sketch curve like the image and tested it.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1.png" style="width: 548px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/842319iA724F2A92887011E/image-size/large?v=v2&amp;amp;px=999" role="button" title="1.png" alt="1.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;#Fusion360API Python script
import adsk.core, adsk.fusion, traceback

_app = adsk.core.Application.cast(None)
_ui = adsk.core.UserInterface.cast(None)

def run(context):
    try:
        global _app, _ui
        _app = adsk.core.Application.get()
        _ui = _app.userInterface
        des  :adsk.fusion.Design = _app.activeProduct
        root :adsk.fusion.Component = des.rootComponent

        skt :adsk.fusion.Sketch = root.sketches[0]
        crv :adsk.fusion.SketchCurve = skt.sketchCurves.sketchFittedSplines[0]
        geo :adsk.core.NurbsCurve3D= crv.geometry
        eva :adsk.core.CurveEvaluator3D = geo.evaluator

        # get Parameter range
        _, startParameter, endParameter = eva.getParameterExtents()
        print('startParameter:{}\nendParameter:{}\n'.format(startParameter, endParameter))

        # -- getParameterAtLength test --
        # startParameter + 1.0
        returnValue, parameter = eva.getParameterAtLength(startParameter, 1.0)
        print('startParameter + 1.0 -- returnValue:{} -- parameter:{}'.format(returnValue, parameter))

        # startParameter - 1.0
        returnValue, parameter = eva.getParameterAtLength(startParameter, -1.0)
        print('startParameter - 1.0 -- returnValue:{} -- parameter:{}'.format(returnValue, parameter))

        # endParameter + 1.0
        returnValue, parameter = eva.getParameterAtLength(endParameter, 1.0)
        print('endParameter + 1.0 -- returnValue:{} -- parameter:{}'.format(returnValue, parameter))

        # endParameter - 1.0
        returnValue, parameter = eva.getParameterAtLength(endParameter, -1.0)
        print('endParameter - 1.0 -- returnValue:{} -- parameter:{}'.format(returnValue, parameter))

        # -- getPointsAtParameters test --
        print('')

        # startParameter +
        msg = 'startParameter + :'
        try:
            prms = [startParameter + (idx * 0.1) for idx in range(5)]
            returnValue, pnts = eva.getPointsAtParameters(prms)
            # [skt.sketchPoints.add(p) for p in pnts]
            msg += 'OK'
        except:
            msg += 'NG'
        print(msg)

        # startParameter -
        msg = 'startParameter - :'
        try:
            prms = [startParameter - (idx * 0.1) for idx in range(5)]
            returnValue, pnts = eva.getPointsAtParameters(prms)
            msg += 'OK'
        except:
            msg += 'NG'
        print(msg)

        # endParameter +
        msg = 'endParameter + :'
        try:
            prms = [endParameter + (idx * 0.1) for idx in range(5)]
            returnValue, pnts = eva.getPointsAtParameters(prms)
            msg += 'OK'
        except:
            msg += 'NG'
        print(msg)

        # endParameter -
        msg = 'endParameter - :'
        try:
            prms = [endParameter - (idx * 0.1) for idx in range(5)]
            returnValue, pnts = eva.getPointsAtParameters(prms)
            msg += 'OK'
        except:
            msg += 'NG'
        print(msg)

    except:
        if _ui:
            _ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The execution result looks like this.&lt;/P&gt;
&lt;LI-CODE lang="general"&gt;startParameter:0.0
endParameter:1.0

startParameter + 1.0 -- returnValue:True -- parameter:0.03093685297119174
startParameter - 1.0 -- returnValue:True -- parameter:9.313225746154785e-10
endParameter + 1.0 -- returnValue:True -- parameter:0.0
endParameter - 1.0 -- returnValue:True -- parameter:0.9690631470288812

startParameter + :OK
startParameter - :NG
endParameter + :NG
endParameter - :OK&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;All of the parameters were found to work correctly within the range.&lt;BR /&gt;Therefore, it seems necessary to check using the getParameterExtents method.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;However, since "returnValue" is provided, I think it is a kinder design to return False if it is out of range.&lt;/P&gt;</description>
    <pubDate>Tue, 10 Nov 2020 03:55:23 GMT</pubDate>
    <dc:creator>kandennti</dc:creator>
    <dc:date>2020-11-10T03:55:23Z</dc:date>
    <item>
      <title>Quantum effect - getParameterAtLength()</title>
      <link>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/quantum-effect-getparameteratlength/m-p/9857454#M10146</link>
      <description>&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;Hi TF360,&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;For a start, to create the base for the comprehension of the issue, please look at the picture below.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Test getParameterAtLength.png" style="width: 999px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/842307iBD6FE8D28CE53A74/image-size/large?v=v2&amp;amp;px=999" role="button" title="Test getParameterAtLength.png" alt="Test getParameterAtLength.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;It represents the &lt;EM&gt;&lt;STRONG&gt;F360 API&lt;/STRONG&gt;&lt;/EM&gt; function:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;&lt;FONT color="#0000FF"&gt;(returnValue, parameter) = curveEvaluator3D_var.getParameterAtLength(fromParameter, length)&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If &lt;STRONG&gt;&lt;FONT color="#FF6600"&gt;&lt;EM&gt;LOGIC&lt;/EM&gt;&lt;/FONT&gt;&lt;/STRONG&gt; is the mother of all &lt;EM&gt;&lt;STRONG&gt;&lt;FONT color="#FF6600"&gt;SCIENCES&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/EM&gt; ( real, not imaginary ones), one would expect that by exceeding available size of a curve to the right, the function returned &lt;EM&gt;&lt;STRONG&gt;&lt;FONT color="#0000FF"&gt;endParameter&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/EM&gt; (as per &lt;FONT color="#0000FF"&gt;&lt;STRONG&gt;&lt;EM&gt;getParameterExtents()&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt; values) . It is not the case. It returns &lt;FONT color="#0000FF"&gt;&lt;EM&gt;&lt;STRONG&gt;startParameter&lt;/STRONG&gt;&lt;/EM&gt;&lt;/FONT&gt;.&lt;/P&gt;&lt;P&gt;In order to allow you to &lt;EM&gt;&lt;STRONG&gt;&lt;FONT color="#FF0000"&gt;better sink into the gravity of the problem&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/EM&gt;, let's imagine…&lt;/P&gt;&lt;P&gt;… &lt;EM&gt;&lt;STRONG&gt;&lt;FONT color="#FF00FF"&gt;a drunkard, in whatever direction he/she/it goes, always hit the same wall&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/EM&gt;. Any physicist (even not completely sober) would describe this as the clear evidence of &lt;EM&gt;&lt;STRONG&gt;&lt;FONT color="#993366"&gt;a quantum effect&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/EM&gt;. &lt;EM&gt;&lt;STRONG&gt;&lt;FONT color="#FF6600"&gt;Nobel prize… anyone?&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;Regards&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;MichaelT&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 10 Nov 2020 02:17:14 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/quantum-effect-getparameteratlength/m-p/9857454#M10146</guid>
      <dc:creator>MichaelT_123</dc:creator>
      <dc:date>2020-11-10T02:17:14Z</dc:date>
    </item>
    <item>
      <title>Re: Quantum effect - getParameterAtLength()</title>
      <link>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/quantum-effect-getparameteratlength/m-p/9857590#M10147</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/2900239"&gt;@MichaelT_123&lt;/a&gt;&amp;nbsp;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I made a sketch curve like the image and tested it.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1.png" style="width: 548px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/842319iA724F2A92887011E/image-size/large?v=v2&amp;amp;px=999" role="button" title="1.png" alt="1.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;#Fusion360API Python script
import adsk.core, adsk.fusion, traceback

_app = adsk.core.Application.cast(None)
_ui = adsk.core.UserInterface.cast(None)

def run(context):
    try:
        global _app, _ui
        _app = adsk.core.Application.get()
        _ui = _app.userInterface
        des  :adsk.fusion.Design = _app.activeProduct
        root :adsk.fusion.Component = des.rootComponent

        skt :adsk.fusion.Sketch = root.sketches[0]
        crv :adsk.fusion.SketchCurve = skt.sketchCurves.sketchFittedSplines[0]
        geo :adsk.core.NurbsCurve3D= crv.geometry
        eva :adsk.core.CurveEvaluator3D = geo.evaluator

        # get Parameter range
        _, startParameter, endParameter = eva.getParameterExtents()
        print('startParameter:{}\nendParameter:{}\n'.format(startParameter, endParameter))

        # -- getParameterAtLength test --
        # startParameter + 1.0
        returnValue, parameter = eva.getParameterAtLength(startParameter, 1.0)
        print('startParameter + 1.0 -- returnValue:{} -- parameter:{}'.format(returnValue, parameter))

        # startParameter - 1.0
        returnValue, parameter = eva.getParameterAtLength(startParameter, -1.0)
        print('startParameter - 1.0 -- returnValue:{} -- parameter:{}'.format(returnValue, parameter))

        # endParameter + 1.0
        returnValue, parameter = eva.getParameterAtLength(endParameter, 1.0)
        print('endParameter + 1.0 -- returnValue:{} -- parameter:{}'.format(returnValue, parameter))

        # endParameter - 1.0
        returnValue, parameter = eva.getParameterAtLength(endParameter, -1.0)
        print('endParameter - 1.0 -- returnValue:{} -- parameter:{}'.format(returnValue, parameter))

        # -- getPointsAtParameters test --
        print('')

        # startParameter +
        msg = 'startParameter + :'
        try:
            prms = [startParameter + (idx * 0.1) for idx in range(5)]
            returnValue, pnts = eva.getPointsAtParameters(prms)
            # [skt.sketchPoints.add(p) for p in pnts]
            msg += 'OK'
        except:
            msg += 'NG'
        print(msg)

        # startParameter -
        msg = 'startParameter - :'
        try:
            prms = [startParameter - (idx * 0.1) for idx in range(5)]
            returnValue, pnts = eva.getPointsAtParameters(prms)
            msg += 'OK'
        except:
            msg += 'NG'
        print(msg)

        # endParameter +
        msg = 'endParameter + :'
        try:
            prms = [endParameter + (idx * 0.1) for idx in range(5)]
            returnValue, pnts = eva.getPointsAtParameters(prms)
            msg += 'OK'
        except:
            msg += 'NG'
        print(msg)

        # endParameter -
        msg = 'endParameter - :'
        try:
            prms = [endParameter - (idx * 0.1) for idx in range(5)]
            returnValue, pnts = eva.getPointsAtParameters(prms)
            msg += 'OK'
        except:
            msg += 'NG'
        print(msg)

    except:
        if _ui:
            _ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The execution result looks like this.&lt;/P&gt;
&lt;LI-CODE lang="general"&gt;startParameter:0.0
endParameter:1.0

startParameter + 1.0 -- returnValue:True -- parameter:0.03093685297119174
startParameter - 1.0 -- returnValue:True -- parameter:9.313225746154785e-10
endParameter + 1.0 -- returnValue:True -- parameter:0.0
endParameter - 1.0 -- returnValue:True -- parameter:0.9690631470288812

startParameter + :OK
startParameter - :NG
endParameter + :NG
endParameter - :OK&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;All of the parameters were found to work correctly within the range.&lt;BR /&gt;Therefore, it seems necessary to check using the getParameterExtents method.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;However, since "returnValue" is provided, I think it is a kinder design to return False if it is out of range.&lt;/P&gt;</description>
      <pubDate>Tue, 10 Nov 2020 03:55:23 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/quantum-effect-getparameteratlength/m-p/9857590#M10147</guid>
      <dc:creator>kandennti</dc:creator>
      <dc:date>2020-11-10T03:55:23Z</dc:date>
    </item>
    <item>
      <title>Re: Quantum effect - getParameterAtLength()</title>
      <link>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/quantum-effect-getparameteratlength/m-p/9857864#M10148</link>
      <description>&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;Hi Kandennti-San,&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;&lt;FONT color="#FF6600"&gt;Thank you for your effort to check this out&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/EM&gt;. Please find your code a little bit modified with the addition of putting in the real data from my experience of being hit by &lt;EM&gt;&lt;STRONG&gt;&lt;FONT color="#FF0000"&gt;parametric quantum phenomena&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/EM&gt;. I have not expected it, instead have spent two days scowering different section of my code (&lt;EM&gt;&lt;STRONG&gt;&lt;FONT color="#FF00FF"&gt;silly me&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/EM&gt;).&lt;/P&gt;&lt;P&gt;Also are attached the file with a single sketch spline which was used for the testing.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="general"&gt;#Fusion360API Python script
import adsk.core, adsk.fusion, traceback

_app = adsk.core.Application.cast(None)
_ui = adsk.core.UserInterface.cast(None)

def run(context):
    try:
        global _app, _ui
        _app = adsk.core.Application.get()
        _ui = _app.userInterface
        des  :adsk.fusion.Design = _app.activeProduct
        root :adsk.fusion.Component = des.rootComponent

        skt :adsk.fusion.Sketch = root.sketches[0]
        crv :adsk.fusion.SketchCurve = skt.sketchCurves.sketchFittedSplines[0]
        geo :adsk.core.NurbsCurve3D= crv.geometry
        eva :adsk.core.CurveEvaluator3D = geo.evaluator

        # get Parameter range
        _, startParameter, endParameter = eva.getParameterExtents()
        print('startparameter:{}\nendparameter:{}\n'.format(startParameter, endParameter))

        # -- getParameterAtLength test --
        # startParameter + 1.0
        length = +1.0   
        returnValue, parameter = eva.getParameterAtLength(startParameter, length)
        print('startParameter + 1.0 -- length:{0:&amp;lt;22} -- returnValue:{1:&amp;lt;4} -- parameter:{2:&amp;lt;22}'.format(length, returnValue, parameter))

        # startParameter - 1.0
        length = -1.0
        returnValue, parameter = eva.getParameterAtLength(startParameter, length)
        print('startParameter - 1.0 -- length:{0:&amp;lt;22} -- returnValue:{1:&amp;lt;4} -- parameter:{2:&amp;lt;22} LeftFromStart gives Start~ OK!'.format(length, returnValue, parameter))

        # endParameter + 1.0
        length = +1.0
        returnValue, parameter = eva.getParameterAtLength(endParameter, length)
        print('endParameter   + 1.0 -- length:{0:&amp;lt;22} -- returnValue:{1:&amp;lt;4} -- parameter:{2:&amp;lt;22} RightFromEnd  gives Start WRONG!'.format(length, returnValue, parameter))

        # endParameter - 1.0
        length = -1.0
        returnValue, parameter = eva.getParameterAtLength(endParameter, length)
        print('endParameter   - 1.0 -- length:{0:&amp;lt;22} -- returnValue:{1:&amp;lt;4} -- parameter:{2:&amp;lt;22}'.format(length, returnValue, parameter))
        
        # fromParam by length @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
        fromParam = 1.0
        length    = +0.023635877285719833
        returnValue, parameter = eva.getParameterAtLength(fromParam, length)
        print('endParameter   - 1.0 @@ length:{0:&amp;lt;22} @@ returnValue:{1:&amp;lt;4} @@ parameter:{2:&amp;lt;22} RightFromEnd  gives Start WRONG!'.format(length, returnValue, parameter))
        length    = -0.023635877285719833
        returnValue, parameter = eva.getParameterAtLength(fromParam, length)
        print('endParameter   - 1.0 @@ length:{0:&amp;lt;22} @@ returnValue:{1:&amp;lt;4} @@ parameter:{2:&amp;lt;22}'.format(length, returnValue, parameter))        
        #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

        # -- getPointsAtParameters test --
        print('')

        # startParameter +
        msg = 'startParameter + :'
        try:
            prms = [startParameter + (idx * 0.1) for idx in range(5)]
            returnValue, pnts = eva.getPointsAtParameters(prms)
            # [skt.sketchPoints.add(p) for p in pnts]
            msg += 'OK'
        except:
            msg += 'NG'
        print(msg)

        # startParameter -
        msg = 'startParameter - :'
        try:
            prms = [startParameter - (idx * 0.1) for idx in range(5)]
            returnValue, pnts = eva.getPointsAtParameters(prms)
            msg += 'OK'
        except:
            msg += 'NG'
        print(msg)

        # endParameter +
        msg = 'endParameter + :'
        try:
            prms = [endParameter + (idx * 0.1) for idx in range(5)]
            returnValue, pnts = eva.getPointsAtParameters(prms)
            msg += 'OK'
        except:
            msg += 'NG'
        print(msg)

        # endParameter -
        msg = 'endParameter - :'
        try:
            prms = [endParameter - (idx * 0.1) for idx in range(5)]
            returnValue, pnts = eva.getPointsAtParameters(prms)
            msg += 'OK'
        except:
            msg += 'NG'
        print(msg)

    except:
        if _ui:
            _ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))

    '''
    startParameter:0.0
    endParameter:1.0

    startParameter + 1.0 -- returnValue:True -- parameter:0.03093685297119174
    startParameter - 1.0 -- returnValue:True -- parameter:9.313225746154785e-10
    endParameter + 1.0 -- returnValue:True -- parameter:0.0
    endParameter - 1.0 -- returnValue:True -- parameter:0.9690631470288812

    startParameter + :OK
    startParameter - :NG
    endParameter + :NG
    endParameter - :OK    
    '''
    '''
    #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

    startparameter:0.0
    endparameter:1.0

    startParameter + 1.0 -- length:1.0                    -- returnValue:1    -- parameter:0.05831409622449987
    startParameter - 1.0 -- length:-1.0                   -- returnValue:1    -- parameter:9.313225746154785e-10  LeftFromStart gives Start~ OK!
    endParameter   + 1.0 -- length:1.0                    -- returnValue:1    -- parameter:0.0                    RightFromEnd  gives Start WRONG!
    endParameter   - 1.0 -- length:-1.0                   -- returnValue:1    -- parameter:0.9415661386942856
    endParameter   - 1.0 @@ length:0.023635877285719833   @@ returnValue:1    @@ parameter:0.0                    RightFromEnd  gives Start WRONG!
    endParameter   - 1.0 @@ length:-0.023635877285719833  @@ returnValue:1    @@ parameter:0.9989981070240436

    startParameter + :OK
    startParameter - :NG
    endParameter + :NG
    endParameter - :OK

    #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    '''&lt;/LI-CODE&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;Best Regards&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;MichaelT&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 10 Nov 2020 07:10:45 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/quantum-effect-getparameteratlength/m-p/9857864#M10148</guid>
      <dc:creator>MichaelT_123</dc:creator>
      <dc:date>2020-11-10T07:10:45Z</dc:date>
    </item>
    <item>
      <title>Re: Quantum effect - getParameterAtLength()</title>
      <link>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/quantum-effect-getparameteratlength/m-p/9858085#M10149</link>
      <description>&lt;P&gt;This is a little different story, but in the case of the surface, there is a SurfaceEvaluator object.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://help.autodesk.com/view/fusion360/ENU/?guid=GUID-31dad9b2-ee1d-4216-8100-09ea44f9967a" target="_blank" rel="noopener"&gt;http://help.autodesk.com/view/fusion360/ENU/?guid=GUID-31dad9b2-ee1d-4216-8100-09ea44f9967a&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The methods are also relatively similar to the CurveEvaluator3D Object.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/5741855"&gt;@BrianEkins&lt;/a&gt;&amp;nbsp;mentioned somewhere in the forums that the results will vary depending on how you get the SurfaceEvaluator.&lt;/P&gt;
&lt;P&gt;・BRepFace.evaluator: finite. (taking into account the boundaries of the face)&lt;BR /&gt;・BRepFace.geometry.evaluator: infinite&lt;/P&gt;
&lt;P&gt;In particular, the results of the SurfaceEvaluator.isParameterOnFace Method will be greatly affected.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://help.autodesk.com/view/fusion360/ENU/?guid=GUID-e6682eb7-48f8-472d-9872-71da3c5ba8c8" target="_blank" rel="noopener"&gt;https://help.autodesk.com/view/fusion360/ENU/?guid=GUID-e6682eb7-48f8-472d-9872-71da3c5ba8c8&lt;/A&gt;&amp;nbsp;&lt;BR /&gt;(BRepFace.geometry.evaluator returns True even if the parameter is out of range.)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I assumed the same thing would happen with CurveEvaluator3D Object.&lt;/P&gt;
&lt;P&gt;When I looked at the Help.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1.png" style="width: 681px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/842410i1BFD6493C3B7702F/image-size/large?v=v2&amp;amp;px=999" role="button" title="1.png" alt="1.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;The red marks are provided by adsk.core and I expected it to be able to handle over-range parameters in the same way as CurveEvaluator3D.&lt;BR /&gt;Unfortunately, out-of-range parameters did not return the correct results.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I interpreted this as probably being a specification.&lt;/P&gt;</description>
      <pubDate>Tue, 10 Nov 2020 09:08:53 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/quantum-effect-getparameteratlength/m-p/9858085#M10149</guid>
      <dc:creator>kandennti</dc:creator>
      <dc:date>2020-11-10T09:08:53Z</dc:date>
    </item>
    <item>
      <title>Re: Quantum effect - getParameterAtLength()</title>
      <link>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/quantum-effect-getparameteratlength/m-p/9858306#M10150</link>
      <description>&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;Hi Kandennti-San,&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;What is/are Evaluator(s)?&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000FF"&gt;&lt;STRONG&gt;&lt;EM&gt;Evaluators are a specific set of functions enveloping parametric geometrical object&lt;/EM&gt; &lt;/STRONG&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;STRONG&gt;(2D, 3D, 4D, …)&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;Perhaps the simplest such object is &lt;FONT color="#808000"&gt;&lt;EM&gt;&lt;STRONG&gt;a line&lt;/STRONG&gt;&lt;/EM&gt;&lt;/FONT&gt;:&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000FF"&gt;&lt;EM&gt;&lt;STRONG&gt;Y = y*t&lt;/STRONG&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000FF"&gt;&lt;EM&gt;&lt;STRONG&gt;X = x*t&lt;/STRONG&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;Where &lt;EM&gt;&lt;STRONG&gt;&lt;FONT color="#0000FF"&gt;t ∈&amp;lt;t1,t2&amp;gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/EM&gt; ( &lt;FONT color="#0000FF"&gt;&lt;EM&gt;&lt;STRONG&gt;t&lt;/STRONG&gt;&lt;/EM&gt;&lt;/FONT&gt; can be infinite too)&lt;/P&gt;&lt;P&gt;There are infinitesimally many different geometrical objects, and their analytics are varying too, so &lt;FONT color="#800080"&gt;e&lt;EM&gt;&lt;STRONG&gt;ach one has its own &lt;FONT face="arial black,avant garde"&gt;SPECIFIC&lt;/FONT&gt; set of functions,&lt;/STRONG&gt;&lt;/EM&gt;&lt;/FONT&gt; &lt;EM&gt;&lt;STRONG&gt;F360&lt;/STRONG&gt;&lt;/EM&gt;&amp;nbsp;has named it &lt;EM&gt;&lt;STRONG&gt;&lt;FONT color="#800080"&gt;"evaluator"&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/EM&gt;.&lt;/P&gt;&lt;P&gt;You have mentioned &lt;EM&gt;&lt;STRONG&gt;&lt;FONT color="#0000FF"&gt;BrepFace&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/EM&gt; object.&lt;/P&gt;&lt;P&gt;By analogy to &lt;FONT color="#808000"&gt;&lt;EM&gt;&lt;STRONG&gt;a line&lt;/STRONG&gt;&lt;/EM&gt;&lt;/FONT&gt; if &lt;EM&gt;&lt;STRONG&gt;&lt;FONT color="#0000FF"&gt;BRepFace&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/EM&gt;&amp;nbsp; the evaluator has parameters &lt;FONT color="#0000FF"&gt;&lt;EM&gt;&lt;STRONG&gt;&amp;lt;u,v&amp;gt;&lt;/STRONG&gt;&lt;/EM&gt;&lt;/FONT&gt;&amp;nbsp; constrained by respective ranges. If such constraints are not set&amp;nbsp;&amp;nbsp; &lt;EM&gt;&lt;STRONG&gt;&lt;FONT color="#0000FF"&gt;BRepFace&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/EM&gt; will become &lt;EM&gt;&lt;STRONG&gt;&lt;FONT color="#0000FF"&gt;Surface&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/EM&gt; (in some cases infinite one).&lt;/P&gt;&lt;P&gt;The&lt;EM&gt;&lt;STRONG&gt;&lt;FONT color="#339966"&gt; core of evaluating functions is intact&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/EM&gt;.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;Regards&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;MichaelT&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 10 Nov 2020 11:00:59 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/quantum-effect-getparameteratlength/m-p/9858306#M10150</guid>
      <dc:creator>MichaelT_123</dc:creator>
      <dc:date>2020-11-10T11:00:59Z</dc:date>
    </item>
    <item>
      <title>Re: Quantum effect - getParameterAtLength()</title>
      <link>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/quantum-effect-getparameteratlength/m-p/9859907#M10151</link>
      <description>&lt;P&gt;In this case, it is not related to topological bounded and unbounded evaluators.&lt;/P&gt;
&lt;P&gt;This definitely just looks like a bug. Specifically with the NurbsCurve3D evaluator for temporary geometry and sketch geometry. There looks to be some mishandling of negative lengths (directions) in some edge cases, and in properly clamping the end values. (In some cases where the algorithm fails, it asserts (in debug builds) and returns 0.0, which just happens to be the start parameter in your case.)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I filed defect&amp;nbsp;FUS-74761 for this issue.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If your purpose for calling getParameterAtLength is to get some sample points for the curve, you could try using the getStrokes API instead. The chordal deviation tolerance that it uses isn't the same as the arc length used by param at length, but it could be suitable for some uses.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;BTW: The getPointsAtParameters tests in your script that write NG look to be as designed. It is an invalid argument to specify parameter values that are outside the curves declared parameter range, and the two NG tests walk outside the curve's parameter range.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Kris&lt;/P&gt;</description>
      <pubDate>Tue, 10 Nov 2020 19:50:54 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/quantum-effect-getparameteratlength/m-p/9859907#M10151</guid>
      <dc:creator>KrisKaplan</dc:creator>
      <dc:date>2020-11-10T19:50:54Z</dc:date>
    </item>
    <item>
      <title>Re: Quantum effect - getParameterAtLength()</title>
      <link>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/quantum-effect-getparameteratlength/m-p/9861356#M10152</link>
      <description>&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Hi Mr ChrisKaplan,&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#FF6600"&gt;&lt;STRONG&gt;&lt;EM&gt;I am glad&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt; that the problem has also been identified on the &lt;STRONG&gt;&lt;EM&gt;F360&lt;/EM&gt;&lt;/STRONG&gt; side. I hope &lt;FONT color="#339966"&gt;&lt;STRONG&gt;&lt;EM&gt;it is in good hands/brains&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt; now and will be readily addressed. In the meantime, I use &lt;FONT color="#FF9900"&gt;&lt;STRONG&gt;&lt;EM&gt;bandAid&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;. It costs some &lt;FONT color="#333399"&gt;&lt;STRONG&gt;&lt;EM&gt;μseconds&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;, which are nothing in comparison to the time I have had spent to find this &lt;FONT color="#FF00FF"&gt;&lt;STRONG&gt;&lt;EM&gt;problematic treasure&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regarding your suggestion of using &lt;FONT color="#0000FF"&gt;&lt;STRONG&gt;&lt;EM&gt;getStrokes()&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;, I use it from time to time. It is however very sensitive (in some cases) to &lt;FONT color="#0000FF"&gt;&lt;STRONG&gt;&lt;EM&gt;tolerance&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt; parameter. It can generate a &lt;FONT color="#993366"&gt;&lt;STRONG&gt;&lt;EM&gt;tremendous number of fit points&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Regards&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;MichaelT&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;P.S.&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;I have some other&amp;nbsp;&lt;FONT color="#00FF00"&gt;pickle&lt;/FONT&gt;, but one at the time...&lt;span class="lia-unicode-emoji" title=":zipper_mouth_face:"&gt;🤐&lt;/span&gt;&lt;/EM&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 11 Nov 2020 10:04:39 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/quantum-effect-getparameteratlength/m-p/9861356#M10152</guid>
      <dc:creator>MichaelT_123</dc:creator>
      <dc:date>2020-11-11T10:04:39Z</dc:date>
    </item>
    <item>
      <title>Re: Quantum effect - getParameterAtLength()</title>
      <link>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/quantum-effect-getparameteratlength/m-p/12709351#M10153</link>
      <description>&lt;P&gt;That's a quirky but fascinating way to describe the issue with the F360 API function! It does seem paradoxical that exceeding the curve length would loop back to the startParameter rather than the expected endParameter. This behavior definitely brings a smile, imagining it as a quantum effect where no matter which direction the drunkard heads, they hit the same wall.&lt;BR /&gt;For a deeper understanding of this and potentially similar quirky behaviors in computational models, you might find some insightful resources at &lt;A href="https://quantumai.co/" target="_blank"&gt;https://quantumai.co/&lt;/A&gt;. Sometimes, diving into the fundamental principles can shed light on these bewildering phenomena.&lt;/P&gt;</description>
      <pubDate>Thu, 18 Apr 2024 15:12:50 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/quantum-effect-getparameteratlength/m-p/12709351#M10153</guid>
      <dc:creator>jenniferappl</dc:creator>
      <dc:date>2024-04-18T15:12:50Z</dc:date>
    </item>
  </channel>
</rss>

