need help with fillets

Anonymous

need help with fillets

Anonymous
Not applicable

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()))

0 Likes
Reply
Accepted solutions (1)
406 Views
2 Replies
Replies (2)

marshaltu
Autodesk
Autodesk
Accepted solution

Hello,

 

There were two errors in your codes. One was ")" was missing in the first line marked as Red. Another one was collection was expected as input argument. I corrected them and the codes worked well in my machine. Please give a try.

 

Thanks,

Marshal

 

#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()
        edgecollection = adsk.core.ObjectCollection.create()
        edgecollection.add(frontFlangeEdge1)
        filletInput.addConstantRadiusEdgeSet(edgecollection, 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()))


Marshal Tu
Fusion Developer
>
1 Like

Anonymous
Not applicable

thankyouu soo much sir..!

0 Likes