Select to view content in your preferred language

Delete Schematic Diagram Using Code.

882
2
10-10-2011 02:41 AM
sanjeevsinha
Deactivated User
Hi,

I am trying to delete the Schematic Diagram using the below code. The codes runs fine without any error but diagram is not getting deleted from sde geodatabase. (I have used the ISchematicBuilderEdit.OnDeleteDiagram interface.)

I am using (ArcGis Sever V9.3.1)

private string DeleteSchematicDiagram(string diagramName,string folderName,string schematicDatasetName,IWorkSpace pwksSpace)
{
ISchematicWorkspaceFactory pSchWorkspaceFac = pServerContext1.CreateObject("esriSchematic.SchematicWorkspaceFactory") as ISchematicWorkspaceFactory;
            ISchematicWorkspace pSchWorkspace = pSchWorkspaceFac.Open(pwksSpace);
            ISchematicDataset pSchDataSet = pSchWorkspace.get_SchematicDatasetByName(schematicDatasetName);
            if (pSchDataSet != null)
            {
                ISchematicFolderContainer pSchematicFolderContainer = (ISchematicFolderContainer)pSchDataSet;
                ISchematicFolder pSchematicFolder = pSchematicFolderContainer.get_SchematicFolderByName(folderName);
                ISchematicDiagramContainer pSchematicDiagramContainer = pSchematicFolder as ISchematicDiagramContainer;
               IEnumSchematicDiagram pEnumScheDiag = pSchematicDiagramContainer.SchematicDiagrams;
               ISchematicDiagram pSchDiagram = null;
               for (int i = 0; i < pSchematicDiagramContainer.SchematicDiagrams.Count; i++)
               {
                   ISchematicDiagram finalSchemDiagram = pEnumScheDiag.Next();
                   if (finalSchemDiagram != null)
                   {
                       if (finalSchemDiagram.Name == diagramName)
                       {
                           pSchDiagram = finalSchemDiagram;
                           break;
                       }

                   }
               }//For loop

               if (pSchDiagram != null)
               {
                   ISchematicBuilder pSchStandardBuilder = pSchDiagram.SchematicDiagramClass.SchematicBuilder as ISchematicBuilder;
                   ISchematicBuilderEdit pSchematicBuilderEdit = pSchStandardBuilder as ISchematicBuilderEdit;
                   try
                   {
                       pSchematicBuilderEdit.OnDeleteDiagram(pSchDiagram);
                   }
                   catch (Exception exp)
                   {
                       return "ERROR^" + exp.Message;
                   }

               }


            }
            else
            {
                return "ERROR^Schematic dataset not found.";
            }
}

Thanks for any help......

Thanks & regards
Sanjeev kumar Sinha
Tags (2)
0 Kudos
2 Replies
RickAnderson
Frequent Contributor
So assuming you already have an ISchematicDataset, you need to use the ISchematicProjectMgr object to get the NgProject.  From there you get the NgDiagram etc...  The ISchematicProjectMgr is the key to moving between the essentially 2 worlds in Schematics:

1. ISchematic... - something stored on disk
2. INg... - something in memory or hydrated for actual display

So ISchematicDataset and INgProject are the equivalents, then ISchematicDiagram and INgDiagram etc... etc...


No more dual posting please...
0 Kudos
sanjeevsinha
Deactivated User
Hi Rick,

Many many thanks, Thats works. Thanks you again.
0 Kudos