I've written some python code a few years ago which creates donuts; you would wire it up to a script interface or you can hard wire the input parameters
'''
Title: Create donut rings around points
Description: Takes as input the distance of the inner and outer ring and creates a donut polygon around it.
Limitations: Tool expects units of point dataset to be in meters.
Created: 19/9/14
'''
import arcpy
import sys
# Set environment settings
arcpy.env.addOutputsToMap=True
arcpy.env.overwriteOutput = True
def main():
try:
# Get parameters
layer = arcpy.GetParameterAsText(0) # Layer
pointID = arcpy.GetParameterAsText(1) # Unique ID field
innerBuff = float(arcpy.GetParameterAsText(2)) # Inner ring distance
outerBuff = float(arcpy.GetParameterAsText(3)) # Outer ring distance
outFC = arcpy.GetParameterAsText(4) # Output FeatureClass
# Check if parameters are sensible
if innerBuff <= 0:
arcpy.AddWarning("The inner buffer must be greater than zero!")
return
if outerBuff < innerBuff:
arcpy.AddWarning("The outer buffer must be larger than in the inner buffer value!")
return
features = []
ids =[]
# Create a cursor over the points and build donuts
arcpy.AddMessage("Creating donuts...")
with arcpy.da.SearchCursor(layer, ['SHAPE@', pointID]) as cursor:
for row in cursor:
geom = arcpy.PointGeometry(row[0].getPart(0))
ID = row [1]
inBuff = geom.buffer(innerBuff)
outBuff = geom.buffer(outerBuff)
donut = outBuff.symmetricDifference(inBuff)
features.append(donut)
ids.append(ID)
# Write data to new FeatureClass
arcpy.AddMessage("Writing features to output dataset...")
arcpy.CopyFeatures_management(features, outFC)
arcpy.MakeTableView_management(outFC,"tv")
arcpy.AddField_management("tv","ID","LONG")
x = 0
with arcpy.da.UpdateCursor("tv",['ID']) as cursor:
for row in cursor:
row[0] = ids[x]
x+=1
cursor.updateRow(row)
# Set output
arcpy.SetParameterAsText(4,outFC)
except Exception as e:
# Report error
arcpy.AddError(str(e))
sys.exit("Failed to Process")
if __name__ == '__main__':
main()
You would wire up the script as below:

When you run this script it would generate output as shown below:
