From time to time I have to access geometry field and shuffle through points in it. Process is simple:
- Get shape
- Get it's part
- Iterate through part's points
This is how it looks like in a script
import arcpy fc = r'd:\scratch\line.shp' with arcpy.da.SearchCursor(fc,"Shape@") as cursor: for row in cursor: shp=row part=shp.getPart(0) for p in part: print p.X
However, when I try to do similar thing using field calculator:
def plineM(shp): part=shp.getPart(0) for p in part: return p.X plineM( !Shape! )
I got 999999 error.
To make it work I am forced to a) define the length of an array and b) use getObject() method to access the point:
def plineM(shp): part=shp.getPart(0) n=len(part) for i in xrange(n): p=part.getObject(i) return p.X
Question: why simple array iterator works in script and does not work in field calculator?