import arcpy

input_db = arcpy.GetParameterAsText(0)

array = arcpy.Array();
arcpy.AddMessage(input_db)
arcpy.AddField_management(input_db, "Az_l", "String", 20)

rows = arcpy.da.UpdateCursor(input_db,("SHAPE@", "Az_l"))

for shp,az_l in rows:
	n=shp.partCount;
	minll1 = 99999999999999999999;
        for i in range(0,n):
            lastPart = None
            part = shp.getPart(i)

            for pnt in part:

                if not pnt:
                   lastPart = None
                   continue

          	x = pnt.X
                y = pnt.Y

                if not lastPart:
                   lastPart = (x, y)
                   continue

                lastPoint = arcpy.Point (lastPart [0], lastPart [1])

                thisPoint = arcpy.Point (x, y)
           	       
                array.add (lastPoint)
                array.add (thisPoint)
                
		polyline = arcpy.Polyline (array)

                array.removeAll ()

                lastPart = (x, y)
               
                minl = polyline.distanceTo(shp.centroid)
		#arcpy.AddMessage("____minl_______ = " + str(minl)+"\n")
                if minl<minll1  :
                    minll1 = minl
		    polyline1 = polyline;

#______Поиск наименьшего расстояние между центроидом и паралельной прямой найденом в 1 цикле
	minll2 = 99999999999999;
        for i in range(0,n):
            lastPart = None
            part = shp.getPart(i)

            for pnt in part:

                if not pnt:
                   lastPart = None
                   continue

                x = pnt.X
                y = pnt.Y

                if not lastPart:
                   lastPart = (x, y)
                   continue

                lastPoint = arcpy.Point (lastPart [0], lastPart [1])

                thisPoint = arcpy.Point (x, y)
           	       
                array.add (lastPoint)
                array.add (thisPoint)
                
		polyline = arcpy.Polyline (array)

                array.removeAll ()

                lastPart = (x, y)
		
		if not polyline.touches(polyline1) and not polyline.equals(polyline1):

                	minl = polyline.distanceTo(shp.centroid)
		
                	if minl < minll2:
                           minll2 = minl
        
        row = (shp, "к" + str(int(round(minll1 + minll2,0))))
        rows.updateRow(row)

del rows;

