.NET

.NET

Reply
Valued Contributor
RamanSBV
Posts: 88
Registered: ‎02-28-2012
Message 1 of 2 (329 Views)
Accepted Solution

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

329 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
BrentBurgess1980
Posts: 166
Registered: ‎06-16-2008
Message 2 of 2 (314 Views)

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
Do you have 60 seconds to spare? The Autodesk Community Team is revamping our site ranking system and we want your feedback! Please click here to launch the 5 question survey. As always your input is greatly appreciated.