Suite

Vous essayez d'exécuter ModelBuilder via C# ?


J'ai un problème lorsque j'essaie d'exécuter un générateur de modèles via C#, l'application renvoie :

une erreur s'est produite erreur hresult e_fail a été renvoyé à partir d'un appel à un composant COM

Remarque : ArcGIS 10.1 et .NET 2010

CODE :

en utilisant le système ; en utilisant ESRI.ArcGIS.esriSystem ; en utilisant ESRI.ArcGIS.Geoprocessing ; espace de noms GeoprocessingInDotNet2008 { class Program { private static LicenseInitializer m_AOLicenseInitializer = new GeoprocessingInDotNet2008.LicenseInitializer(); [STAThread()] static void Main(string[] args) { // Charge le code et la version du produit dans le gestionnaire de versions ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Desktop); //Code généré par l'initialiseur de licence ESRI. //m_AOLicenseInitializer.InitializeApplication(new esriLicenseProductCode[] { esriLicenseProductCode.esriLicenseProductCodeArcInfo }, //new esriLicenseExtensionCode[] { }); // Créer un géoprocesseur. Overwrite true remplacera la sortie existante IGeoProcessor2 gp = new GeoProcessorClass(); gp.OverwriteOutput = true; // Récupère l'espace de travail à partir de la chaîne utilisateur wks = @"C:UsersAmineMedDocumentsArcGISLYDECDataBases"; // définit l'espace de travail sur la valeur saisie par l'utilisateur gp.SetEnvironmentValue("workspace", wks + "" + "Temp.mdb"); // Ajout de la boîte à outils personnalisée au géoprocesseur gp.AddToolbox(@"C:UsersAmineMedDocumentsArcGISLYDECConverterTool.tbx"); // Créer un variant - les données sont dans l'espace de travail IVariantArray parameters = new VarArrayClass(); parameters.Add(@"C:UsersAmineMedDesktopmise à jourEl MejjatyaPlan topo Al WiamPlan topo Al WiamT15071c.dwg"); objet grav = nul ; try { gp.Execute("Création", parameters,null); Console.WriteLine(gp.GetMessages(ref sev)); } catch (Exception ex) { Console.WriteLine(ex.Message); chaîne errorMsgs = gp.GetMessages(ref sev); Console.WriteLine(errorMsgs); } enfin { Console.WriteLine("Appuyez sur Entrée pour quitter"); Console.ReadLine(); // mettez la console en pause pour voir les messages } // Code généré par ESRI License Initializer. //Ne faites aucun appel à ArcObjects après ShutDownApplication() m_AOLicenseInitializer.ShutdownApplication(); }


Utilisez un try catch pour récupérer les messages d'erreur de l'objet gp.

try { GP.Execute("Création", paramètres, null); } catch(exception ex) { Messagebox.Show(GP.GetMessages()); }