
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
code runs fine if i uncomment red area.. which is for fillets.. shows syntax error on blue line .. help plz
# -*- coding: utf-8 -*-
"""
Created on Tue Jul 18 12:11:48 2017
@Anonymous: jamal
"""
#Author- M.Jamal Nasim
#Description-
import adsk.core, adsk.fusion, adsk.cam, traceback , math
def run(context):
ui = None
try:
# Assign Main Varibales
numberOfTeeth = 15
innerDiameter = 0.25
pulley = generatePulley(numberOfTeeth, innerDiameter)
except:
if ui:
ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
def generatePulley(numberOfTeeth, innerDiameter):
try:
## defining variables
teethDiameter = 0.2
distanceBetweenTeeth = 0.5
mainCircumference = numberOfTeeth * distanceBetweenTeeth
mainRadius = mainCircumference / (2 * math.pi)
beltWidth = 1.5
numberOfFlanges = 2
middleHoleDiameter = innerDiameter
setScrewExtrudeRadius = 0.8
setScrewExtrudeLength = 1.25
setScrewRadius = 0.15
beltHeight = 0.2
backFlangeRadius = mainRadius + beltHeight * 2
backFlangeWidth = 0.2
frontFlangeWidth = backFlangeWidth
setScrewPlacement = 0.5 * setScrewExtrudeLength + 0.5 * backFlangeWidth
# 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 sketches to xy Plane and calling sketch funcion made below
xyPlane = rootComp.xYConstructionPlane
(mainCircleSketch, MainCircle) = createCircleSketch(xyPlane,0, 0, 0, mainRadius)
profile1 = mainCircleSketch.profiles.item(0)
(teethSketch, teethCircle) = createCircleSketch(xyPlane,0, mainRadius, 0,teethDiameter )
profileTeeth = teethSketch.profiles.item(0)
# getting extrude features by calling functions made below
oExtrude = adsk.fusion.FeatureOperations.NewBodyFeatureOperation
oCutExtrude = adsk.fusion.FeatureOperations.CutFeatureOperation
MainCircleExtrude = createExtrude(profile1 ,beltWidth , oExtrude)
TeethExtrude = createExtrude(profileTeeth ,beltWidth , oCutExtrude)
# making object colection for path pattern
inputEntites = adsk.core.ObjectCollection.create()
inputEntites.add(TeethExtrude)
# defining path and its input
path = rootComp.features.createPath(MainCircle)
quantity = adsk.core.ValueInput.createByReal(numberOfTeeth)
patternDistance = adsk.core.ValueInput.createByReal(distanceBetweenTeeth)
pathPatterns = rootComp.features.pathPatternFeatures
pathPatternInput = pathPatterns.createInput(inputEntites, path, quantity, patternDistance, adsk.fusion.PatternDistanceType.SpacingPatternDistanceType)
# Create the path pattern
pathFeature = pathPatterns.add(pathPatternInput)
# making flange sketch
(frontFlangeSketch, frontFlange) = createCircleSketch(xyPlane,0, 0, 0, backFlangeRadius)
(backFlangeSketch, backFlange) = createCircleSketch(MainCircleExtrude.endFaces.item(0),0, 0, 0, backFlangeRadius)
# getting sketch for extrude
frontFlangeProfile = frontFlangeSketch.profiles.item(0)
backFlangeProfile = adsk.core.ObjectCollection.create()
backFlangeProfile.add(backFlangeSketch.profiles.item(0))
backFlangeProfile.add(backFlangeSketch.profiles.item(1))
backFlangeExtrude = createExtrude(backFlangeProfile ,backFlangeWidth , oExtrude)
frontFlangeExtrude = createExtrude(frontFlangeProfile ,-backFlangeWidth , oExtrude)
#seleting edges oF Flanges to make fillets
backFlangeSideFace = backFlangeExtrude.sideFaces.item(0)
backFlangeEdge1 = backFlangeSideFace.edges.item(0)
backFlangeEdge2 = backFlangeSideFace.edges.item(1)
frontFlangeSideFace = frontFlangeExtrude.sideFaces.item(0)
frontFlangeEdge1 = frontFlangeSideFace.edges.item(0)
frontFlangeEdge2 = frontFlangeSideFace.edges.item(1)
# creating object collecting
flangeEdges = adsk.core.ObjectCollection.create()
flangeEdges.add(backFlangeEdge1)
flangeEdges.add(backFlangeEdge2)
flangeEdges.add(frontFlangeEdge1)
flangeEdges.add(frontFlangeEdge2)
#creating fillets
# fillets = rootComp.features.filletFeatures
# filletRadius = adsk.core.ValueInput.createByReal((frontFlangeWidth / 2)
# FilletInput = fillets.createInput()
# filletInput.addConstantRadiusEdgeSet(frontFlangeEdge1, filletRadius, True)
# filletInput.isG2 = False
# filletInput.isRollingBallCorner = True
# fillet = fillets.add(filletInput)
except:
if ui:
ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
def createExtrude(profile , distance, operation):
app = adsk.core.Application.get()
ui = app.userInterface
design = app.activeProduct
rootComp = adsk.fusion.Component.cast(design.rootComponent)
try:
extrude = rootComp.features.extrudeFeatures
# creating input for extrude just like the dialog box in fusion user interface
ei = extrude.createInput(profile ,operation)
ei.setDistanceExtent(False , adsk.core.ValueInput.createByReal(distance))
# extruding profile
extrude1 = extrude.add(ei)
return (extrude1)
except:
if ui:
ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
def createCircleSketch(plane,x, y, z, radius):
app = adsk.core.Application.get()
ui = app.userInterface
design = app.activeProduct
rootComp = adsk.fusion.Component.cast(design.rootComponent)
try:
sketches = rootComp.sketches
circleSketch = sketches.add(plane)
circles = circleSketch.sketchCurves.sketchCircles
circle = circles.addByCenterRadius(adsk.core.Point3D.create(x, y, z), radius)
return (circleSketch, circle)
except:
if ui:
ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
Solved! Go to Solution.