What I'm trying to do is take an input feature class, take one of it's columns (as selected by the user) and "copy" it into a new column with a specific schema (string, 20ch length), add various columns, populate them with values entered in the tool GUI, and then append the resulting table to an existing table.I've gotten everything working except the passing of the field list from the input feature class to the field selection tool.I suspect that this is something I should be doing in the validation script. But I also need to know that my various parameters are correct, and I need to be able to pass the value to my script properly... (field selection value that is)This is the validation script:class ToolValidator:
"""Class for validating a tool's parameter values and controlling
the behavior of the tool's dialog."""
def __init__(self):
"""Setup arcpy and the list of tool parameters."""
#import arcpy
#self.params = arcpy.GetParameterInfo()
def initializeParameters(self):
"""Refine the properties of a tool's parameters. This method is
called when the tool is opened."""
#self.params[8].parameterDependencies = [0]
return
def updateParameters(self):
"""Modify the values and properties of parameters before internal
validation is performed. This method is called whenever a parmater
has been changed."""
import arcpy
#if self.params[0].value:
# FC = self.params[0].value
# SourceIdent = arcpy.Describe(FC).fields
# self.params[8].value = SourceIdent
return
def updateMessages(self):
"""Modify the messages created by internal validation for each tool
parameter. This method is called after internal validation."""
return
This is my script code, I'm specifically looking to pass the name of the selected field from [8] to the parameter "SourceIdentity" so that I can convert the value to a string and populate the new field SourceID with the value:## SLE Script - Authored by Cameron Wallace
## Rev 0.0 - Spring 2011
##This script is intended to; convert the feature class to a table
##strip the fields from an incoming feature class, add fields to a
##specific schema, populate those fields with input values, and two
##values from the incoming feature class. It is intended as part of
##a larger workflow.
##The final step is appending this table to an existing table that
##defines part of a related set of feature classes.
import arcpy
mxd = arcpy.mapping.MapDocument("CURRENT")
# Script arguments
SLE_Parcels_selection = arcpy.GetParameterAsText(0)
if SLE_Parcels_selection == '#' or not SLE_Parcels_selection:
SLE_Parcels_selection = "SLE_Parcels selection" # provide a default value if unspecified
ClassI = arcpy.GetParameterAsText(1)
if ClassI == '#' or not ClassI:
ClassI = "\"A\"" # provide a default value if unspecified
ClassII = arcpy.GetParameterAsText(2)
if ClassII == '#' or not ClassII:
ClassII = "0" # provide a default value if unspecified
ClassIII = arcpy.GetParameterAsText(3)
if ClassIII == '#' or not ClassIII:
ClassIII = "\"a\"" # provide a default value if unspecified
SourceShortName = arcpy.GetParameterAsText(4)
if SourceShortName == '#' or not SourceShortName:
SourceShortName = "\"SHORT\"" # provide a default value if unspecified
Date1 = arcpy.GetParameterAsText(5)
if Date1 == '#' or not Date1:
Date1 = "time.strftime('15/03/2011')" # provide a default value if unspecified
Date2 = arcpy.GetParameterAsText(6)
if Date2 == '#' or not Date2:
Date2 = "time.strftime('15/03/2011')" # provide a default value if unspecified
Description = arcpy.GetParameterAsText(7)
if Description == '#' or not Description:
Description = "\"Sample Description\"" # provide a default value if unspecified
Activity_SLE_Parcels_Relate = "C:\\Current Projects\\Other Projects\\5062xx\\506287\\GIS\\ToLContamInventory.gdb\\Activity_SLE_Parcels_Relate"
TEMPTable = "C:\\Current Projects\\Other Projects\\5062xx\\506287\\GIS\\ToLContamInventory.gdb\\TEMPTable"
# Process: Copy Rows
arcpy.CopyRows_management(SLE_Parcels_selection, TEMPTable, "")
# Process: Delete Field
arcpy.DeleteField_management(TEMPTable, "FOLIO;LEGAL_TYPE;ATTRIB_VALUE;VALUE_DESC;ParcelKey;Shape_Length;Shape_Area")
SourceIdentity = arcpy.GetParameterAsText(8)
# Process: Add Field
arcpy.AddField_management(TEMPTable, "Activity_Class_I", "TEXT", "", "", "3", "", "NULLABLE", "NON_REQUIRED", "")
arcpy.AddField_management(TEMPTable, "Activity_Class_II", "LONG", "", "", "", "", "NULLABLE", "NON_REQUIRED", "")
arcpy.AddField_management(TEMPTable, "Activity_Class_III", "TEXT", "", "", "3", "", "NULLABLE", "NON_REQUIRED", "")
arcpy.AddField_management(TEMPTable, "SourceShortName", "TEXT", "", "", "15", "", "NULLABLE", "NON_REQUIRED", "")
arcpy.AddField_management(TEMPTable, "Date1", "DATE", "", "", "", "", "NULLABLE", "NON_REQUIRED", "")
arcpy.AddField_management(TEMPTable, "Date2", "DATE", "", "", "", "", "NULLABLE", "NON_REQUIRED", "")
arcpy.AddField_management(TEMPTable, "Description", "TEXT", "", "", "250", "", "NULLABLE", "NON_REQUIRED", "")
arcpy.AddField_management(TEMPTable, "SourceID", "TEXT", "", "", "20", "", "NULLABLE", "NON_REQUIRED", "")
rows = arcpy.UpdateCursor(TEMPTable)
for row in rows:
row.Activity_Class_I = ClassI
row.Activity_Class_II = ClassII
row.Activity_Class_III = ClassIII
row.SourceShortName = SourceShortName
row.Date1 = Date1
row.Date2 = Date2
row.Description = Description
row.SourceID = str(SourceIdentity)
rows.updateRow(row)
del row
del rows
# Process: Append
arcpy.Append_management(TEMPTable, Activity_SLE_Parcels_Relate, "NO_TEST", "", "")
arcpy.Delete_management (TEMPTable)
Any help or suggestions greatly welcomed!Thanks