.NET

Reply
Valued Contributor
Ertqwa
Posts: 88
Registered: ‎10-03-2011
Message 1 of 4 (405 Views)
Accepted Solution

Active Document - eNotFromThisDocument error

405 Views, 3 Replies
01-14-2012 03:33 PM

Hello Forum,

 

the following code gives me an eNotFromThisDocument error:

 

[LispFunction("MyFunction")]
public ResultBuffer MyFunction(ResultBuffer rbParameter)
{
    ...
    objDocument = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.Open(strPath, false);
    if (!objDocument.IsReadOnly)
    {
        using (objDocumentLock = objDocument.LockDocument())
        {
            Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument = objDocument;
            objDocument.Database.TileMode = true; //  = eNotFromThisDocument.
        }
        objDocument.CloseAndSave(strPath);
        objDocument.Dispose();
    }
    ...
}

 I think it is because the Editor does not get linked to the newly opened drawing. In other words, I can not change tilemode of objDocument, because the drawing from which I called this function is still the active/current drawing. How can I tell AutoCAD that objDocument should be the active/current drawing, so I can change the tilemode, and use Editor functionality, such as SendString()?

 

Thank you.

*Expert Elite*
Alfred.NESWADBA
Posts: 8,488
Registered: ‎06-29-2007
Message 2 of 4 (392 Views)

Re: Active Document - eNotFromThisDocument error

01-15-2012 12:39 AM in reply to: Ertqwa

Hi,

 

as a guess: in LISP you get lost if the document changed as LISP-code it runs document-based. If you start a LISP in A.DWG you can start to load B.DWG but the lisp-code will not continue in B.DWG.

That you load a drawing and make the this other drawing active within a LISP-function may be the source of the problem.

 

- alfred -

-------------------------------------------------------------------------
Alfred NESWADBA
Ingenieur Studio HOLLAUS ... www.hollaus.at
-------------------------------------------------------------------------
*Expert Elite*
Hallex
Posts: 1,555
Registered: ‎10-08-2008
Message 3 of 4 (372 Views)

Re: Active Document - eNotFromThisDocument error

01-15-2012 12:01 PM in reply to: Ertqwa

See if this works for yoy, tested on A2010

<code>

[LispFunction("MyFunction")]
public ResultBuffer MyFunction(ResultBuffer rbParameter)
{
Document doc = acadApp.DocumentManager.MdiActiveDocument;
string strPath = .....;
using (DocumentLock objDocumentLock = doc.LockDocument())
{
Document objDocument = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.Open(strPath, false);
if (!objDocument.IsReadOnly)
{
using (DocumentLock pDocumentLock = objDocument.LockDocument())
{

Database pdb = HostApplicationServices.WorkingDatabase;
if (pdb.TileMode == true)
pdb.TileMode = false;
//Autodesk.AutoCAD.ApplicationServices.Application.SetSystemVariable("ctab", "Floor Plan");//debug only

}

objDocument.CloseAndSave(strPath);
objDocument.Dispose();
}

}

return new ResultBuffer(new TypedValue((int)LispDataType.Nil));
}

</code>

_____________________________________
C6309D9E0751D165D0934D0621DFF27919
Valued Contributor
Ertqwa
Posts: 88
Registered: ‎10-03-2011
Message 4 of 4 (348 Views)

Re: Active Document - eNotFromThisDocument error

01-16-2012 12:29 PM in reply to: Hallex
Hello Hallex, with your code I no longer get the "eNotFromThisDocument" error, but that is because "HostApplicationServices.WorkingDatabase" returns the database of the drawing from which I run the lisp function, and not the database from the drawing that I open with "DocumentManager.Open". Thank you for the response.

You are not logged in.

Log into access your profile, ask and answer questions, share ideas and more. Haven't signed up yet? Register

Announcements
Welcome to the new Autodesk Community!
If this is your first visit, click here to get started and make the most of the Community. Let us know what you think of the new experience in the Community Feedback Forum.

Need installation help?

Start with some of our most frequented solutions to get help installing your software.

Ask the Community