<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: set legend position based on data driven pages in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/set-legend-position-based-on-data-driven-pages/m-p/453571#M35605</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hey Darren,&lt;/P&gt;&lt;P&gt;thanks for your answer. With your help I could make a arcgis extension add-in. Using the Python Add-In Wizard. And it works as I want (&lt;SPAN style="color: #e23d39;"&gt;&lt;STRONG&gt;UPDATE: It does not. Working code below&lt;/STRONG&gt;&lt;/SPAN&gt;). In the index layer there is an attribute field which controls the position of the legend. (1 = lower left, 2= upper left, 3= upper right, 4 = lower right).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The position is hardcoded to fit my layout.&lt;/P&gt;&lt;P&gt;Here the code I use (don't know how to enable the code tag you are using &lt;IMG src="https://community.esri.com/legacyfs/online/emoticons/sad.png" /&gt; )&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;import arcpy&lt;/P&gt;&lt;P&gt;import pythonaddins&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;class ExtensionClass1(object):&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; """Implementation for MovableLegend_addin.extension2 (Extension)"""&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; def __init__(self):&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # For performance considerations, please remove all unused methods in this class.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.enabled = True&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; def pageIndexExtentChanged(self, new_id):&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxd = arcpy.mapping.MapDocument("CURRENT")&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; legend = arcpy.mapping.ListLayoutElements(mxd,"LEGEND_ELEMENT")[0]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if mxd.dataDrivenPages.pageRow.LegendPOS == 1:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; posX = 2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; posY = 3.1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif mxd.dataDrivenPages.pageRow.LegendPOS == 2:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; posX = 2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; posY = 24.6 - legend.elementHeight&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif mxd.dataDrivenPages.pageRow.LegendPOS == 3:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; posX = 19 - legend.elementWidth&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; posY = 24.6 - legend.elementHeight&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif mxd.dataDrivenPages.pageRow.LegendPOS == 4:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; posX = 19 - legend.elementWidth&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; posY = 3.1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; legend.elementPositionY = posY&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; legend.elementPositionX = posX&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So thanks for your help.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;One last question. The addin produces no error if I open an arcgis project with a Data Driven Page Index Layer without the attribute LegendPOS. In this case it does simply nothing. This is good, but is this normal? Do I have to implement an error behavior for doing it right?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 09 Dec 2015 09:05:00 GMT</pubDate>
    <dc:creator>PSArcOnlinePSArcOnline</dc:creator>
    <dc:date>2015-12-09T09:05:00Z</dc:date>
    <item>
      <title>set legend position based on data driven pages</title>
      <link>https://community.esri.com/t5/python-questions/set-legend-position-based-on-data-driven-pages/m-p/453569#M35603</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I want to set the position of my legend based on values of a "Data Driven Pages" attribute. Yet I don't have any code. This is just collection of what I think I need.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I had to read the value from the Data Driven Page attribute field.&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&lt;SPAN class="pln"&gt;posY &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; tempMap&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;.&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;dataDrivenPages&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;.&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;pageRow&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;.&lt;/SPAN&gt;posY&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&lt;SPAN class="pln"&gt;posX &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; tempMap&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;.&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;dataDrivenPages&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;.&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;pageRow&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;.&lt;/SPAN&gt;posX&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And change the values of the legend objekt.&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&lt;SPAN class="n"&gt;mylegend.elementPositionY = posY&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="n"&gt;&lt;CODE&gt;&lt;SPAN class="n"&gt;mylegend.elementPositionX = posX&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The script should trigger by changing the Data Driven Page. This should also work then I print all pages.&lt;/P&gt;&lt;P&gt;&lt;SPAN class="n"&gt;&lt;CODE&gt;&lt;SPAN class="n"&gt;def pageIndexExtentChanged(seld, new_id)&lt;BR /&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Problem: I had to change the anchor position to set the correct X/Y values (height and width of the legend is dynamic and may change). How can I achieve this (see picture)?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 08 Dec 2015 15:29:47 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/set-legend-position-based-on-data-driven-pages/m-p/453569#M35603</guid>
      <dc:creator>PSArcOnlinePSArcOnline</dc:creator>
      <dc:date>2015-12-08T15:29:47Z</dc:date>
    </item>
    <item>
      <title>Re: set legend position based on data driven pages</title>
      <link>https://community.esri.com/t5/python-questions/set-legend-position-based-on-data-driven-pages/m-p/453570#M35604</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You can keep track of this by either adding or subtracting the elementWidth from elementPositionX, or elementHeight and elementPositionY.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For example, if your legend is set to anchor to the top left, then to trick it into anchoring in terms of the top right would be:&lt;/P&gt;&lt;PRE __default_attr="python" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_14496013720998889 jive_text_macro" data-renderedposition="71_8_912_16" jivemacro_uid="_14496013720998889" modifiedtitle="true"&gt;&lt;SPAN style="font-family: monospace;"&gt;mylegend.elementPositionY = posY - myLegend.elementWidth # add some amount to move the legend&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 08 Dec 2015 19:04:52 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/set-legend-position-based-on-data-driven-pages/m-p/453570#M35604</guid>
      <dc:creator>DarrenWiens2</dc:creator>
      <dc:date>2015-12-08T19:04:52Z</dc:date>
    </item>
    <item>
      <title>Re: set legend position based on data driven pages</title>
      <link>https://community.esri.com/t5/python-questions/set-legend-position-based-on-data-driven-pages/m-p/453571#M35605</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hey Darren,&lt;/P&gt;&lt;P&gt;thanks for your answer. With your help I could make a arcgis extension add-in. Using the Python Add-In Wizard. And it works as I want (&lt;SPAN style="color: #e23d39;"&gt;&lt;STRONG&gt;UPDATE: It does not. Working code below&lt;/STRONG&gt;&lt;/SPAN&gt;). In the index layer there is an attribute field which controls the position of the legend. (1 = lower left, 2= upper left, 3= upper right, 4 = lower right).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The position is hardcoded to fit my layout.&lt;/P&gt;&lt;P&gt;Here the code I use (don't know how to enable the code tag you are using &lt;IMG src="https://community.esri.com/legacyfs/online/emoticons/sad.png" /&gt; )&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;import arcpy&lt;/P&gt;&lt;P&gt;import pythonaddins&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;class ExtensionClass1(object):&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; """Implementation for MovableLegend_addin.extension2 (Extension)"""&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; def __init__(self):&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # For performance considerations, please remove all unused methods in this class.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.enabled = True&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; def pageIndexExtentChanged(self, new_id):&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxd = arcpy.mapping.MapDocument("CURRENT")&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; legend = arcpy.mapping.ListLayoutElements(mxd,"LEGEND_ELEMENT")[0]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if mxd.dataDrivenPages.pageRow.LegendPOS == 1:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; posX = 2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; posY = 3.1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif mxd.dataDrivenPages.pageRow.LegendPOS == 2:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; posX = 2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; posY = 24.6 - legend.elementHeight&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif mxd.dataDrivenPages.pageRow.LegendPOS == 3:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; posX = 19 - legend.elementWidth&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; posY = 24.6 - legend.elementHeight&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif mxd.dataDrivenPages.pageRow.LegendPOS == 4:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; posX = 19 - legend.elementWidth&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; posY = 3.1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; legend.elementPositionY = posY&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; legend.elementPositionX = posX&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So thanks for your help.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;One last question. The addin produces no error if I open an arcgis project with a Data Driven Page Index Layer without the attribute LegendPOS. In this case it does simply nothing. This is good, but is this normal? Do I have to implement an error behavior for doing it right?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 09 Dec 2015 09:05:00 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/set-legend-position-based-on-data-driven-pages/m-p/453571#M35605</guid>
      <dc:creator>PSArcOnlinePSArcOnline</dc:creator>
      <dc:date>2015-12-09T09:05:00Z</dc:date>
    </item>
    <item>
      <title>Re: set legend position based on data driven pages</title>
      <link>https://community.esri.com/t5/python-questions/set-legend-position-based-on-data-driven-pages/m-p/453572#M35606</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Unfortunately, it doesn't work correctly.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The value of the size of the legend is not changing. It is always those of the original legend.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Longer layer names (legend.elementWidth)&lt;/P&gt;&lt;P&gt;More layers (legend.elementHeight)&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 09 Dec 2015 09:32:37 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/set-legend-position-based-on-data-driven-pages/m-p/453572#M35606</guid>
      <dc:creator>PSArcOnlinePSArcOnline</dc:creator>
      <dc:date>2015-12-09T09:32:37Z</dc:date>
    </item>
    <item>
      <title>Re: set legend position based on data driven pages</title>
      <link>https://community.esri.com/t5/python-questions/set-legend-position-based-on-data-driven-pages/m-p/453573#M35607</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I added a view Pictures.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Test 1 and 2 works.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If I change the layer names to the same lenght it works. Test 3 and 4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But If the names are Different it doesn't use the new width. TestERROR1 and TestERROR2&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 09 Dec 2015 09:46:07 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/set-legend-position-based-on-data-driven-pages/m-p/453573#M35607</guid>
      <dc:creator>PSArcOnlinePSArcOnline</dc:creator>
      <dc:date>2015-12-09T09:46:07Z</dc:date>
    </item>
    <item>
      <title>Re: set legend position based on data driven pages</title>
      <link>https://community.esri.com/t5/python-questions/set-legend-position-based-on-data-driven-pages/m-p/453574#M35608</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;If I use the python console step by step, it works.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 09 Dec 2015 10:08:55 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/set-legend-position-based-on-data-driven-pages/m-p/453574#M35608</guid>
      <dc:creator>PSArcOnlinePSArcOnline</dc:creator>
      <dc:date>2015-12-09T10:08:55Z</dc:date>
    </item>
    <item>
      <title>Re: set legend position based on data driven pages</title>
      <link>https://community.esri.com/t5/python-questions/set-legend-position-based-on-data-driven-pages/m-p/453575#M35609</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN class="short_text" lang="en"&gt;&lt;SPAN class="hps"&gt;Now it works&lt;/SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="short_text" lang="en"&gt;I implemented a arcpy.RefreshActiveView() for forcing the correct width and height values. Otherwise the actual drawing of the legend comes too late.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="short_text" lang="en"&gt;So my final question remains:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="short_text" lang="en"&gt;The addin produces no error if I open an arcgis project with a Data Driven Page Index Layer without the attribute LegendPOS. In this case it does simply nothing. This is good, but is this normal? Do I have to implement an error behavior for doing it right?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="short_text" lang="en"&gt;Here the code&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;def pageIndexExtentChanged(self, new_id):&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;mxd = arcpy.mapping.MapDocument("CURRENT")&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;#Only one legend in layout&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;legend = arcpy.mapping.ListLayoutElements(mxd,"LEGEND_ELEMENT")[0]&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;#The heigt and width must be up to date&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;arcpy.RefreshActiveView()&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;#LegendPOS is a attribut field in the index layer (small integer)&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;#1 = lower left, 2= upper left, 3= upper right, 4 = lower right&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;#posX and posY hardcoded for this special layout&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;if mxd.dataDrivenPages.pageRow.LegendPOS == 1:&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; posX = 2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; posY = 3.1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;elif mxd.dataDrivenPages.pageRow.LegendPOS == 2:&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; posX = 2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; posY = 24.6 - legend.elementHeight&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;elif mxd.dataDrivenPages.pageRow.LegendPOS == 3:&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; posX = 19 - legend.elementWidth&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; posY = 24.6 - legend.elementHeight&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;elif mxd.dataDrivenPages.pageRow.LegendPOS == 4:&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; posX = 19 - legend.elementWidth&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; posY = 3.1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;legend.elementPositionY = posY&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;legend.elementPositionX = posX&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;

&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 20:13:39 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/set-legend-position-based-on-data-driven-pages/m-p/453575#M35609</guid>
      <dc:creator>PSArcOnlinePSArcOnline</dc:creator>
      <dc:date>2021-12-11T20:13:39Z</dc:date>
    </item>
  </channel>
</rss>

