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 as ARC self.arcpy = ARC self.paramsIndex = {'networkDataset':0, 'impedance': 1} self.params = arcpy.GetParameterInfo() #Get the parameter objects that will be modified self.networkParam = self.params[self.paramsIndex['networkDataset']] self.impedanceParam = self.params[self.paramsIndex['impedance']] def initializeParameters(self): """Refine the properties of a tool's parameters. This method is called when the tool is opened.""" 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.""" if self.networkParam.altered: if self.networkParam.value and not self.networkParam.hasBeenValidated: #Check if the NDS exits try: self.getNetworkProps(self.networkParam.value) except: self.resetNetworkProps() return else: self.resetNetworkProps() return def updateMessages(self): """Modify the messages created by internal validation for each tool parameter. This method is called after internal validation.""" return def getNetworkProps(self,network): '''Update the parameter values based on th network dataset''' desc = self.arcpy.Describe(network) defaultCostAttr = "" costAttributes = [] count = 0 #Build a list of cost attributes and get the default cost attribute attributes = desc.attributes for attribute in attributes: usageType = attribute.usageType name = attribute.name useByDefault = attribute.useByDefault if usageType == "Cost": #Check if the cost attribute has to be used by default. if useByDefault: defaultCostAttr = name costAttributes.append(name) #Set the lists for cost attribute self.impedanceParam.filter.list = costAttributes #Set the default value for the cost attribute if not self.impedanceParam.altered: if defaultCostAttr == "" and costAttributes: #if there is no default use the first one in the list defaultCostAttr = costAttributes[0] self.impedanceParam.value = defaultCostAttr return def resetNetworkProps(self): """Resets the network dataset derived parameters to nothing""" self.impedanceParam.filter.list = [] self.impedanceParam.value = "" return
Aangemelde leden kunnen berichten plaatsen, updates volgen en meer. Nieuw hier? Registreer een gratis account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.