#Author- M.Jamal Nasim
#Description-
import adsk.core, adsk.fusion, adsk.cam, traceback
def run(context):
ui = None
try:
# getting root Component of the fusion 360
app = adsk.core.Application.get()
ui = app.userInterface
design = app.activeProduct
rootComp = adsk.fusion.Component.cast(design.rootComponent)
# adding sketch to xy Plane
sketch = rootComp.sketches.add(rootComp.xYConstructionPlane)
sketchTeeth = rootComp.sketches.add(rootComp.xYConstructionPlane)
# create a point for circle cneter
circleCenter = adsk.core.Point3D.create(0,0,0)
teethCenter = adsk.core.Point3D.create(0,15,0)
# creating circle
circle = sketch.sketchCurves.sketchCircles.addByCenterRadius(circleCenter,15)
teethCircle = sketchTeeth.sketchCurves.sketchCircles.addByCenterRadius(teethCenter,1.56)
# getting profile for extrude
profile1 = sketch.profiles.item(0)
profileTeeth = sketchTeeth.profiles.item(0)
# getting extrude feature
extrude = rootComp.features.extrudeFeatures
extrudeCut = rootComp.features.extrudeFeatures
# creating input for extrude just like the dialog box in fusion user interface
ei = extrude.createInput(profile1,adsk.fusion.FeatureOperations.NewBodyFeatureOperation)
ei2 = extrude.createInput(profileTeeth,adsk.fusion.FeatureOperations.CutFeatureOperation)
ei.setDistanceExtent(False , adsk.core.ValueInput.createByReal(5))
ei2.setDistanceExtent(False, adsk.core.ValueInput.createByReal(5))
# extruding profile
extrude1 = extrude.add(ei)
extrudecut1 = extrude.add(ei2)
inputEntites = adsk.core.ObjectCollection.create()
inputEntites.add(extrudecut1)
path = rootComp.features.createPath(circle)
patternQuantity = adsk.core.ValueInput.createByReal(5)
patternDistance = adsk.core.ValueInput.createByReal(5)
pathPatterns = adsk.fusion.Features.pathPatternFeatures
pathPatternInput = pathPatterns.createInput(inputEntites, path, patternQuantity, patternDistance, adsk.fusion.PatternDistanceType.SpacingPatternDistanceType)
# Create the path pattern
pathFeature = pathPatterns.add(pathPatternInput)
except:
if ui:
ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))