I am writing a stand-alone application in c# (using vs2010). I have ArcGis Desktop license.
I only need to insert a new data frame in an mxd file and save this mxd.

So: I create MxDocument coclass. Then get IMxDocument interface from that. Then i use its "Maps" property which return me IMaps interface. From that I call its method Add() to add a new dataframe.


Dim pDocClassOut As MxDocumentClas = New MxDocumentClass()
Dim appl As IApplication = TryCast(pDocClassOut.Parent, IApplication)
Dim mxDoc As IMxDocument = TryCast(appl.Document, IMxDocument)
Dim maps As IMaps = CType(mxDoc.Maps, IMaps)
Dim pMap1 As IMap = New MapClass
pMap1.Name = "XYZ"

appl.SaveAsDocument("E:\DEV EnGIS\Untitled.mxd")

Why this simple code doesn't work? Thank you so much!


What part isn't working? Have you tried calling mxDoc.Open(pathToMXD) first? I found a sample on the ArcGIS forums in Java, but the concept should be exactly the same in .Net.

  • Hi. Sorry for my late answer. Yes, i tried also mxDoc.Open(pathToMxd). Problem is that i get an error when i save the document (Generic error from COM). – diolo75 Jul 24 '13 at 13:31
  • Sample you linked is for Add-in but I have a standalone application. – diolo75 Jul 24 '13 at 13:44

Are you using engine? According to the help file this interface will not work, it's for desktop only

Have a look at this link: http://help.arcgis.com/en/sdk/10.0/arcobjects_net/componenthelp/index.html#/IMaps_Interface/00120000097v000000/

If you are developing for desk top then try the create method.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.