ESRI add-in: Difference between revisions

From Wildsong
Jump to navigationJump to search
Brian Wilson (talk | contribs)
mNo edit summary
Brian Wilson (talk | contribs)
mNo edit summary
Line 1: Line 1:
An add-in can be used to attach Python to standard controls like buttons or drop down selection lists.
An add-in can be used to attach Python to standard controls in ArcMap like buttons or drop down selection lists.
It can also be used from Data Driven Pages, so that some python runs each time a DDP page is selected.
It can also be used from Data Driven Pages, so that some python runs each time a DDP page is selected.


It consists of a ZIP file with configuration and python code in it, with the extension changed from .zip to .esriaddin.
An add-in consists of a ZIP file with configuration and python code in it, with the extension changed from .zip to .esriaddin.


The easiest way to create one is to use the ESRI wizard to make a new project and then to modify the files to add your code.
The easiest way to create one is to use the ESRI wizard to make a new project and then to modify the files to add your code.
Line 25: Line 25:
   Filemode      Length  Date        Time      File
   Filemode      Length  Date        Time      File
   ----------  --------  -----------  --------  -------------------------------
   ----------  --------  -----------  --------  -------------------------------
   -rw-rw-rw-      1897  23-May-2018  15:22:30  config.xml
   -rw-rw-rw-      1897  23-May-2018  15:22:30  config.xml                           esriaddin config file
   -rw-rw-rw-      694  19-Apr-2018  12:18:14  README.txt
   -rw-rw-rw-      694  19-Apr-2018  12:18:14  README.txt                           documentation
   -rw-rw-rw-      2834  30-Apr-2018  10:27:38  makeaddin.py
   -rw-rw-rw-      2834  30-Apr-2018  10:27:38  makeaddin.py                         script that builds the esriaddin
   -rw-rw-rw-    11951  20-Apr-2018  10:19:58  Images/cc_logo_64x64.png
   -rw-rw-rw-    11951  20-Apr-2018  10:19:58  Images/cc_logo_64x64.png             icon
   -rw-rw-rw-    27711  19-Apr-2018  10:12:54  Images/ormap.png
   -rw-rw-rw-    27711  19-Apr-2018  10:12:54  Images/ormap.png                     icon
   -rw-rw-rw-      4543  23-May-2018  12:24:52  Install/ccmap.py
   -rw-rw-rw-      4543  23-May-2018  12:24:52  Install/ccmap.py                     the actual add-in code
   -rw-rw-rw-      5859  23-May-2018  12:07:48  Install/arc_utilities.py
   -rw-rw-rw-      5859  23-May-2018  12:07:48  Install/arc_utilities.py             glue code to make arcpy easier to use
   -rw-rw-rw-      4293  18-May-2018  12:08:28  Install/cancellations.py
   -rw-rw-rw-      4293  18-May-2018  12:08:28  Install/cancellations.py             manages cancelled taxlot lists
   -rw-rw-rw-      3182  28-Mar-2018  11:36:54  Install/mapnum.py
   -rw-rw-rw-      3182  28-Mar-2018  11:36:54  Install/mapnum.py                     map number handling code
   -rw-rw-rw-      4592  11-May-2018  16:28:44  Install/MXDReport_tool.py
   -rw-rw-rw-      4592  11-May-2018  16:28:44  Install/MXDReport_tool.py             UNUSED in this add-in
   -rw-rw-rw-      3932  29-Mar-2018  11:33:26  Install/mxd_report.py
   -rw-rw-rw-      3932  29-Mar-2018  11:33:26  Install/mxd_report.py                 sample code, not used
   -rw-rw-rw-    10504  3-Apr-2018  16:52:26  Install/ormapnum.py
   -rw-rw-rw-    10504  3-Apr-2018  16:52:26  Install/ormapnum.py                   A class that handles ORMap string conversions
   -rw-rw-rw-      3400  3-Apr-2018  16:03:32  Install/printMaps.py
   -rw-rw-rw-      3400  3-Apr-2018  16:03:32  Install/printMaps.py                 UNUSED in this add-in
   -rw-rw-rw-      7128  21-May-2018  16:30:22  Install/PrintMaps_tool.py
   -rw-rw-rw-      7128  21-May-2018  16:30:22  Install/PrintMaps_tool.py             UNUSED in this add-in
   -rw-rw-rw-    13514  18-May-2018  12:37:22  Install/zoomToMapNumber.py
   -rw-rw-rw-    13514  18-May-2018  12:37:22  Install/zoomToMapNumber.py           The update_page_layout code is here
   -rw-rw-rw-      4336  21-May-2018  16:30:22  Install/ZoomToMapNumber_tool.py
   -rw-rw-rw-      4336  21-May-2018  16:30:22  Install/ZoomToMapNumber_tool.py       UNUSED in this add-in
   -rw-rw-rw-      186  12-Apr-2018  16:40:12  Install/__init__.py
   -rw-rw-rw-      186  12-Apr-2018  16:40:12  Install/__init__.py                   module init
   -rw-rw-rw-      2547  25-Apr-2018  16:49:52  Install/ORMAP_config.py
   -rw-rw-rw-      2547  25-Apr-2018  16:49:52  Install/ORMAP_config.py               defines some things like database names and folder names
   ----------  --------  -----------  --------  -------------------------------
   ----------  --------  -----------  --------  -------------------------------
                 113103                        18 files
                 113103                        18 files

Revision as of 18:23, 1 October 2018

An add-in can be used to attach Python to standard controls in ArcMap like buttons or drop down selection lists. It can also be used from Data Driven Pages, so that some python runs each time a DDP page is selected.

An add-in consists of a ZIP file with configuration and python code in it, with the extension changed from .zip to .esriaddin.

The easiest way to create one is to use the ESRI wizard to make a new project and then to modify the files to add your code.

Create an add-in

First create the template using the ESRI Python Add-In Wizard.

Add your code. (Just like that no additional help needed. :-)

This will give you a makeaddin.py script that you can run to build the .esriaddin file.

I use Visual Studio set to run makeaddin.py when I do an F5 to run the project.

I have ArcMap set to search my source directory on startup. (See Data Driven Pages for help.) Then I only need to reload ArcMap to test new versions.

What's in an esriaddin file?

I opened my DDP extension in emacs. It looks like this:

 Filemode      Length  Date         Time      File
 ----------  --------  -----------  --------  -------------------------------
 -rw-rw-rw-      1897  23-May-2018  15:22:30  config.xml                            esriaddin config file
 -rw-rw-rw-       694  19-Apr-2018  12:18:14  README.txt                            documentation
 -rw-rw-rw-      2834  30-Apr-2018  10:27:38  makeaddin.py                          script that builds the esriaddin
 -rw-rw-rw-     11951  20-Apr-2018  10:19:58  Images/cc_logo_64x64.png              icon
 -rw-rw-rw-     27711  19-Apr-2018  10:12:54  Images/ormap.png                      icon
 -rw-rw-rw-      4543  23-May-2018  12:24:52  Install/ccmap.py                      the actual add-in code
 -rw-rw-rw-      5859  23-May-2018  12:07:48  Install/arc_utilities.py              glue code to make arcpy easier to use
 -rw-rw-rw-      4293  18-May-2018  12:08:28  Install/cancellations.py              manages cancelled taxlot lists
 -rw-rw-rw-      3182  28-Mar-2018  11:36:54  Install/mapnum.py                     map number handling code
 -rw-rw-rw-      4592  11-May-2018  16:28:44  Install/MXDReport_tool.py             UNUSED in this add-in
 -rw-rw-rw-      3932  29-Mar-2018  11:33:26  Install/mxd_report.py                 sample code, not used
 -rw-rw-rw-     10504   3-Apr-2018  16:52:26  Install/ormapnum.py                   A class that handles ORMap string conversions
 -rw-rw-rw-      3400   3-Apr-2018  16:03:32  Install/printMaps.py                  UNUSED in this add-in
 -rw-rw-rw-      7128  21-May-2018  16:30:22  Install/PrintMaps_tool.py             UNUSED in this add-in
 -rw-rw-rw-     13514  18-May-2018  12:37:22  Install/zoomToMapNumber.py            The update_page_layout code is here
 -rw-rw-rw-      4336  21-May-2018  16:30:22  Install/ZoomToMapNumber_tool.py       UNUSED in this add-in
 -rw-rw-rw-       186  12-Apr-2018  16:40:12  Install/__init__.py                   module init
 -rw-rw-rw-      2547  25-Apr-2018  16:49:52  Install/ORMAP_config.py               defines some things like database names and folder names
 ----------  --------  -----------  --------  -------------------------------
               113103                         18 files

If you look in my source code you will see ONLY ccmap.py in the Install/ folder. I tweaked the makeaddin.py script to copy all the other files in there, so that I can share most of the code with other projects. There is probably a good way to do this directly in Visual Studio too.