# Create the stem
stemSketch = sketches.addWithoutEdges(xyPlane)
center = stemSketch.modelToSketchSpace(clickPoint)
stemCircle = stemSketch.sketchCurves.sketchCircles.addByCenterRadius(center, numStemDiam/2)
stemSketch.sketchDimensions.addDiameterDimension(stemCircle, adsk.core.Point3D.create(1, 0, 0))
stemSketch.name = 'Stem Diameter Sketch'
stemProf = stemSketch.profiles[0]
stemExtInput = extrudes.createInput(stemProf, adsk.fusion.FeatureOperations.NewBodyFeatureOperation)
distance3 = adsk.core.ValueInput.createByReal(numStemLen + numHexLen + numThreadStraight)
stemExtInput.setDistanceExtent(False, distance3)
stemExt = extrudes.add(stemExtInput)
# Change to inches in Parameters
extent_3 = stemExt.extentOne
distanceMP_3 = extent_3.distance
distanceMP_3.expression = "{:.{}f}".format(((numStemLen + numHexLen + numThreadStraight) / sizeUnits), 4) + 'in'
# Add the name
stemExt.name = 'Stem length from face'
# Create the oil groove
stemGrooveSketch = sketches.addWithoutEdges(xyPlane)
stemGrooveCircle = stemGrooveSketch.sketchCurves.sketchCircles.addByCenterRadius(
center, (numStemDiam + .1) / 2)
stemGrooveCircle1 = stemGrooveSketch.sketchCurves.sketchCircles.addByCenterRadius(
center, (numStemDiam-(numStemDiam - numHoleThru)/2) / 2)
stemGrooveSketch.sketchDimensions.addDiameterDimension(stemGrooveCircle, adsk.core.Point3D.create(1, 1, 0))
stemGrooveSketch.name = 'Stem Groove Sketch'
stemGrooveProf = stemGrooveSketch.profiles[0]
stemGrooveExtInput = extrudes.createInput(stemGrooveProf, adsk.fusion.FeatureOperations.CutFeatureOperation)
grooveCenter = (numThreadStraight + numHexLen + (numStemLen / 2)) * -1
distance11 = adsk.fusion.DistanceExtentDefinition.create(
adsk.core.ValueInput.createByReal((grooveCenter + .05) * -1))
distance11A = adsk.fusion.DistanceExtentDefinition.create(
adsk.core.ValueInput.createByReal(grooveCenter - .05))
deg0 = adsk.core.ValueInput.createByString("0 deg")
stemGrooveExtInput.setTwoSidesExtent(distance11, distance11A, deg0, deg0)
stemGrooveExtInput.participantBodies = [stemExt.bodies.item(0)]
stemGrooveExt = extrudes.add(stemGrooveExtInput)
# Change to inches in Parameters
extent_11A = stemGrooveExt.extentOne
extent_11B = stemGrooveExt.extentTwo
distanceMP_11A = extent_11A.distance
distanceMP_11B = extent_11B.distance
distanceMP_11A.expression = "{:.{}f}".format((((grooveCenter + .05) * -1) / sizeUnits), 4) + 'in'
distanceMP_11B.expression = "{:.{}f}".format(((grooveCenter + .05) / sizeUnits), 4) + 'in'
stemGrooveExt.name = 'Stem Groove'
# Create body with combine
plugBody = plugExt.bodies[0]
bodyCollection = adsk.core.ObjectCollection.create()
bodyCollection.add(plugStraightExt.bodies[0])
bodyCollection.add(hexExt.bodies[0])
bodyCollection.add(stemExt.bodies[0])
model = design.activeComponent
features = model.features
combineFeat = features.combineFeatures
combineInput = combineFeat.createInput(plugBody, bodyCollection)
combineFeatur = combineFeat.add(combineInput)
# Create the chamfer
edgeCol = adsk.core.ObjectCollection.create()
edgeCol.clear()
edges = stemExt.sideFaces.item(0).edges
for edgeI in edges:
edgeCol.add(edgeI)
chamferFeats = newComp.features.chamferFeatures
chamferInput = chamferFeats.createInput(edgeCol, True)
chamferInput.setToEqualDistance(
adsk.core.ValueInput.createByReal((numStemDiam - numHoleThru)/4))
chamferFeats.add(chamferInput)
Brad Bylls