Друзья, а как назначить ПСК в видовом экране? Казалось бы, задача простая и для ее решения есть метод
Viewport.SetUcs(Point3d origin, Vector3d x, Vector3d y), но он не дает желаемого результата, точнее вообще не даёт результата. При изменении
Viewport.ViewCenter и
Viewport.ViewHeight представление видового экрана меняется (т.е. изменения в видовом экране применяются), а вот при изменении ПСК результата нет - постоянно остается МСК. Причём, параметры ПСК сохраняются, а вот в самом видовом экране никаких ихменений.
Вот тестируемый код:
[CommandMethod("_test1")]
public void test1()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
using (Transaction trans = db.TransactionManager.StartTransaction())
{
Viewport vp = (Viewport)trans.GetObject(ed.GetEntity("\nviewport:").ObjectId, OpenMode.ForWrite);
Vector3d v = Point3d.Origin.GetVectorTo(new Point3d(1.0, 1.0, 0.0));
//определение параметров исходной ПСК
Point3d p0 = new Point3d();
Vector3d vX = new Vector3d();
Vector3d vY = new Vector3d();
vp.GetUcs(ref p0, ref vX, ref vY);
vp.SetUcs(Point3d.Origin, v.GetNormal(), v.GetPerpendicularVector());
vp.ViewTarget = new Point3d(0.0, 0.0, 0.0);
vp.ViewCenter = new Point2d(50.0, 50.0);
vp.ViewHeight = 110;
vp.UpdateDisplay();
trans.Commit();
}
}