复制现有视口的正确方法是什么,我实际上做的是通过复制布局中的内容来克隆布局,除视口外,一切都能顺利进行。 我试图使用克隆方法,但它没有用,我也尝试使用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)
对我来说部分起作用的唯一方法是创建一个视口并逐个复制其属性,但这是详尽无遗的,所以有人能告诉我们复制视口的正确方法吗?
答案 0 :(得分:2)
对于其他对如何执行深度克隆的详细信息感兴趣的人是代码: 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