Hello Ahmed,your sample works nice as described, but removing templates permanently is not what I intended. Any idea about just temporarily filtering those templates?Thanks and RegardsFossi
private void FilterEditTemplates() { try { //Start an edit session on the workspace holding the feature class. IWorkspace editWorkspace = GetWorkspace() as IWorkspace; ESRI.ArcGIS.esriSystem.UID editorUid = new ESRI.ArcGIS.esriSystem.UID(); editorUid.Value = "esriEditor.Editor"; ESRI.ArcGIS.Editor.IEditor3 m_editor = ArcMap.Application.FindExtensionByCLSID(editorUid) as ESRI.ArcGIS.Editor.IEditor3; m_editor.StartEditing(editWorkspace); //Remove All Existing Templates m_editor.RemoveAllTemplatesInMap(ArcMap.Document.FocusMap); //Get your edit layer (Layer belongs to edit workspace) ILayer editLayer = GisHelper.GetLayerByName("YourLayerName"); //Make new template IEditTemplateFactory editTemplateFact = new EditTemplateFactoryClass(); IEditTemplate newEditTemplate = editTemplateFact.Create("MyTemplateName", editLayer); //Add the template to editor. IArray templateArray = new ArrayClass(); templateArray.Add(newEditTemplate); m_editor.AddTemplates(templateArray); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }
[...] ESRI.ArcGIS.Carto.IEditTemplate EditTemplate; EditTemplate = m_editor.CurrentTemplate; EditTemplate = (m_editor as ESRI.ArcGIS.Carto.IEditTemplate); MessageBox.Show(m_editor.TemplateCount.ToString()); m_editor.StartEditing(editWorkspace); MessageBox.Show(m_editor.TemplateCount.ToString()); for (int i = 0; i < m_editor.TemplateCount - 1; i++) { EditTemplate = m_editor.get_Template(i); m_editor.CurrentTemplate = EditTemplate; MessageBox.Show(EditTemplate.Layer.Name); } [...]
private void startEditingAndSelectEditLayer(ESRI.ArcGIS.Framework.IApplication ArcMap) { //derived from http://resources.esri.com/help/9.3/ArcGISDesktop/dotnet/2626201e-de60-4bab-bb1c-d16fcd4f8c4b.htm#NETFeature ESRI.ArcGIS.Geodatabase.IFeatureClass m_featureClass; ESRI.ArcGIS.Carto.IFeatureLayer m_featureLayer; ESRI.ArcGIS.Editor.IEditor m_editor; //get current document from ArcMap-Application ESRI.ArcGIS.ArcMapUI.IMxDocument mxDocument = (ESRI.ArcGIS.ArcMapUI.IMxDocument)ArcMap.Document; //get current contentsview ESRI.ArcGIS.ArcMapUI.IContentsView curTOC = mxDocument.CurrentContentsView; //get select featureLayer in contents view //http://help.arcgis.com/en/sdk/10.0/arcobjects_net/componenthelp/index.html#//004900000016000000 m_featureLayer = ArcMapHelperFunctions.GetSelectedFeatureLayerInContentsView(mxDocument.CurrentContentsView); //get featureClass of this layer m_featureClass = m_featureLayer.FeatureClass; //Once the feature class has been referenced, get the workspace to edit by creating an IFeatureWorkspace //and setting an IWorkspace object to the feature workspace using a cast. ESRI.ArcGIS.Geodatabase.IWorkspace editWorkspace = (m_featureClass as ESRI.ArcGIS.Geodatabase.IDataset).Workspace; //Start an edit session on the workspace holding the feature class ESRI.ArcGIS.esriSystem.UID editorUid = new ESRI.ArcGIS.esriSystem.UID(); editorUid.Value = "esriEditor.Editor"; m_editor = ArcMapHelperFunctions.app.FindExtensionByCLSID(editorUid) as ESRI.ArcGIS.Editor.IEditor3; //define edit layer, to set the editor selecting a specific layer //http://forums.arcgis.com/threads/110456-Is-it-possible-to-start-editing-of-a-specific-featureClass-programmatically //http://forums.esri.com/Thread.asp?c=93&f=992&t=58618&mc=10#msgid147954 ESRI.ArcGIS.Editor.IEditLayers EditLayer; EditLayer = (m_editor as ESRI.ArcGIS.Editor.IEditLayers); MessageBox.Show(m_featureLayer.Name); //did I get the right layer? MessageBox.Show(EditLayer.IsEditable(m_featureLayer).ToString()); //is it editable? //EditLayer.SetCurrentLayer(m_featureLayer, 0); //set current layer before start editing -- no success m_editor.StartEditing(editWorkspace); m_editor.StartOperation(); EditLayer.SetCurrentLayer(m_featureLayer, 0); //set current layer after start editing -- no success }
Dim pMxDoc as IMxDocument Dim pFeatureLayer as IFeatureLayer Dim pDataset as IDataset Dim pEditor as IEditor Dim pUID as new UID Set pMxDoc = ThisDocument Set pFeatureLayer = pMxDoc.FocusMap.Layer(0) Set pDataset = pFeatureLayer.FeatureClass pUID.Value = "esriCore.Editor" Set pEditor = Application.FindExtensionByCLSID(pUID) pEditor.StartEditing pDataset.Workspace
Aangemelde leden kunnen berichten plaatsen, updates volgen en meer. Nieuw hier? Registreer een gratis account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.