如何复制或克隆视口?

时间:2013-10-02 07:23:16

标签: vb.net viewport autocad autocad-plugin

复制现有视口的正确方法是什么,我实际上做的是通过复制布局中的内容来克隆布局,除视口外,一切都能顺利进行。 我试图使用克隆方法,但它没有用,我也尝试使用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)

对我来说部分起作用的唯一方法是创建一个视口并逐个复制其属性,但这是详尽无遗的,所以有人能告诉我们复制视口的正确方法吗?

1 个答案:

答案 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