重新加载外部参照 (.NET)
如果有人在处理附着了该外部参照的主机绘图时修改了外部参照绘图,则可以使用该方法更新该外部参照绘图。重新加载时,选定的外部参照图形将在宿主图形中更新。此外,如果已卸载外部参照,则可以随时选择重新加载该外部参照绘图。Reload 重新加载外部参照定义本示例附加外部参照,然后重新加载外部参照。此示例使用在 Sample 目录中找到的 Exterior Elevations.dwg 文件。如果您没有此映像,或者它位于其他目录中,请插入有效的路径和文件名。 VB.NETImports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Geometry
<CommandMethod("ReloadingExternalReference")> _
Public Sub ReloadingExternalReference()
' Get the current database and start a transaction
Dim acCurDb As Autodesk.AutoCAD.DatabaseServices.Database
acCurDb = Application.DocumentManager.MdiActiveDocument.Database
Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()
' Create a reference to a DWG file
Dim PathName As String = "C:\AutoCAD\Sample\Sheet Sets\Architectural\Res\Exterior Elevations.dwg"
Dim acXrefId As ObjectId = acCurDb.AttachXref(PathName, "Exterior Elevations")
' If a valid reference is created then continue
If Not acXrefId.IsNull Then
' Attach the DWG reference to the current space
Dim insPt As New Point3d(1, 1, 0)
Using acBlkRef As New BlockReference(insPt, acXrefId)
Dim acBlkTblRec As BlockTableRecord
acBlkTblRec = acTrans.GetObject(acCurDb.CurrentSpaceId, OpenMode.ForWrite)
acBlkTblRec.AppendEntity(acBlkRef)
acTrans.AddNewlyCreatedDBObject(acBlkRef, True)
End Using
MsgBox("The external reference is attached.")
Using acXrefIdCol As New ObjectIdCollection
acXrefIdCol.Add(acXrefId)
acCurDb.ReloadXrefs(acXrefIdCol)
End Using
MsgBox("The external reference is reloaded.")
End If
' Save the new objects to the database
acTrans.Commit()
' Dispose of the transaction
End Using
End Sub
C#using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
[CommandMethod("ReloadingExternalReference")]
public void ReloadingExternalReference()
{
// Get the current database and start a transaction
Database acCurDb;
acCurDb = Application.DocumentManager.MdiActiveDocument.Database;
using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
{
// Create a reference to a DWG file
string PathName = "C:\\AutoCAD\\Sample\\Sheet Sets\\Architectural\\Res\\Exterior Elevations.dwg";
ObjectId acXrefId = acCurDb.AttachXref(PathName, "Exterior Elevations");
// If a valid reference is created then continue
if (!acXrefId.IsNull)
{
// Attach the DWG reference to the current space
Point3d insPt = new Point3d(1, 1, 0);
using (BlockReference acBlkRef = new BlockReference(insPt, acXrefId))
{
BlockTableRecord acBlkTblRec;
acBlkTblRec = acTrans.GetObject(acCurDb.CurrentSpaceId, OpenMode.ForWrite) as BlockTableRecord;
acBlkTblRec.AppendEntity(acBlkRef);
acTrans.AddNewlyCreatedDBObject(acBlkRef, true);
}
Application.ShowAlertDialog("The external reference is attached.");
using (ObjectIdCollection acXrefIdCol = new ObjectIdCollection())
{
acXrefIdCol.Add(acXrefId);
acCurDb.ReloadXrefs(acXrefIdCol);
}
Application.ShowAlertDialog("The external reference is reloaded.");
}
// Save the new objects to the database
acTrans.Commit();
// Dispose of the transaction
}
}
VBA/ActiveX 代码参考Sub ReloadingExternalReference()
' Define external reference to be inserted
Dim xrefInserted As AcadExternalReference
Dim insertionPnt(0 To 2) As Double
Dim PathName As String
insertionPnt(0) = 1
insertionPnt(1) = 1
insertionPnt(2) = 0
PathName = "C:\AutoCAD\Sample\Sheet Sets\Architectural\Res\Exterior Elevations.dwg"
' Add the external reference to the block
Set xrefInserted = ThisDrawing.ActiveLayout.Block. _
AttachExternalReference(PathName, "Exterior Elevations", insertionPnt, 1, 1, 1, 0, False)
MsgBox "The external reference is attached."
' Reload the external reference definition
ThisDrawing.Blocks.Item(xrefInserted.name).Reload
MsgBox "The external reference is reloaded."
End Sub
父主题: |
|Archiver|CAD开发者社区
( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-10-29 22:45
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.