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)

私にとって部分的に機能した唯一の方法は、ビューポートを作成してその属性を1つずつコピーすることでしたが、これは網羅的で信頼性が低いため、ビューポートをコピーする適切な方法を教えてもらえますか?

4

1 に答える 1

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 
于 2013-10-04T08:25:39.043 に答える