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
Přihlášení členové mohou přispívat, sledovat aktualizace a další. Jste tu noví? Zaregistrujte si bezplatný účet.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.