1

复制现有视口的正确方法是什么,我实际上正在做的是通过复制其中的内容来克隆布局,除了视口之外,一切都可以顺利进行。我尝试使用 clone 方法,但没有成功,我也尝试使用 copyfrom 方法,但也无济于事。在这两种情况下,复制的视口都是一个哑黑色矩形

Dim exkeyvport As Autodesk.AutoCAD.DatabaseServices.Viewport = DirectCast(acTrans.GetObject(objId, OpenMode.ForRead), Autodesk.AutoCAD.DatabaseServices.Viewport)
Dim keyvport As New Autodesk.AutoCAD.DatabaseServices.Viewport

keyvport.CopyFrom(exkeyvport)
keyvport.UpdateDisplay()
NewblkTableRec.AppendEntity(keyvport)
acTrans.AddNewlyCreatedDBObject(keyvport, True)

对我来说部分工作的唯一方法是创建一个视口并一个一个复制它的属性,但这是详尽且不可靠的,所以有人能告诉我们复制视口的正确方法吗?

4

1 回答 1

2

对于其他对如何执行 deepclone 的详细信息感兴趣的人,这里是代码:objid 指的是视口对象 ID

 If (objId.ObjectClass.DxfName.ToUpper = "VIEWPORT") Then
                    Dim id As ObjectId = newLayout.BlockTableRecordId
                    Dim idcol As New ObjectIdCollection
                    idcol.Add(objId)
                    Dim idmap As New IdMapping
                    acCurdb.DeepCloneObjects(idcol, acCurdb.CurrentSpaceId, idmap, False)
  End if 
于 2013-10-04T08:25:39.043 回答