AnsweredAssumed Answered

ArcGIS Help ListBookmarks example 3 not working

Question asked by starry on Mar 19, 2014
Latest reply on Jun 2, 2014 by iamurray
Please refer to the ArcGIS Help document for the ListBookmarks (arcpy.mapping) function, example 3.  Example 3 shows code that is supposed to convert each bookmark in a map document to a feature.

I cannot get this code to output polygons of bookmark extents in a mxd. I set the output feature class.  I created a template feature class with a "Name" attribute (text, 50) with the same spatial reference as the dataframe of the mxd that contains the bookmarks. The code runs without error and creates the output feature class, however, it does not contain any records.

Does anyone have any ideas on how to get this code to work? I'm using ArcGIS 10.2.1.

import arcpy, os  # The map with the bookmarks mxd = arcpy.mapping.MapDocument(r"C:\Project\Counties.mxd")  # The output feature class to be created - # This feature class will store the bookmarks as features outFC = r'C:\Project\Counties.gdb\Bookmarks'  # A template feature class that contains the attribute schema # Including a "Name" field to store the bookmark name template = r'C:\Project\Counties.gdb\Template'  if arcpy.Exists(outFC):     arcpy.Delete_management(outFC) arcpy.CreateFeatureclass_management(os.path.dirname(outFC),                                     os.path.basename(outFC),                                      "POLYGON", template,                                      spatial_reference=template)  cur = arcpy.da.InsertCursor(outFC, ["SHAPE@", "Name"]) array = arcpy.Array() for bkmk in arcpy.mapping.ListBookmarks(mxd):     array.add(arcpy.Point(bkmk.extent.XMin, bkmk.extent.YMin))     array.add(arcpy.Point(bkmk.extent.XMin, bkmk.extent.YMax))     array.add(arcpy.Point(bkmk.extent.XMax, bkmk.extent.YMax))     array.add(arcpy.Point(bkmk.extent.XMax, bkmk.extent.YMin))     # To close the polygon, add the first point again     array.add(arcpy.Point(bkmk.extent.XMin, bkmk.extent.YMin))     cur.insertRow([arcpy.Polygon(array),])     array.removeAll()