Hi @richop88 .
Although not very practical, I created sample code.
・ Only a single curve can be selected.
・ All cloned sketch curves are NurbsCurve.
# Fusion360API Python script
# SketchCurve RectangularPatternLike sample
import adsk.core, adsk.fusion, traceback
def run(context):
ui = None
try:
# set pattern param
x_count = 5
y_count = 3
x_pich = 2.0
y_pich = 3.0
# get obj
app :adsk.core.Application = adsk.core.Application.get()
ui :adsk.core.UserInterface = app.userInterface
des :adsk.fusion.Design = app.activeProduct
root :adsk.fusion.Component = des.rootComponent
# Select SketchCurve
msg :str = 'Select SketchCurve'
selFiltter :str = 'SketchCurves'
sel :adsk.core.Selection = selectEnt(ui, msg ,selFiltter)
if not sel: return
# get select obj
crv :adsk.fusion.SketchCurve = sel.entity
skt :adsk.fusion.Sketch = crv.parentSketch
# get Vector
x_vec = skt.xDirection
y_vec = skt.yDirection
# get Matrix
vec3d = adsk.core.Vector3D
mat3d = adsk.core.Matrix3D
matLst = []
for x in range(x_count):
for y in range(y_count):
vec = vec3d.create(x_pich * x, y_pich * y, 0.0)
mat = mat3d.create()
mat.translation = vec
matLst.append(mat)
matLst = matLst[1:]
# get Geometry info
geo = crv.worldGeometry
if hasattr(geo, 'asNurbsCurve'):
geo = geo.asNurbsCurve
(returnValue, controlPoints, degree, knots, isRational, weights, isPeriodic) = geo.getData()
# init sketch curve
nurbs3d = adsk.core.NurbsCurve3D
fitCrv = skt.sketchCurves.sketchFittedSplines
for mat in matLst:
nurbs = nurbs3d.createRational(controlPoints, degree, knots, weights, isPeriodic)
nurbs.transformBy(mat)
fitCrv.addByNurbsCurve(nurbs)
# fin
ui.messageBox('Done')
except:
if ui:
ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
def selectEnt(
ui :adsk.core.UserInterface,
msg :str,
filtterStr :str) -> adsk.core.Selection :
try:
sel = ui.selectEntity(msg, filtterStr)
return sel
except:
return None