After doing some research, part of my problem was not knowing what I was looking for. The following code does what I need, except for one thing:
The viewport changes to the orthogonal plan view at the end of the toUser Sub.
How do I keep the user's viewport view as-is?
Thanks,
David
Public vect1 As Vector3d
Public vect2 As Vector3d
Public org As Point3d
Public Sub toWorld()
Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
Dim acCurDb As Database = acDoc.Database
vect1 = acCurDb.Ucsxdir
vect2 = acCurDb.Ucsydir
org = acCurDb.Ucsorg
acDoc.Editor.CurrentUserCoordinateSystem = Matrix3d.Identity
End Sub
Public Sub restoreUCS()
Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
Dim acCurDb As Database = acDoc.Database
Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()
'' Open the UCS table for read
Dim acUCSTbl As UcsTable
acUCSTbl = acTrans.GetObject(acCurDb.UcsTableId, OpenMode.ForRead)
Dim acUCSTblRec As UcsTableRecord
If acUCSTbl.Has("New_UCS") = False Then
acUCSTblRec = New UcsTableRecord()
acUCSTblRec.Name = "New_UCS"
acUCSTbl.UpgradeOpen()
acUCSTbl.Add(acUCSTblRec)
acTrans.AddNewlyCreatedDBObject(acUCSTblRec, True)
Else
acUCSTblRec = acTrans.GetObject(acUCSTbl("New_UCS"), OpenMode.ForWrite)
End If
acUCSTblRec.Origin = org
acUCSTblRec.XAxis = vect1
acUCSTblRec.YAxis = vect2
'' Open the active viewport
Dim acVportTblRec As ViewportTableRecord
'' Set the UCS current
acVportTblRec.SetUcs(acUCSTblRec.ObjectId)
acDoc.Editor.UpdateTiledViewportsFromDatabase()
acTrans.Commit()
End Using
End Sub