I have a python script that will position the scale bar, north arrow, title, and legend on a map layout in ArcGIS Pro. This script also references a bookmark and then exports the layout to a PDF. I need to turn this script into a script tool so that it can be used in ModelBuilder, but I have no idea where to start.

Here is the python script I need to convert to a script tool in ArcGIS Pro.

# input name of layout

    p = arcpy.mp.ArcGISProject("CURRENT")
    lyt = p.listLayouts("Test")[0]

# Reposition the scale bar

    scaleBar = lyt.listElements("MAPSURROUND_ELEMENT", "Scale Bar")[0]
    mf = scaleBar.mapFrame
    scaleBar.elementPositionX = mf.elementPositionX + 0.0
    scaleBar.elementPositionY = mf.elementPositionY - 0.5

# Reposition the north arrow

    northArrow = lyt.listElements("MAPSURROUND_ELEMENT", "North Arrow")[0]
    mf = northArrow.mapFrame
    northArrow.elementPositionX = mf.elementPositionX + 8.8
    northArrow.elementPositionY = mf.elementPositionY + 0.7

# Align the title with the center of the map frame

    title = lyt.listElements("TEXT_ELEMENT","Name of Map Text")[0]
    mf = lyt.listElements('MAPFRAME_ELEMENT',"Map Frame")[0]
    title.elementPositionX = mf.elementPositionX + (mf.elementWidth / 3.7)
    title.elementPositionY = mf.elementPositionY + (mf.elementHeight / 0.98)

# Reposition the Legend and fix legend title

    legend = lyt.listElements("LEGEND_ELEMENT", "Legend")[0]
    legend.title = "Legend"
    legend.elementPositionX = mf.elementPositionX + 7.7
    legend.elementPositionY = mf.elementPositionY + 7.15

# setting layout to bookmark

    aprx = arcpy.mp.ArcGISProject("Current")

# add name of layout

    lyt = aprx.listLayouts("Test")[0]
    mf = lyt.listElements("MAPFRAME_ELEMENT")[0]

# add name of bookmark and export as PDF

    bkmks = mf.map.listBookmarks("Castro_Py")
    for bkmk in bkmks:
    lyt.exportToPDF(r"C:\arcGIS_Shared\Exports" + "\\" + bkmk.name + ".pdf")

Create a script tool is the documentation for creating script tools. You need to create a new toolbox, then add your script and configure the parameters as desired.

Note that if you want to reuse this script for other projects, then you need to make the variables dynamic. use these inputs in the tool parameters pane when creating the tool.

  • Thanks for the resources. Just to clarify. If I don't want to reuse the script for future projects, I could just leave it as it is now??? Or do I still need the GetParameterAsText? – Matt A. Nov 20 '17 at 17:26
  • if its for one time use and the file paths are not changing then you dont need to prompt the user for an input – NULL.Dude Nov 20 '17 at 17:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.