import arcpy
try:
arcpy.env.workspace = "in_memory"
# Get parameters
Input_Features = arcpy.GetParameterAsText(0)
Buffers = arcpy.CreateUniqueName("Buffer")
# Perform buffer
arcpy.Buffer_analysis(Input_Features, Buffers,
"100 Feet", "FULL", "ROUND", "NONE", "")
OutFeatureSet = arcpy.FeatureSet()
OutFeatureSet.load(Buffers)
arcpy.SetParameter(1, OutFeatureSet)
except Exception, ErrorDesc:
sErr = "ERROR:\n" + str(ErrorDesc)
arcpy.AddError(sErr)
import arcpy
import os
class Toolbox(object):
def __init__(self):
self.label = "Runtime Tools"
self.alias = ""
# List of tool classes associated with this toolbox
self.tools = [BufferTest]
class BufferTest(object):
def __init__(self):
self.label = "Buffer Test"
self.description = "Create buffers"
self.canRunInBackground = False
def getParameterInfo(self):
params = []
param0 = arcpy.Parameter(
displayName = "Input Features",
name = "inputFeatures",
datatype = "Feature Set",
parameterType = "Required",
direction = "Input")
param0.value = os.path.join(os.path.dirname(__file__),
"FC_Templates.gdb\PointTemplate")
params.append(param0)
param1 = arcpy.Parameter(
displayName = "Buffers",
name = "buffers",
datatype = "Feature Set",
parameterType = "Derived",
direction = "Output")
params.append(param1)
return params
def execute(self, parameters, messages):
try:
arcpy.env.workspace = "in_memory"
# Get parameters
Input_Features = parameters[0].valueAsText
Buffers = arcpy.CreateUniqueName("Buffer")
# Perform buffer
arcpy.Buffer_analysis(Input_Features, Buffers,
"100 Feet", "FULL", "ROUND", "NONE", "")
OutFeatureSet = arcpy.FeatureSet()
OutFeatureSet.load(Buffers)
# parameters[1] = OutFeatureSet
arcpy.SetParameter(1, OutFeatureSet)
except Exception, ErrorDesc:
sErr = "ERROR:\n" + str(ErrorDesc)
messages.addErrorMessage(sErr)
return
def execute(self, parameters, messages):
try:
arcpy.env.workspace = "in_memory"
# Get parameters
Input_Features = parameters[0].valueAsText
Buffers = arcpy.CreateUniqueName("Buffer")
# Perform buffer
arcpy.Buffer_analysis(Input_Features, Buffers,
"100 Feet", "FULL", "ROUND", "NONE", "")
# OutFeatureSet = arcpy.FeatureSet()
# OutFeatureSet.load(Buffers)
parameters[1].value = Buffers
except Exception, ErrorDesc:
sErr = "ERROR:\n" + str(ErrorDesc)
messages.addErrorMessage(sErr)
return
import arcpy
import os
class Toolbox(object):
def __init__(self):
self.label = "Runtime Tools"
self.alias = ""
# List of tool classes associated with this toolbox
self.tools = [BufferTest]
class BufferTest(object):
def __init__(self):
self.label = "Buffer Test"
self.description = "Create buffers"
self.canRunInBackground = False
def getParameterInfo(self):
params = []
param0 = arcpy.Parameter(
displayName = "Input Features",
name = "inputFeatures",
datatype = "Feature Set",
parameterType = "Required",
direction = "Input")
param0.value = r'E:\gis\default.gdb\point'
params.append(param0)
param1 = arcpy.Parameter(
displayName = "Buffer Distance",
name = "distance",
datatype = "Long",
parameterType = "Required",
direction = "Input")
params.append(param1)
param2 = arcpy.Parameter(
displayName = "Buffers",
name = "buffers",
datatype = "Feature Set",
parameterType = "Derived",
direction = "Output")
params.append(param2)
return params
def execute(self, parameters, messages):
try:
arcpy.env.workspace = r'E:\gis\default.gdb'
Input_Features = parameters[0].valueAsText
Buffers = arcpy.CreateUniqueName("Buffer")
Distance = parameters[1].valueAsText
arcpy.Buffer_analysis(Input_Features, Buffers,
Distance, "FULL", "ROUND", "NONE", "")
parameters[2].value = Buffers
except Exception, ErrorDesc:
sErr = "ERROR:\n" + str(ErrorDesc)
messages.addErrorMessage(sErr)
return
Mark, I'm not sure, but I think I was having the same problem as you. Defining the output parameter datatype as GPFeatureRecordSetLayer and using SetParameterAsText (I fully tested that function, but with minimal testing, looks like SetParameter also works for me). I'm using 10.2.1.
A basic test case is here:
arcpy - Returning feature class from Python toolbox - Geographic Information Systems Stack Exchange
Hope that stops others from giving up as I almost had.