Hi @doorpoo2 .
I made a script.
# Fusion360API Python script
import traceback
import adsk
import adsk.core as core
import adsk.fusion as fusion
def run(context):
ui = core.UserInterface.cast(None)
try:
app: core.Application = core.Application.get()
ui = app.userInterface
msg: str = 'Select Sketch Curve'
selFilter: str = 'SketchCurves'
sel: core.Selection = selectEnt(msg, selFilter)
if not sel:
return
sktCrv: fusion.SketchCurve = sel.entity
distanceList = [
0.375,
0.3,
0.1,
0.075,
]
exec_multiple_offsets(sktCrv, distanceList)
ui.messageBox('Done')
except:
if ui:
ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
def exec_multiple_offsets(
sktCrv: fusion.SketchCurve,
distanceList: list) -> None:
skt: fusion.Sketch = sktCrv.parentSketch
des: fusion.Design = skt.parentComponent.parentDesign
unitmgr: core.UnitsManager = des.unitsManager
ratio = unitmgr.convert(
1,
unitmgr.defaultLengthUnits,
unitmgr.internalUnits,
)
distLst = [d * ratio for d in distanceList]
curves = skt.findConnectedCurves(sktCrv)
dirPoint = adsk.core.Point3D.create(10000000, 10000000, 0)
skt.isComputeDeferred = True
for dist in distLst:
skt.offset(curves, dirPoint, dist)
skt.isComputeDeferred = False
def selectEnt(
msg: str,
filterStr: str) -> core.Selection:
try:
app: core.Application = core.Application.get()
ui: core.UserInterface = app.userInterface
sel = ui.selectEntity(msg, filterStr)
return sel
except:
return None
It works like this.
I haven't figured out how to use it, but if it were me, I would avoid making complex sketches and think about making offset bodies.