POST
|
Hi Adam, My question is: if you want "the number of species found for that route and time year" -- why would you have the user select a species? Wouldn't you just have them select a route and year, and then count the number of species? Or do you actually want to calculate the count of individuals of a particular species? Is there a fourth field for that in the table? -Jeff
... View more
12-16-2010
09:11 AM
|
0
|
0
|
437
|
POST
|
Ok, my problem is resolved (although I believe the original poster's problem still exists). After combing over the various config files in Visual Studio, I noticed in Config.esriaddinx that for each button the class name was not the same as my actual button class names. How they got out of sync I am not sure... and I certainly should have found that sooner. But it explains the behavior. Sorry for confusing this issue further. (edit: 12/15) I now know what happened, and it was completely my fault, not the Add-In wizard or Visual Studio. I located my notes from a few weeks back: I had used refactoring to change the name of the classes without fully testing the Add-In before stopping work on it to start another project. Unfortunately, the refactoring utility does not know about or change the related values in Config.esriaddinx, so that has to be done manually. I think because I was already posting to this thread, I "red herring" -ed myself. -Jeff
... View more
12-14-2010
05:05 PM
|
0
|
0
|
410
|
POST
|
Thanks for the replies, Neil and Dale, One thing I found is that I can install an older version of the same Add-In from its .esriAddIn file -- and it works fine. And it has the same AddInID. So something is getting munged on a per Add-In basis. The compiled Add-In does end up in three locations: debug, release, and the ESRI Add-Ins folder. So I will see if I can find any duplicate registry entries... -Jeff
... View more
12-14-2010
12:39 PM
|
0
|
0
|
573
|
POST
|
Well, if it makes you all feel any better, I just started having the same problem with one of my projects! Buttons gray out when clicked and nothing happens... It had been working fine for over a month. I didn't make any changes to it. 😞 I'm using Visual Studio C# 2008 Express. Doesn't matter whether I'm debugging or running ArcMap outside a debug session. But, a different project still works, both debugging and not. So it's not a global problem. I tried deleting the Add-In manually from: C:\Users\<username>\Documents\ArcGIS\AddIns\Desktop10.0 And deleting the assembly cache from: \Users\<username>\AppData\Local\ESRI\Desktop10.0\AssemblyCache\ (note: you have to set folder options to display hidden protected operating system files) I even tried code-signing the Add-In. Didn't fix it... grrrr. I have a deadline tomorrow and this is not good. -Jeff
... View more
12-14-2010
11:38 AM
|
0
|
0
|
573
|
POST
|
Dale, One other quick thing to check. If you build your test project that displays a message box, then close Visual Studio and launch ArcMap 10 alone, does your button display the message box? I'm just wondering if some debugger settings in VS are getting in the way. -Jeff
... View more
12-13-2010
11:48 AM
|
0
|
0
|
573
|
POST
|
I haven't run into any of the problems you describe, although I am using Visual Studio C# 2008 Express. It has worked seemlessly for me and is easy as billed. I understand your frustration. My best guess is that either the SDK installer did not properly configure the SDK for use with your VS installation, or you are doing something unusual when creating the project. I am working on a tutorial for VBA to Add-in conversions. It is for C# instead of VB.NET, but you might want to look at Parts 3 and 4 to see if you're doing anything differently. http://gis.qtools.com/blog/tutorials/vba-to-c-add-in/part-3-setting-up-visual-studio/ Unless someone else posts a better solution, I think the next step would be to uninstall the ArcObjects SDK, then reinstall. If that doesn't work, uninstall/reinstall both the SDK and Visual Studio. -Jeff
... View more
12-13-2010
10:46 AM
|
0
|
0
|
573
|
POST
|
I don't see anything obviously wrong in your Config.esriaddinx code. There have been other posts here indicating some problems relating to project builds in Visual Studio not updating the Add-in. I have not experienced that problem, but it might be worth a shot for you to clear the Add-in. Delete the folder with the GUID name that is the same as the AddInID in XP: c:\Documents and Settings\<username>\My Documents\ArcGIS\AddIns\Desktop10.0 Win7/Vista: C:\Users\<username>\Documents\ArcGIS\AddIns\Desktop10.0 Do a Rebuild solution and the start debugging to test the Add-In. If that doesn't fix it, try starting a new test Add-In that only has a single button and toolbar, and just the message box in the button click. So let the wizard create all the code except the one line for the message box. -Jeff
... View more
12-13-2010
08:53 AM
|
0
|
0
|
888
|
POST
|
I reproduced the same behavior you describe. It is caused by this line:
Private Function MxDocument_OpenDocument() As Boolean
...
Set pEnumElement = pGraphicsContainer.LocateElements(pPoint, 0.2)
...
pGraphicsContainer.LocateElements(pPoint, 0.2) is returning null (nothing) when called by OpenDocument(). It makes me think the page layout isn't fully initialized before OpenDocument() is triggered. In fact, if you add a 5 second sleep as the first line of the MxDocument_OpenDocument() function, the page layout is blank during that period, and the error still occurs. Seems like a bug. Maybe an Add-in extension would be better than VBA? (assuming OpenDocument() doesn't exhibit the same behaviour there...). -Jeff
... View more
12-10-2010
09:49 AM
|
0
|
0
|
206
|
POST
|
Rather than immediately trying to implement your VBA code conversion, have you tried just getting a simple message box "Hello World" to display from the OnClick() event? That way you check if the basic Add-In framework is working correctly before incorporating any actual ArcObjects code. The wizard should be handling all the XML and boilerplate code. -Jeff
... View more
12-09-2010
10:38 AM
|
0
|
0
|
888
|
POST
|
get_Layer() returns an ILayer. So you should use that first, then test if it is an IFeatureLayer. I haven't worked with MapControl, but I think something like this should work:
for (int i = 0; i < mapControl.LayerCount; i++)
{
ILayer layer = mapControl.get_Layer(i) as ILayer;
if (!(layer is IFeatureLayer))
continue;
IFeatureLayer featureLayer = (IFeatureLayer)layer;
string fName = featureLayer.FeatureClass.AliasName;
// do something with fName
}
-Jeff
... View more
12-09-2010
08:58 AM
|
0
|
0
|
308
|
POST
|
I'll second most of what agray1 wrote, although I guess the edit operation is needed if the features participate in a topology or network. I would certainly try a non-recycling cursor first, since that's an easy change to test. Next, take a close look at the IFeature ref that is getting passed around. Lastly, try moving the edit ops outside the loops. Out of curiosity, how many times does the outer loop typically interate? -Jeff
... View more
12-07-2010
09:53 AM
|
0
|
0
|
461
|
POST
|
Hi Adrian, Are you calling your CutPolygonFeature() method in a loop? Maybe using a cursor to get the ref pFeatPoly? Are you using Search to return the cursor with recycling enabled? Have you tried wrapping the whole operation in an edit session instead of using a separate one for each method call? Just stabbing in the dark, but maybe you could post the code that calls the method. -Jeff
... View more
12-06-2010
05:56 PM
|
0
|
0
|
461
|
POST
|
How about using a queryfilter when getting your cursor? So instead of passing it nothing like: Set featCursor = featClass.Search(Nothing, False)
' Set an IQueryFilter to use ORDER BY to sort in YOUR_SORT_FIELD order
Dim pQueryFilter As IQueryFilter
Set pQueryFilter = New QueryFilter
Dim pQueryFilterDefinition As IQueryFilterDefinition
Set pQueryFilterDefinition = pQueryFilter
pQueryFilter.SubFields = "*"
pQueryFilter.WhereClause = ""
pQueryFilterDefinition.PostfixClause = "ORDER BY YOUR_SORT_FIELD "
' Get cursor from IFeatureLayer, which respects the layer's definition query
' Set pCursor = pFeatureLayer.Search(pQueryFilter, False)
' -OR-
' Get cursor from IFeatureClass, which DOES NOT use the layer's definition query
' and will return all features.
Set pCursor = pFeatureClass.Search(pQueryFilter, False)
... View more
12-05-2010
10:08 AM
|
0
|
0
|
325
|
POST
|
... config.designer.cs file. ... It does not create the ArcMap class (as shown in the walktrough) when using the Express edition. Since you mention a *.CS file, I will assume you are using VS C# 2008 Express. I am using the same. If you look in the Solution Explorer for your Add-in project, you should see "Config.esriaddinx". If you expand that entry's tree, you should find "Config.Designer.cs" under it, which contains the static classes as described. -Jeff
... View more
12-02-2010
08:06 AM
|
0
|
0
|
313
|
POST
|
Assuming you are creating an Add-in button, Here is a mostly straight across conversion:
using System;
using System.IO;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Geodatabase;
protected override void OnClick()
{
DumpAttributesToFileExample("c:/temp/outfile.txt");
}
private void DumpAttributesToFileExample(string fileName)
{
StreamWriter outFile = new StreamWriter(new FileStream(fileName,
FileMode.Create, FileAccess.Write));
try
{
IMap map = ArcMap.Document.FocusMap;
IFeatureLayer featureLayer = (IFeatureLayer)map.get_Layer(0);
IFeatureClass featureClass = featureLayer.FeatureClass;
IQueryFilter queryFilter = new QueryFilterClass();
queryFilter.WhereClause = "";
IFeatureCursor featureCursor = featureClass.Search(queryFilter, true);
IFeature feature = null;
while ((feature = featureCursor.NextFeature()) != null)
{
string output = "Field #2 = " + feature.get_Value(1).ToString() +
" and Field #3 = " + feature.get_Value(2).ToString();
outFile.WriteLine(output);
}
}
finally
{
outFile.Close();
}
}
-Jeff
... View more
11-21-2010
02:43 PM
|
0
|
0
|
591
|
Title | Kudos | Posted |
---|---|---|
1 | 11-03-2010 01:41 PM | |
1 | 10-04-2011 01:44 PM | |
1 | 11-18-2011 01:22 PM | |
1 | 03-09-2011 07:59 AM |
Online Status |
Offline
|
Date Last Visited |
11-11-2020
02:23 AM
|