I am attempting to use this code in a tool that I am working on:
mxd = arcpy.mapping.MapDocument("CURRENT") df = arcpy.mapping.ListDataFrames(mxd) XMIN = df.extent.XMin YMIN = df.extent.YMin XMAX = df.extent.XMax YMAX = df.extent.YMax
I then go on to do other calculations with the extent. The code works perfectly in the Python window, but because Toolbox tools are run in separate processes I am unable to use "CURRENT".
I think I could probably add a derived input variable and pass the coordinates through the validation script, but that doesn't work for what I am doing. I need to be able to do this later on in the script and add an additional temporary feature to the current map:
points = arcpy.CreateFeatureclass_management("in_memory", "NewFeature", "POINT") arcpy.AddField_management(points, "NewField", "TEXT", "", "", 20)
I know all of my code works right, because I can paste the entire .py into the
Python window and then call
Main() and run through it, but I need to share it with others in an easier way.
I would prefer the solution be compatible with 10.0 and 10.1 if at all possible, because some of the people I work with do not have 10.1 yet. I will accept a 10.1 only solution if I have to though.
What options do I have to do this?
UPDATE: I still can not get this to work, they have not gotten me Python Add-In Wizard yet so I am unable to test that approach. I have again tried the "Run in process" box checked and unchecked. Neither are working.
Checked gives me this:
RuntimeError: CreateObject cannot open map document
Unchecked gives me this:
ERROR 000714: Error in script ExtentQuery
Handled that exception:
Object: CreateObject cannot open map document
From my testing looks like it is having the same error running in process or not.
Apparently if you make a tool with no inputs it has really weird errors like this. As soon as I added an input variable I was able to make the script work as it was supposed to with "In Process" checked. I will still be attempting to do this within the Add-In Wizard, when the finally give me it. Hopefully this afternoon. Thanks for the input and sorry for the confusion on this.
The winning answer is I wasn't running it in the foreground.