<?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: Auto generate Setup and NC Output in Fusion API and Scripts Forum</title>
    <link>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/auto-generate-setup-and-nc-output/m-p/12688275#M1931</link>
    <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/10977011"&gt;@patrikrump&lt;/a&gt;&amp;nbsp;-San.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I believe that would be made by chatGPT, etc. It is a pretty disappointing code.&lt;/P&gt;
&lt;P&gt;I created a basic sample.&lt;BR /&gt;Setup and NC program for each body shown. It is still lacking in functionality.&lt;BR /&gt;This can be done from the design workspace.&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;# Fusion360API Python script

import traceback
import adsk.core as core
import adsk.fusion as fusion
import adsk.cam as cam
import sys

def run(context):
    ui: core.UserInterface = None
    try:
        app: core.Application = core.Application.get()
        ui = app.userInterface

        camObj: cam.CAM = get_cam_product()

        rootOcc: fusion.Occurrence = camObj.designRootOccurrence
        bodies = get_show_bodies(rootOcc.component)
        if len(bodies) &amp;lt; 1: return

        for body in bodies:
            create_nc_program(
                camObj,
                create_setup(
                    camObj,
                    body
                )
            )

    except:
        if ui:
            ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))


def create_nc_program(
        camObj: cam.CAM,
        targetSetup: cam.Setup,
) -&amp;gt; cam.NCProgram:
    
    ncPrograms: cam.NCPrograms = camObj.ncPrograms
    ncIpt: cam.NCProgramInput = ncPrograms.createInput()
    ncIpt.displayName = targetSetup.name

    set_cam_parameter(
        ncIpt,
        "nc_program_filename",
        targetSetup.name,
    )

    set_cam_parameter(
        ncIpt,
        "nc_program_openInEditor",
        True,
    )

    ncIpt.operations = [targetSetup]
    ncPrograms.add(ncIpt)


def get_show_bodies(
        root: fusion.Component
) -&amp;gt; list[fusion.BRepBody]:
    
    bodies = root.findBRepUsingPoint(
        core.Point3D.create(0,0,0),
        fusion.BRepEntityTypes.BRepBodyEntityType,
        sys.float_info.max,
        True,
    )

    return list(bodies)


def create_setup(
        camObj: cam.CAM,
        targetBody: fusion.BRepBody,
) -&amp;gt; cam.Setup:

    setups: cam.Setups = camObj.setups
    setupIpt: cam.SetupInput = setups.createInput(
        cam.OperationTypes.MillingOperation
    )
    setupIpt.models = [targetBody]
    setup: cam.Setup = setups.add(setupIpt)
    setup.name = targetBody.name

    set_cam_parameter(
        setup,
        'job_stockMode',
        'default',
    )

    set_cam_parameter(
        setup,
        'job_stockOffsetMode',
        'keep',
    )

    return setup


def get_cam_parameter(
        camEntity,
        name: str,
) -&amp;gt; cam.CAMParameter:
    try:
        prm: cam.CAMParameter = camEntity.parameters.itemByName(
            name
        )
        if not prm: return None

        return prm.value.value

    except:
        return None


def set_cam_parameter(
        camEntity,
        name: str,
        value: str,
) -&amp;gt; bool:
    
    try:
        prm: cam.CAMParameter = camEntity.parameters.itemByName(
            name
        )
        if not prm: return False

        prm.value.value = value

        return True

    except:
        return False


def get_cam_product() -&amp;gt; cam.CAM:

    app: core.Application = core.Application.get()
    activete_cam_env()

    return app.activeProduct


def activete_cam_env() -&amp;gt; None:

    app: core.Application = core.Application.get()
    ui: core.UserInterface = app.userInterface

    camWS: core.Workspace = ui.workspaces.itemById('CAMEnvironment') 
    camWS.activate()&lt;/LI-CODE&gt;</description>
    <pubDate>Fri, 05 Apr 2024 00:59:46 GMT</pubDate>
    <dc:creator>kandennti</dc:creator>
    <dc:date>2024-04-05T00:59:46Z</dc:date>
    <item>
      <title>Auto generate Setup and NC Output</title>
      <link>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/auto-generate-setup-and-nc-output/m-p/12610208#M1926</link>
      <description>&lt;P&gt;Dear Fusion Community,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have tried to write a code where a setup and a NC output is always created for each visible body.&lt;/P&gt;&lt;P&gt;Currently only setup and NC output should be created and named.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Unfortunately this does not work although no error is displayed. Can you perhaps help me with this?&lt;/P&gt;&lt;P&gt;Thank you very much&lt;/P&gt;&lt;P&gt;&amp;nbsp;&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;import adsk.core
import adsk.fusion
import traceback

def run(context):
    try:
        # Zugriff auf die aktive Fusion 360-Anwendung
        app = adsk.core.Application.get()
        ui = app.userInterface

        # Zugriff auf das aktive Design
        design = app.activeProduct
        if not design:
            ui.messageBox('Kein aktives Design gefunden. Bitte auf die Konstruktions Seite wechseln')
            return

        # Zugriff auf die aktive Komponente
        root_comp = design.rootComponent

        # Zugriff auf alle sichtbaren Körper im Design
        bodies = root_comp.bRepBodies
        for body in bodies:
            # Erstelle ein Setup für jeden Körper
            setup_name = f'Setup_{body.name}'
            setup = root_comp.manufacturingSetups.addMillSetup(body, setup_name)

            # Setze den Namen des Körpers als Setup-Namen
            setup.name = body.name

            # Erstelle eine NC-Ausgabe mit dem Körpernamen
            nc_program_name = f'NC_{body.name}'
            nc_program = setup.createNCProgram(root_comp, nc_program_name)

        ui.messageBox('Setups und NC-Ausgaben wurden erfolgreich erstellt.')

    except Exception as e:
        ui.messageBox('Fehler aufgetreten:\n{}'.format(traceback.format_exc()))

run(None)&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 04 Mar 2024 06:56:38 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/auto-generate-setup-and-nc-output/m-p/12610208#M1926</guid>
      <dc:creator>patrikrump</dc:creator>
      <dc:date>2024-03-04T06:56:38Z</dc:date>
    </item>
    <item>
      <title>Re: Auto generate Setup and NC Output</title>
      <link>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/auto-generate-setup-and-nc-output/m-p/12611567#M1927</link>
      <description>&lt;P&gt;&lt;SPAN style="background: var(--ck-color-mention-background); color: var(--ck-color-mention-text);"&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/10977011"&gt;@patrikrump&lt;/a&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;Welcome to the Community.&lt;BR /&gt;&lt;BR /&gt;I noticed that your code is in German. &amp;nbsp;If you would feel more comfortable, I can move this post to the German Fusion forum. &amp;nbsp;If you are happy to communicate in English, I can leave it here. &amp;nbsp;Whatever you prefer. &amp;nbsp;&lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 04 Mar 2024 16:00:55 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/auto-generate-setup-and-nc-output/m-p/12611567#M1927</guid>
      <dc:creator>CGBenner</dc:creator>
      <dc:date>2024-03-04T16:00:55Z</dc:date>
    </item>
    <item>
      <title>Re: Auto generate Setup and NC Output</title>
      <link>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/auto-generate-setup-and-nc-output/m-p/12612447#M1928</link>
      <description>&lt;P&gt;I don't care about the language.&lt;BR /&gt;It's just important to me that many people see it because of the possible help&lt;/P&gt;</description>
      <pubDate>Mon, 04 Mar 2024 18:20:35 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/auto-generate-setup-and-nc-output/m-p/12612447#M1928</guid>
      <dc:creator>patrikrump</dc:creator>
      <dc:date>2024-03-04T18:20:35Z</dc:date>
    </item>
    <item>
      <title>Re: Auto generate Setup and NC Output</title>
      <link>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/auto-generate-setup-and-nc-output/m-p/12612795#M1929</link>
      <description>&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;This is probably best asked in the API Forum:&lt;/P&gt;&lt;P&gt;&lt;A href="https://forums.autodesk.com/t5/fusion-api-and-scripts/bd-p/22" target="_blank"&gt;https://forums.autodesk.com/t5/fusion-api-and-scripts/bd-p/22&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 04 Mar 2024 19:10:42 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/auto-generate-setup-and-nc-output/m-p/12612795#M1929</guid>
      <dc:creator>a.laasW8M6T</dc:creator>
      <dc:date>2024-03-04T19:10:42Z</dc:date>
    </item>
    <item>
      <title>Re: Auto generate Setup and NC Output</title>
      <link>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/auto-generate-setup-and-nc-output/m-p/12687787#M1930</link>
      <description>&lt;P&gt;Thank you for moving my post.&lt;/P&gt;&lt;P&gt;unfortunately I have not yet found a solution&lt;/P&gt;</description>
      <pubDate>Thu, 04 Apr 2024 19:19:42 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/auto-generate-setup-and-nc-output/m-p/12687787#M1930</guid>
      <dc:creator>patrikrump</dc:creator>
      <dc:date>2024-04-04T19:19:42Z</dc:date>
    </item>
    <item>
      <title>Re: Auto generate Setup and NC Output</title>
      <link>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/auto-generate-setup-and-nc-output/m-p/12688275#M1931</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/10977011"&gt;@patrikrump&lt;/a&gt;&amp;nbsp;-San.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I believe that would be made by chatGPT, etc. It is a pretty disappointing code.&lt;/P&gt;
&lt;P&gt;I created a basic sample.&lt;BR /&gt;Setup and NC program for each body shown. It is still lacking in functionality.&lt;BR /&gt;This can be done from the design workspace.&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;# Fusion360API Python script

import traceback
import adsk.core as core
import adsk.fusion as fusion
import adsk.cam as cam
import sys

def run(context):
    ui: core.UserInterface = None
    try:
        app: core.Application = core.Application.get()
        ui = app.userInterface

        camObj: cam.CAM = get_cam_product()

        rootOcc: fusion.Occurrence = camObj.designRootOccurrence
        bodies = get_show_bodies(rootOcc.component)
        if len(bodies) &amp;lt; 1: return

        for body in bodies:
            create_nc_program(
                camObj,
                create_setup(
                    camObj,
                    body
                )
            )

    except:
        if ui:
            ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))


def create_nc_program(
        camObj: cam.CAM,
        targetSetup: cam.Setup,
) -&amp;gt; cam.NCProgram:
    
    ncPrograms: cam.NCPrograms = camObj.ncPrograms
    ncIpt: cam.NCProgramInput = ncPrograms.createInput()
    ncIpt.displayName = targetSetup.name

    set_cam_parameter(
        ncIpt,
        "nc_program_filename",
        targetSetup.name,
    )

    set_cam_parameter(
        ncIpt,
        "nc_program_openInEditor",
        True,
    )

    ncIpt.operations = [targetSetup]
    ncPrograms.add(ncIpt)


def get_show_bodies(
        root: fusion.Component
) -&amp;gt; list[fusion.BRepBody]:
    
    bodies = root.findBRepUsingPoint(
        core.Point3D.create(0,0,0),
        fusion.BRepEntityTypes.BRepBodyEntityType,
        sys.float_info.max,
        True,
    )

    return list(bodies)


def create_setup(
        camObj: cam.CAM,
        targetBody: fusion.BRepBody,
) -&amp;gt; cam.Setup:

    setups: cam.Setups = camObj.setups
    setupIpt: cam.SetupInput = setups.createInput(
        cam.OperationTypes.MillingOperation
    )
    setupIpt.models = [targetBody]
    setup: cam.Setup = setups.add(setupIpt)
    setup.name = targetBody.name

    set_cam_parameter(
        setup,
        'job_stockMode',
        'default',
    )

    set_cam_parameter(
        setup,
        'job_stockOffsetMode',
        'keep',
    )

    return setup


def get_cam_parameter(
        camEntity,
        name: str,
) -&amp;gt; cam.CAMParameter:
    try:
        prm: cam.CAMParameter = camEntity.parameters.itemByName(
            name
        )
        if not prm: return None

        return prm.value.value

    except:
        return None


def set_cam_parameter(
        camEntity,
        name: str,
        value: str,
) -&amp;gt; bool:
    
    try:
        prm: cam.CAMParameter = camEntity.parameters.itemByName(
            name
        )
        if not prm: return False

        prm.value.value = value

        return True

    except:
        return False


def get_cam_product() -&amp;gt; cam.CAM:

    app: core.Application = core.Application.get()
    activete_cam_env()

    return app.activeProduct


def activete_cam_env() -&amp;gt; None:

    app: core.Application = core.Application.get()
    ui: core.UserInterface = app.userInterface

    camWS: core.Workspace = ui.workspaces.itemById('CAMEnvironment') 
    camWS.activate()&lt;/LI-CODE&gt;</description>
      <pubDate>Fri, 05 Apr 2024 00:59:46 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/auto-generate-setup-and-nc-output/m-p/12688275#M1931</guid>
      <dc:creator>kandennti</dc:creator>
      <dc:date>2024-04-05T00:59:46Z</dc:date>
    </item>
    <item>
      <title>Re: Auto generate Setup and NC Output</title>
      <link>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/auto-generate-setup-and-nc-output/m-p/12709275#M1932</link>
      <description>&lt;P&gt;&lt;A href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/3787950" target="_blank"&gt;kandennti&lt;/A&gt; thank you so much for this great help,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The code does what it should, I have to create the appropriate edits depending on the requirements of the furniture.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have an average of 8 to 12 setups per piece of furniture, so this work is very annoying. Thanks to your script I can concentrate on the work and not on the organization.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you very much&lt;/P&gt;</description>
      <pubDate>Mon, 15 Apr 2024 12:10:53 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/auto-generate-setup-and-nc-output/m-p/12709275#M1932</guid>
      <dc:creator>patrikrump</dc:creator>
      <dc:date>2024-04-15T12:10:53Z</dc:date>
    </item>
    <item>
      <title>Re: Auto generate Setup and NC Output</title>
      <link>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/auto-generate-setup-and-nc-output/m-p/13889768#M22349</link>
      <description>&lt;P&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/3787950"&gt;@kandennti&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I tried to insert my cam templates directly into the setup creation, but unfortunately without any success. Is there any way to do this?&lt;/P&gt;&lt;P&gt;I use Fusion but without the manufacturing extension.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 11 Nov 2025 08:46:00 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/auto-generate-setup-and-nc-output/m-p/13889768#M22349</guid>
      <dc:creator>patrikrump</dc:creator>
      <dc:date>2025-11-11T08:46:00Z</dc:date>
    </item>
    <item>
      <title>Re: Auto generate Setup and NC Output</title>
      <link>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/auto-generate-setup-and-nc-output/m-p/13896303#M22356</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/10977011"&gt;@patrikrump&lt;/a&gt;&amp;nbsp;-san.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;No extensions are required.&lt;/P&gt;
&lt;P&gt;I create a setup, load the CAM template, and run the calculations.&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;# Fusion360API Python script

import traceback
import adsk.core as core
import adsk.fusion as fusion
import adsk.cam as cam
import sys
from pathlib import Path

def run(context):
    ui: core.UserInterface = None
    try:
        # Please modify the template path.
        templatePath: str = r"C:\temp\face.f3dhsm-template"

        if not Path(templatePath).exists():
            return

        app: core.Application = core.Application.get()
        ui = app.userInterface

        camObj: cam.CAM = get_cam_product()

        # bodies
        rootOcc: fusion.Occurrence = camObj.designRootOccurrence
        bodies = get_show_bodies(rootOcc.component)
        if len(bodies) &amp;lt; 1: return

        # setup
        setup: cam.Setup = create_setup(camObj, bodies[0])

        # template
        template: cam.CAMTemplate = cam.CAMTemplate.createFromFile(templatePath)
        setup.createFromCAMTemplate(template)

        # calculate
        camObj.generateAllToolpaths(True)

    except:
        if ui:
            ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))


def get_show_bodies(
        root: fusion.Component
) -&amp;gt; list[fusion.BRepBody]:
    
    bodies = root.findBRepUsingPoint(
        core.Point3D.create(0,0,0),
        fusion.BRepEntityTypes.BRepBodyEntityType,
        sys.float_info.max,
        True,
    )

    return list(bodies)


def create_setup(
        camObj: cam.CAM,
        targetBody: fusion.BRepBody,
) -&amp;gt; cam.Setup:

    setups: cam.Setups = camObj.setups
    setupIpt: cam.SetupInput = setups.createInput(
        cam.OperationTypes.MillingOperation
    )
    setupIpt.models = [targetBody]
    setup: cam.Setup = setups.add(setupIpt)
    setup.name = targetBody.name

    set_cam_parameter(
        setup,
        'job_stockMode',
        'default',
    )

    set_cam_parameter(
        setup,
        'job_stockOffsetMode',
        'keep',
    )

    return setup


def set_cam_parameter(
        camEntity,
        name: str,
        value: str,
) -&amp;gt; bool:
    
    try:
        prm: cam.CAMParameter = camEntity.parameters.itemByName(
            name
        )
        if not prm: return False

        prm.value.value = value

        return True

    except:
        return False


def get_cam_product() -&amp;gt; cam.CAM:

    app: core.Application = core.Application.get()
    activete_cam_env()

    return app.activeProduct


def activete_cam_env() -&amp;gt; None:

    app: core.Application = core.Application.get()
    ui: core.UserInterface = app.userInterface

    camWS: core.Workspace = ui.workspaces.itemById('CAMEnvironment') 
    camWS.activate()&lt;/LI-CODE&gt;</description>
      <pubDate>Wed, 12 Nov 2025 14:27:12 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/auto-generate-setup-and-nc-output/m-p/13896303#M22356</guid>
      <dc:creator>kandennti</dc:creator>
      <dc:date>2025-11-12T14:27:12Z</dc:date>
    </item>
    <item>
      <title>Re: Auto generate Setup and NC Output</title>
      <link>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/auto-generate-setup-and-nc-output/m-p/13912516#M22384</link>
      <description>&lt;P&gt;Hello Kandennti,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;A really great solution.&lt;BR /&gt;I'm really glad you took the trouble to do this.&lt;/P&gt;&lt;P&gt;I've added to it so that setups are also generated for all objects.&lt;/P&gt;&lt;P&gt;Would it be possible to add to this so that the NC programs are also generated?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;# Fusion360API Python script

import traceback
import adsk.core as core
import adsk.fusion as fusion
import adsk.cam as cam
import sys
from pathlib import Path

def run(context):
    ui: core.UserInterface = None
    try:
        # Please modify the template path.
        templatePath: str = r"C:\temp\face.f3dhsm-template"

        if not Path(templatePath).exists():
            return

        app: core.Application = core.Application.get()
        ui = app.userInterface

        camObj: cam.CAM = get_cam_product()

        # bodies
        rootOcc: fusion.Occurrence = camObj.designRootOccurrence
        bodies = get_show_bodies(rootOcc.component)
        if len(bodies) &amp;lt; 1: return

        # template laden
        template: cam.CAMTemplate = cam.CAMTemplate.createFromFile(templatePath)

        # für alle Körper ein Setup erzeugen
        for body in bodies:
            setup: cam.Setup = create_setup(camObj, body)
            setup.createFromCAMTemplate(template)

        # calculate
        camObj.generateAllToolpaths(True)

    except:
        if ui:
            ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))


def get_show_bodies(
        root: fusion.Component
) -&amp;gt; list[fusion.BRepBody]:
    
    bodies = root.findBRepUsingPoint(
        core.Point3D.create(0,0,0),
        fusion.BRepEntityTypes.BRepBodyEntityType,
        sys.float_info.max,
        True,
    )

    return list(bodies)


def create_setup(
        camObj: cam.CAM,
        targetBody: fusion.BRepBody,
) -&amp;gt; cam.Setup:

    setups: cam.Setups = camObj.setups
    setupIpt: cam.SetupInput = setups.createInput(
        cam.OperationTypes.MillingOperation
    )
    setupIpt.models = [targetBody]
    setup: cam.Setup = setups.add(setupIpt)
    setup.name = targetBody.name

    set_cam_parameter(
        setup,
        'job_stockMode',
        'default',
    )

    set_cam_parameter(
        setup,
        'job_stockOffsetMode',
        'keep',
    )

    return setup


def set_cam_parameter(
        camEntity,
        name: str,
        value: str,
) -&amp;gt; bool:
    
    try:
        prm: cam.CAMParameter = camEntity.parameters.itemByName(
            name
        )
        if not prm: return False

        prm.value.value = value

        return True

    except:
        return False


def get_cam_product() -&amp;gt; cam.CAM:

    app: core.Application = core.Application.get()
    activete_cam_env()

    return app.activeProduct


def activete_cam_env() -&amp;gt; None:

    app: core.Application = core.Application.get()
    ui: core.UserInterface = app.userInterface

    camWS: core.Workspace = ui.workspaces.itemById('CAMEnvironment') 
    camWS.activate()&lt;/LI-CODE&gt;</description>
      <pubDate>Thu, 20 Nov 2025 07:36:13 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/auto-generate-setup-and-nc-output/m-p/13912516#M22384</guid>
      <dc:creator>patrikrump</dc:creator>
      <dc:date>2025-11-20T07:36:13Z</dc:date>
    </item>
    <item>
      <title>Re: Auto generate Setup and NC Output</title>
      <link>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/auto-generate-setup-and-nc-output/m-p/13915769#M22388</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/10977011"&gt;@patrikrump&lt;/a&gt;&amp;nbsp;-san.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I think we should configure it more precisely, but here's a simple example.&lt;BR /&gt;Functions not listed here are the same as before.&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;# Fusion360API Python script

import traceback
import adsk.core as core
import adsk.fusion as fusion
import adsk.cam as cam
import sys
from pathlib import Path

def run(context):
    ui: core.UserInterface = None
    try:
        # Please modify the template path.
        templatePath: str = r"C:\temp\face.f3dhsm-template"

        if not Path(templatePath).exists():
            return

        app: core.Application = core.Application.get()
        ui = app.userInterface

        camObj: cam.CAM = get_cam_product()

        # bodies
        rootOcc: fusion.Occurrence = camObj.designRootOccurrence
        bodies = get_show_bodies(rootOcc.component)
        if len(bodies) &amp;lt; 1: return

        # template laden
        template: cam.CAMTemplate = cam.CAMTemplate.createFromFile(templatePath)

        # für alle Körper ein Setup erzeugen
        for body in bodies:
            setup: cam.Setup = create_setup(camObj, body)
            setup.createFromCAMTemplate(template)
            create_nc_program(
                camObj,
                setup,
            )

        # calculate
        camObj.generateAllToolpaths(True)

    except:
        if ui:
            ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))


def create_nc_program(
        camObj: cam.CAM,
        targetSetup: cam.Setup,
) -&amp;gt; cam.NCProgram:
    
    ncPrograms: cam.NCPrograms = camObj.ncPrograms
    ncIpt: cam.NCProgramInput = ncPrograms.createInput()
    ncIpt.displayName = targetSetup.name

    set_cam_parameter(
        ncIpt,
        "nc_program_filename",
        targetSetup.name,
    )

    set_cam_parameter(
        ncIpt,
        "nc_program_openInEditor",
        True,
    )

    ncIpt.operations = [targetSetup]
    ncPrograms.add(ncIpt)

・・・&lt;/LI-CODE&gt;</description>
      <pubDate>Sat, 22 Nov 2025 13:47:19 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/auto-generate-setup-and-nc-output/m-p/13915769#M22388</guid>
      <dc:creator>kandennti</dc:creator>
      <dc:date>2025-11-22T13:47:19Z</dc:date>
    </item>
  </channel>
</rss>

