<?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: Add Rectangular Pattern Feature to Component in Fusion API and Scripts Forum</title>
    <link>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/add-rectangular-pattern-feature-to-component/m-p/11388567#M5552</link>
    <description>&lt;P&gt;I've made a few changes to the script allowing a component selection first.&amp;nbsp; Just wanted to post the final script for anyone else's benefit.&amp;nbsp; Thanks again to&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/12364171"&gt;@Jorge_Jaramillo&lt;/a&gt;&amp;nbsp;for the great solution.&lt;/P&gt;&lt;LI-CODE lang="python"&gt;import adsk.core, adsk.fusion, traceback

def rectangularPattern(srcComp,quantity1,distance1,quantity2,distance2):
    def traverseForBodies(occs,lst):
        """gets all bodies in occurence, including bodies in childOccurences
        lst = list()
        traverseForBodies(product,lst)"""
        if not occs.bRepBodies.count == 0:
            for bod in occs.bRepBodies:
                if bod.isVisible:lst.append(bod)
        #check child occurences
        if occs.childOccurrences:
            occChild = occs.childOccurrences
            for child in occChild:
                traverseForBodies(child,lst)
    def PatternBodies(  srcComp: adsk.fusion.Component, 
                    destOccu: adsk.fusion.Occurrence,
                    quantityOne: adsk.core.ValueInput, 
                    distanceOne: adsk.core.ValueInput, 
                    quantityTwo: adsk.core.ValueInput, 
                    distanceTwo: adsk.core.ValueInput):
        try:
            # Create input entities for rectangular pattern
            inputEntites = adsk.core.ObjectCollection.create()
            lst = list()
            traverseForBodies(srcComp,lst)
            for i in lst:
                # copy bodies to dest component
                cpb = destOccu.component.features.copyPasteBodies.add(i)
                inputEntites.add(cpb.bodies[0])

            # Get x and y axes for rectangular pattern
            xAxis = destOccu.component.xConstructionAxis
            yAxis = destOccu.component.yConstructionAxis

            # Create the input for rectangular pattern
            rectangularPatterns = destOccu.component.features.rectangularPatternFeatures
            rectangularPatternInput = rectangularPatterns.createInput(inputEntites, xAxis, quantityOne, distanceOne, adsk.fusion.PatternDistanceType.SpacingPatternDistanceType)

            # Set the data for second direction
            rectangularPatternInput.setDirectionTwo(yAxis, quantityTwo, distanceTwo)

            # Create the rectangular pattern
            rectangularFeature = rectangularPatterns.add(rectangularPatternInput)
        except:
            app.log(f'Error in PatternBodies: {traceback.format_exc()}')

    try:
        app = adsk.core.Application.get()
        ui  = app.userInterface     
        #source component to take bodies from
        rootComp = adsk.fusion.Design.cast(app.activeProduct).rootComponent

        #create the new component
        matrix = adsk.core.Matrix3D.create()
        destOccu = rootComp.occurrences.addNewComponent(matrix)
        destComp = destOccu.component
        destComp.name = 'Main_Rect_Pattern'

        # create ValueInput's for each dimension quantity1,distance1,quantity2,distance2
        quantityOne = adsk.core.ValueInput.createByString(quantity1)
        distanceOne = adsk.core.ValueInput.createByString(distance1 + ' cm')
        quantityTwo = adsk.core.ValueInput.createByString(quantity2)
        distanceTwo = adsk.core.ValueInput.createByString(distance2 + ' cm')

        PatternBodies(srcComp, destOccu, quantityOne, distanceOne, quantityTwo, distanceTwo)
    except:
        app.log(f'Error in rectangularPattern: {traceback.format_exc()}')



app = adsk.core.Application.get()
ui  = app.userInterface

#Select body
comp = ui.selectEntity('Select a component', 'Occurrences').entity#.component
print("")
bbMin=comp.boundingBox.minPoint
bbMax=comp.boundingBox.maxPoint
prodL = bbMax.x-bbMin.x
prodW = bbMax.y-bbMin.y

quantityOne=str(4)
distanceOne=str(prodL)
quantityTwo=str(4)
distanceTwo=str(prodW)
rectangularPattern(comp,quantityOne,distanceOne,quantityTwo,distanceTwo)

&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Eric&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 29 Aug 2022 18:43:48 GMT</pubDate>
    <dc:creator>ebunn3</dc:creator>
    <dc:date>2022-08-29T18:43:48Z</dc:date>
    <item>
      <title>Add Rectangular Pattern Feature to Component</title>
      <link>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/add-rectangular-pattern-feature-to-component/m-p/11355874#M5547</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I've pasted a code example below that creates a Rectangular Pattern Feature and adds it to a new document.&amp;nbsp; I want to re-configure this so it adds the pattern feature to a new component within an active file instead of creating a new file and adding it to that one.&amp;nbsp; Can someone help me re-configure this example to do this?&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I've tried to change by passing in a new component and using it as my root component and get the following error:&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Traceback (most recent call last): &lt;/SPAN&gt;&lt;SPAN&gt;File "&lt;A target="_blank"&gt;C:/Users/ebunn/AppData/Roaming/Autodesk/Autodesk&lt;/A&gt; Fusion 360/API/Scripts/Nesting_True_Type_By_Points_Comp/Nesting_True_Type_By_Points_Comp.py", line 736, in &amp;lt;module&amp;gt; &lt;/SPAN&gt;&lt;SPAN&gt;PatternBodies(preN[1],newComp,numX,moveX,numY,moveY) &lt;/SPAN&gt;&lt;SPAN&gt;File "&lt;A target="_blank"&gt;C:/Users/ebunn/AppData/Roaming/Autodesk/Autodesk&lt;/A&gt; Fusion 360/API/Scripts/Nesting_True_Type_By_Points_Comp/Nesting_True_Type_By_Points_Comp.py", line 683, in PatternBodies &lt;/SPAN&gt;&lt;SPAN&gt;rectangularFeature = rectangularPatterns.add(rectangularPatternInput) &lt;/SPAN&gt;&lt;SPAN&gt;File "&lt;A title="Ctrl + click to follow link" target="_blank"&gt;C:\Users/ebunn/AppData/Local/Autodesk/webdeploy/production/8814bf1cdd9624465cbdf7f023becc629a5ffbe5/Api/Python/packages\adsk\fusion.py&lt;/A&gt;", line 28366, in add &lt;/SPAN&gt;&lt;SPAN&gt;return _fusion.RectangularPatternFeatures_add(self, input) &lt;/SPAN&gt;&lt;SPAN&gt;RuntimeError: 2 : InternalValidationError : Utils::getObjectPath(obj.get(),objPath, nullptr,path)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Here is an example of the attempted change.&amp;nbsp; The new component I am trying to add it to is called newComp.&amp;nbsp; I am pulling the bodies from another component passed in as comp:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;def&lt;/SPAN&gt; &lt;SPAN&gt;PatternBodies&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;comp&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt;newComp&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt;quantityOne&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt;distanceOne&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt;quantityTwo&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt;distanceTwo&lt;/SPAN&gt;&lt;SPAN&gt;&lt;span class="lia-unicode-emoji" title=":disappointed_face:"&gt;😞&lt;/span&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;app&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;adsk&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;core&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Application&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;get&lt;/SPAN&gt;&lt;SPAN&gt;()&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;ui&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;app&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;userInterface&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;# Create a document.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;# doc = app.documents.add(adsk.core.DocumentTypes.FusionDesignDocumentType)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;product&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;app&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;activeProduct&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;design&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;adsk&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;fusion&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Design&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;cast&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;product&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;# # Get the root component of the active design.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;rootComp&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;newComp&lt;/SPAN&gt;&lt;SPAN&gt;#design.rootComponent&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;#Get &amp;nbsp;the document units (bookmark:units)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;units&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;design&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;unitsManager&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;defaultLengthUnits&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;# Create input entities for rectangular pattern&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;inputEntites&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;adsk&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;core&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;ObjectCollection&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;create&lt;/SPAN&gt;&lt;SPAN&gt;()&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;for&lt;/SPAN&gt; &lt;SPAN&gt;i&lt;/SPAN&gt; &lt;SPAN&gt;in&lt;/SPAN&gt; &lt;SPAN&gt;comp&lt;/SPAN&gt;&lt;SPAN&gt;.bRepBodies:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;inputEntites&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;add&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;i&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&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, adsk.fusion, traceback

def run(context):
    ui = None
    try:
        app = adsk.core.Application.get()
        ui = app.userInterface
        
        # Create a document.
        doc = app.documents.add(adsk.core.DocumentTypes.FusionDesignDocumentType)
 
        product = app.activeProduct
        design = adsk.fusion.Design.cast(product)

        # Get the root component of the active design.
        rootComp = design.rootComponent
        
        # Create sketch
        sketches = rootComp.sketches
        sketch = sketches.add(rootComp.xZConstructionPlane)
        sketchCircles = sketch.sketchCurves.sketchCircles
        centerPoint = adsk.core.Point3D.create(0, 0, 0)
        sketchCircles.addByCenterRadius(centerPoint, 3.0)
        
        # Get the profile defined by the circle.
        prof = sketch.profiles.item(0)

        # Create an extrusion input
        extrudes = rootComp.features.extrudeFeatures
        extInput = extrudes.createInput(prof, adsk.fusion.FeatureOperations.NewBodyFeatureOperation)
        
        # Define that the extent is a distance extent of 5 cm.
        distance = adsk.core.ValueInput.createByReal(5)
        extInput.setDistanceExtent(False, distance)

        # Create the extrusion.
        ext = extrudes.add(extInput)
        
        # Get the body created by extrusion
        body = ext.bodies.item(0)
        
        # Create input entities for rectangular pattern
        inputEntites = adsk.core.ObjectCollection.create()
        inputEntites.add(body)
        
        # Get x and y axes for rectangular pattern
        xAxis = rootComp.xConstructionAxis
        yAxis = rootComp.yConstructionAxis
        
        # Quantity and distance
        quantityOne = adsk.core.ValueInput.createByString('3')
        distanceOne = adsk.core.ValueInput.createByString('8 cm')
        quantityTwo = adsk.core.ValueInput.createByString('3')
        distanceTwo = adsk.core.ValueInput.createByString('8 cm')
        
        # Create the input for rectangular pattern
        rectangularPatterns = rootComp.features.rectangularPatternFeatures
        rectangularPatternInput = rectangularPatterns.createInput(inputEntites, xAxis, quantityOne, distanceOne, adsk.fusion.PatternDistanceType.SpacingPatternDistanceType)
        
        # Set the data for second direction
        rectangularPatternInput.setDirectionTwo(yAxis, quantityTwo, distanceTwo)
        
        # Create the rectangular pattern
        rectangularFeature = rectangularPatterns.add(rectangularPatternInput)
    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;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Appreciate the help.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Eric&lt;/P&gt;</description>
      <pubDate>Fri, 12 Aug 2022 13:33:57 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/add-rectangular-pattern-feature-to-component/m-p/11355874#M5547</guid>
      <dc:creator>ebunn3</dc:creator>
      <dc:date>2022-08-12T13:33:57Z</dc:date>
    </item>
    <item>
      <title>Re: Add Rectangular Pattern Feature to Component</title>
      <link>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/add-rectangular-pattern-feature-to-component/m-p/11356190#M5548</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/11211802"&gt;@ebunn3&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Please find attached a script for it.&lt;/P&gt;&lt;P&gt;Just to clarify: the bodies created in the rectangular pattern are kept in the source component, so at the end of the function it moves them to the new created component.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;def PatternBodies(  srcComp: adsk.fusion.Component, 
                    destOccu: adsk.fusion.Occurrence,
                    quantityOne: adsk.core.ValueInput, 
                    distanceOne: adsk.core.ValueInput, 
                    quantityTwo: adsk.core.ValueInput, 
                    distanceTwo: adsk.core.ValueInput):
    try:
        # Create input entities for rectangular pattern
        inputEntites = adsk.core.ObjectCollection.create()
        for i in srcComp.bRepBodies:
            inputEntites.add(i)

        # Get x and y axes for rectangular pattern
        xAxis = srcComp.xConstructionAxis
        yAxis = srcComp.yConstructionAxis

        # Create the input for rectangular pattern
        rectangularPatterns = srcComp.features.rectangularPatternFeatures
        rectangularPatternInput = rectangularPatterns.createInput(inputEntites, xAxis, quantityOne, distanceOne, adsk.fusion.PatternDistanceType.SpacingPatternDistanceType)

        # Set the data for second direction
        rectangularPatternInput.setDirectionTwo(yAxis, quantityTwo, distanceTwo)
        
        # Create the rectangular pattern
        rectangularFeature = rectangularPatterns.add(rectangularPatternInput)

        # move the bodies to the destComp, since the new bodies are created in the same component they belongs
        bodyArray = [body for body in rectangularFeature.bodies]
        # I had to create this body array, because iterating over rectangularFeature.bodies gives an error on item #8.
        for body in bodyArray:
            body.moveToComponent(destOccu)
    except:
        app.log(f'Error in PatternBodies: {traceback.format_exc()}')


def rectangularPattern():
    try:
        #source component to take bodies from
        rootComp = adsk.fusion.Design.cast(app.activeProduct).rootComponent
        srcComp = rootComp

        #create the new component
        matrix = adsk.core.Matrix3D.create()
        destOccu = rootComp.occurrences.addNewComponent(matrix)
        destComp = destOccu.component
        destComp.name = 'newComponent'

        # create ValueInput's for each dimension
        quantityOne = adsk.core.ValueInput.createByString('3')
        distanceOne = adsk.core.ValueInput.createByString('8 cm')
        quantityTwo = adsk.core.ValueInput.createByString('3')
        distanceTwo = adsk.core.ValueInput.createByString('8 cm')

        PatternBodies(srcComp, destOccu, quantityOne, distanceOne, quantityTwo, distanceTwo)
    except:
        app.log(f'Error in rectangularPattern: {traceback.format_exc()}')&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Hope this help to solve your problem.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Jorge&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 12 Aug 2022 15:46:02 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/add-rectangular-pattern-feature-to-component/m-p/11356190#M5548</guid>
      <dc:creator>Jorge_Jaramillo</dc:creator>
      <dc:date>2022-08-12T15:46:02Z</dc:date>
    </item>
    <item>
      <title>Re: Add Rectangular Pattern Feature to Component</title>
      <link>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/add-rectangular-pattern-feature-to-component/m-p/11356353#M5549</link>
      <description>&lt;P&gt;Walter,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;See screenshot below.&amp;nbsp; I want to use the bodies in Component 1:1 and create a new component that will contain the rectangular pattern.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks for all of the help.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Eric&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ebunn3_0-1660324368271.png" style="width: 600px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1103370iB7E99DE455128AD4/image-size/medium?v=v2&amp;amp;px=400" role="button" title="ebunn3_0-1660324368271.png" alt="ebunn3_0-1660324368271.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 12 Aug 2022 17:13:16 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/add-rectangular-pattern-feature-to-component/m-p/11356353#M5549</guid>
      <dc:creator>ebunn3</dc:creator>
      <dc:date>2022-08-12T17:13:16Z</dc:date>
    </item>
    <item>
      <title>Re: Add Rectangular Pattern Feature to Component</title>
      <link>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/add-rectangular-pattern-feature-to-component/m-p/11356491#M5550</link>
      <description>&lt;P&gt;Give a try at this script which worked for me.&lt;/P&gt;&lt;P&gt;If you have two bodies on source component, you will get 18 (= 2 x 3 x 3) in the new component.&lt;/P&gt;&lt;LI-CODE lang="python"&gt;def PatternBodies(  srcComp: adsk.fusion.Component, 
                    destOccu: adsk.fusion.Occurrence,
                    quantityOne: adsk.core.ValueInput, 
                    distanceOne: adsk.core.ValueInput, 
                    quantityTwo: adsk.core.ValueInput, 
                    distanceTwo: adsk.core.ValueInput):
    try:
        # Create input entities for rectangular pattern
        inputEntites = adsk.core.ObjectCollection.create()
        for i in srcComp.bRepBodies:
            # copy bodies to dest component
            cpb = destOccu.component.features.copyPasteBodies.add(i)
            inputEntites.add(cpb.bodies[0])

        # Get x and y axes for rectangular pattern
        xAxis = destOccu.component.xConstructionAxis
        yAxis = destOccu.component.yConstructionAxis

        # Create the input for rectangular pattern
        rectangularPatterns = destOccu.component.features.rectangularPatternFeatures
        rectangularPatternInput = rectangularPatterns.createInput(inputEntites, xAxis, quantityOne, distanceOne, adsk.fusion.PatternDistanceType.SpacingPatternDistanceType)

        # Set the data for second direction
        rectangularPatternInput.setDirectionTwo(yAxis, quantityTwo, distanceTwo)

        # Create the rectangular pattern
        rectangularFeature = rectangularPatterns.add(rectangularPatternInput)
    except:
        app.log(f'Error in PatternBodies: {traceback.format_exc()}')


def rectangularPattern():
    try:
        #source component to take bodies from
        rootComp = adsk.fusion.Design.cast(app.activeProduct).rootComponent
        srcComp = rootComp.occurrences.item(0).component  # &amp;lt;---- bodies from first component under root component; change according to your design

        #create the new component
        matrix = adsk.core.Matrix3D.create()
        destOccu = rootComp.occurrences.addNewComponent(matrix)
        destComp = destOccu.component
        destComp.name = 'newComponent'

        # create ValueInput's for each dimension
        quantityOne = adsk.core.ValueInput.createByString('3')
        distanceOne = adsk.core.ValueInput.createByString('8 cm')
        quantityTwo = adsk.core.ValueInput.createByString('3')
        distanceTwo = adsk.core.ValueInput.createByString('8 cm')

        PatternBodies(srcComp, destOccu, quantityOne, distanceOne, quantityTwo, distanceTwo)
    except:
        app.log(f'Error in rectangularPattern: {traceback.format_exc()}')&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The change I made is to copy source bodies to new component before making the rect pattern, instead of moving the result bodies at the end.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Jorge&lt;/P&gt;</description>
      <pubDate>Fri, 12 Aug 2022 19:02:12 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/add-rectangular-pattern-feature-to-component/m-p/11356491#M5550</guid>
      <dc:creator>Jorge_Jaramillo</dc:creator>
      <dc:date>2022-08-12T19:02:12Z</dc:date>
    </item>
    <item>
      <title>Re: Add Rectangular Pattern Feature to Component</title>
      <link>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/add-rectangular-pattern-feature-to-component/m-p/11356515#M5551</link>
      <description>&lt;P&gt;Thank you so much!!!&amp;nbsp; Perfect.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Eric&lt;/P&gt;</description>
      <pubDate>Fri, 12 Aug 2022 19:17:15 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/add-rectangular-pattern-feature-to-component/m-p/11356515#M5551</guid>
      <dc:creator>ebunn3</dc:creator>
      <dc:date>2022-08-12T19:17:15Z</dc:date>
    </item>
    <item>
      <title>Re: Add Rectangular Pattern Feature to Component</title>
      <link>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/add-rectangular-pattern-feature-to-component/m-p/11388567#M5552</link>
      <description>&lt;P&gt;I've made a few changes to the script allowing a component selection first.&amp;nbsp; Just wanted to post the final script for anyone else's benefit.&amp;nbsp; Thanks again to&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/12364171"&gt;@Jorge_Jaramillo&lt;/a&gt;&amp;nbsp;for the great solution.&lt;/P&gt;&lt;LI-CODE lang="python"&gt;import adsk.core, adsk.fusion, traceback

def rectangularPattern(srcComp,quantity1,distance1,quantity2,distance2):
    def traverseForBodies(occs,lst):
        """gets all bodies in occurence, including bodies in childOccurences
        lst = list()
        traverseForBodies(product,lst)"""
        if not occs.bRepBodies.count == 0:
            for bod in occs.bRepBodies:
                if bod.isVisible:lst.append(bod)
        #check child occurences
        if occs.childOccurrences:
            occChild = occs.childOccurrences
            for child in occChild:
                traverseForBodies(child,lst)
    def PatternBodies(  srcComp: adsk.fusion.Component, 
                    destOccu: adsk.fusion.Occurrence,
                    quantityOne: adsk.core.ValueInput, 
                    distanceOne: adsk.core.ValueInput, 
                    quantityTwo: adsk.core.ValueInput, 
                    distanceTwo: adsk.core.ValueInput):
        try:
            # Create input entities for rectangular pattern
            inputEntites = adsk.core.ObjectCollection.create()
            lst = list()
            traverseForBodies(srcComp,lst)
            for i in lst:
                # copy bodies to dest component
                cpb = destOccu.component.features.copyPasteBodies.add(i)
                inputEntites.add(cpb.bodies[0])

            # Get x and y axes for rectangular pattern
            xAxis = destOccu.component.xConstructionAxis
            yAxis = destOccu.component.yConstructionAxis

            # Create the input for rectangular pattern
            rectangularPatterns = destOccu.component.features.rectangularPatternFeatures
            rectangularPatternInput = rectangularPatterns.createInput(inputEntites, xAxis, quantityOne, distanceOne, adsk.fusion.PatternDistanceType.SpacingPatternDistanceType)

            # Set the data for second direction
            rectangularPatternInput.setDirectionTwo(yAxis, quantityTwo, distanceTwo)

            # Create the rectangular pattern
            rectangularFeature = rectangularPatterns.add(rectangularPatternInput)
        except:
            app.log(f'Error in PatternBodies: {traceback.format_exc()}')

    try:
        app = adsk.core.Application.get()
        ui  = app.userInterface     
        #source component to take bodies from
        rootComp = adsk.fusion.Design.cast(app.activeProduct).rootComponent

        #create the new component
        matrix = adsk.core.Matrix3D.create()
        destOccu = rootComp.occurrences.addNewComponent(matrix)
        destComp = destOccu.component
        destComp.name = 'Main_Rect_Pattern'

        # create ValueInput's for each dimension quantity1,distance1,quantity2,distance2
        quantityOne = adsk.core.ValueInput.createByString(quantity1)
        distanceOne = adsk.core.ValueInput.createByString(distance1 + ' cm')
        quantityTwo = adsk.core.ValueInput.createByString(quantity2)
        distanceTwo = adsk.core.ValueInput.createByString(distance2 + ' cm')

        PatternBodies(srcComp, destOccu, quantityOne, distanceOne, quantityTwo, distanceTwo)
    except:
        app.log(f'Error in rectangularPattern: {traceback.format_exc()}')



app = adsk.core.Application.get()
ui  = app.userInterface

#Select body
comp = ui.selectEntity('Select a component', 'Occurrences').entity#.component
print("")
bbMin=comp.boundingBox.minPoint
bbMax=comp.boundingBox.maxPoint
prodL = bbMax.x-bbMin.x
prodW = bbMax.y-bbMin.y

quantityOne=str(4)
distanceOne=str(prodL)
quantityTwo=str(4)
distanceTwo=str(prodW)
rectangularPattern(comp,quantityOne,distanceOne,quantityTwo,distanceTwo)

&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Eric&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 29 Aug 2022 18:43:48 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/fusion-api-and-scripts-forum/add-rectangular-pattern-feature-to-component/m-p/11388567#M5552</guid>
      <dc:creator>ebunn3</dc:creator>
      <dc:date>2022-08-29T18:43:48Z</dc:date>
    </item>
  </channel>
</rss>

