Holywhippet

Problem building a map using IMapDocument

Discussion created by Holywhippet on Jan 2, 2014
I've got an application I've built where the user can load it up after selecting a single line and it will pick up on datasets near said line (rasters, vectors etc.) I'm trying to build a simple export function where it saves a cut down sample of the data near the selected line (so rasters trimmed to fit the envelope of the line and feature classes only exporting data that intersects).

For the most part it works, but as part of my application I save an XML config file in the same location as the MXD file. When I export my data it copies the XML file to be near the new MXD I create. But when I load the MXD in the application templates are wrong so it doesn't know where the MXD really is. For example, in this case:

        
        Dim pTemplates As ITemplates = CType(m_app, IApplication).Templates
        Dim lTempCount As Long = pTemplates.Count

        strDocPath = pTemplates.Item(lTempCount - 1)


I should have strDocPath set to something like "c:\projects\ProjectName\Project.mxd". Instead it is set to "C:\Users\amills\AppData\Local\Temp\~DFADDB648B646D99A1.TMP" when I load the new MXD in. That looks like the kind of path I'd get if the map had not been saved to an MXD so I'm not sure why I'm seeing it. The code that generates the new MXD looks like this (I've cut out a lot of the layers being added for this sample):

            Dim outMap As IMapDocument = New MapDocument
            outMap.[New](targetMap)
            outMap.ActiveView.Activate(m_app.hWnd)

            copyFC = outWS.CreateFeatureClass(CType(locationFC, IDataset).Name, CType(locationFC.Fields, IClone).Clone, pUID, Nothing, esriFeatureType.esriFTSimple, locationFC.ShapeFieldName, Nothing)
            pFCLoad = copyFC
            pFCLoad.LoadOnlyMode = True
            insertCursor = copyFC.Insert(True)
            copyFeature = copyFC.CreateFeatureBuffer
            For counter = 0 To selectedFeature.Fields.FieldCount - 1
                If selectedFeature.Fields.Field(counter).Editable AndAlso Not selectedFeature.Fields.Field(counter).Type = esriFieldType.esriFieldTypeGeometry Then
                    copyIDX = copyFC.FindField(selectedFeature.Fields.Field(counter).Name)
                    copyFeature.Value(copyIDX) = selectedFeature.Value(counter)
                End If
            Next
            copyFeature.Shape = selectedFeature.ShapeCopy

            insertCursor.InsertFeature(copyFeature)
            insertCursor.Flush()
            insertCursor = Nothing
            pFCLoad.LoadOnlyMode = False
           
            addLayer = New FeatureLayer
            CType(addLayer, IFeatureLayer).FeatureClass = copyFC
            addLayer.Name = currentLayer.Name

            outMap.Map(0).AddLayer(addLayer)
           
            CType(outMap, IMapDocument).Save(True, True)
            outMap.Close()


Any ideas please?

Outcomes