.NET

.NET

Reply
Valued Contributor
88 Posts
0 Kudos
Registered: ‎02-28-2012
Post 1 of 2
Accepted Solution

Is it possible to change the saved xref path without reattaching the xref

332 Views, 1 Replies
08-29-2012 12:49 AM

Hi,

 

Is it possible to change the saved xref path without reattaching the xref

 

Please guide me

 

Regards,

Raman

Try this - I haven' tested it yet though.

public static void Repath(Database db, string xrefName, string newPath)
{
if (string.IsNullOrEmpty(newPath))
{
throw new Autodesk.AutoCAD.Runtime.Exception(ErrorStatus.FileNotFound, "The path can not be found");
}
if (!File.Exists(newPath))
{
throw new Autodesk.AutoCAD.Runtime.Exception(ErrorStatus.FileNotFound, "The file can not be found");
}
BlockTableRecord btr = default(BlockTableRecord);
using (Transaction tr = db.TransactionManager.StartTransaction())
{
XrefGraph DbXrGraph = db.GetHostDwgXrefGraph(true);
XrefGraphNode XrGraphNode = null;
XrGraphNode = DbXrGraph.GetXrefNode(xrefName);
btr = (BlockTableRecord)tr.GetObject(XrGraphNode.BlockTableRecordId, OpenMode.ForWrite);
btr.PathName = newPath;
tr.Commit();
}
}

 

Mentor
166 Posts
9 Kudos
Registered: ‎06-16-2008
Post 2 of 2

Re: Is it possible to change the saved xref path without reattaching the xref

08-29-2012 05:26 PM in reply to: RamanSBV

Try this - I haven' tested it yet though.

public static void Repath(Database db, string xrefName, string newPath)
            {
            if (string.IsNullOrEmpty(newPath))
                {
                throw new Autodesk.AutoCAD.Runtime.Exception(ErrorStatus.FileNotFound, "The path can not be found");
                }

            if (!File.Exists(newPath))
                {
                throw new Autodesk.AutoCAD.Runtime.Exception(ErrorStatus.FileNotFound, "The file can not be found");
                }

            BlockTableRecord btr = default(BlockTableRecord);
            using (Transaction tr = db.TransactionManager.StartTransaction())
                {
                XrefGraph DbXrGraph = db.GetHostDwgXrefGraph(true);
                XrefGraphNode XrGraphNode = null;

                XrGraphNode = DbXrGraph.GetXrefNode(xrefName);
                btr = (BlockTableRecord)tr.GetObject(XrGraphNode.BlockTableRecordId, OpenMode.ForWrite);
                btr.PathName = newPath;
                tr.Commit();
                }
            }

 

Post to the Community

Have questions about Autodesk products? Ask the community.

New Post
Announcements
Are you interested in helping shape the future of the Autodesk Community? To participate in this brief usability study, please click here. Your time and input is greatly appreciated!