如果有人在处理附着了该外部参照的主机绘图时修改了外部参照绘图,则可以使用该方法更新该外部参照绘图。重新加载时,选定的外部参照图形将在宿主图形中更新。此外,如果已卸载外部参照,则可以随时选择重新加载该外部参照绘图。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-1-8 19:03
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.