I'm not sure about that my code is elegant
but seems to be worked with named ucs
Just change the name of ucs
Imports System
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.Geometry
Imports acApp = Autodesk.AutoCAD.ApplicationServices.Application
Namespace CoordinateSysytemUtils
Public Class UCSCommands
Public Shared Sub SetNamedUCS()
Dim doc As Document = acApp.DocumentManager.MdiActiveDocument
Dim ed As Editor = doc.Editor
Dim db As Database = doc.Database
Try
Using tr As Transaction = db.TransactionManager.StartTransaction
Dim utb As UcsTable = CType(tr.GetObject(db.UcsTableId, OpenMode.ForRead), UcsTable)
If utb.Has("NewUCS") Then
Dim itbr As UcsTableRecord = CType(tr.GetObject(utb.Item("NewUCS"), OpenMode.ForRead), UcsTableRecord)
Dim ucsMat As Matrix3d = Matrix3d.AlignCoordinateSystem( _
Point3d.Origin, Vector3d.XAxis, Vector3d.YAxis, Vector3d.ZAxis, _
itbr.Origin, itbr.XAxis, itbr.YAxis, itbr.XAxis.CrossProduct(itbr.YAxis))
ed.CurrentUserCoordinateSystem = ucsMat
ed.Regen()
tr.Commit()
End If
End Using
Catch ex As Autodesk.AutoCAD.Runtime.Exception
MsgBox(ex.Message & ControlChars.CrLf & ex.StackTrace)
End Try
End Sub
End Class
End Namespace
~'J'~