ADN Open CIS
Сообщество программистов Autodesk в СНГ

09/06/2015

Создание ВЭкрана автоматически отображающего план ПСК (UCSFollow)

Следующий пример показывает как создать вид с включенным UCSFollow. Это должно означать, что ВЭкран будет всегда отображать план текущей ПСК при любом её изменении.

Код - C#: [Выделить]
  1. [CommandMethod("CreateVP",  CommandFlags.NoTileMode)]
  2.  public  void CreateVPMethod()
  3.  {
  4.      Document doc
  5.      = Application.DocumentManager.MdiActiveDocument;
  6.  
  7.      Database db = doc.Database;
  8.      Editor ed = doc.Editor;
  9.  
  10.      ObjectId layoutId = LayoutManager.Current.GetLayoutId
  11.                  (LayoutManager.Current.CurrentLayout);
  12.     
  13.      using  (Transaction Tx
  14.          = db.TransactionManager.StartTransaction())
  15.      {
  16.          Layout LayoutDest
  17.          = Tx.GetObject(layoutId, OpenMode.ForRead)
  18.          as  Layout;
  19.  
  20.          BlockTableRecord btrDest
  21.          = Tx.GetObject(LayoutDest.BlockTableRecordId,
  22.          OpenMode.ForWrite) as  BlockTableRecord;
  23.  
  24.          ViewportTable vt
  25.          = Tx.GetObject(db.ViewportTableId, OpenMode.ForRead)
  26.          as  ViewportTable;
  27.  
  28.          ViewportTableRecord vtr
  29.          = Tx.GetObject(vt["*Active"], OpenMode.ForRead)
  30.          as  ViewportTableRecord;
  31.  
  32.          UcsTable ucsTbl
  33.          = Tx.GetObject(db.UcsTableId, OpenMode.ForRead)
  34.          as  UcsTable;
  35.  
  36.          if  (vtr != null)
  37.          {
  38.              Autodesk.AutoCAD.DatabaseServices.Viewport vpNew
  39.              = new  Autodesk.AutoCAD.DatabaseServices.Viewport();
  40.  
  41.              vpNew.SetDatabaseDefaults();
  42.              vpNew.Width = 6.0;
  43.              vpNew.Height = 5.0;
  44.              vpNew.CenterPoint = new  Point3d(3.25, 3, 0);
  45.              if  (ucsTbl.Has("myucs"))
  46.              {
  47.                  ObjectId ucsId = ucsTbl["myucs"];
  48.                  vpNew.SetUcs(ucsId);
  49.              }
  50.              vpNew.StandardScale
  51.              = StandardScaleType.Scale1To1;
  52.              vpNew.ViewCenter = vtr.CenterPoint;
  53.              vpNew.ViewHeight = vtr.Height;
  54.              vpNew.ViewDirection = vtr.ViewDirection;
  55.              vpNew.ViewTarget = vtr.Target;
  56.              vpNew.TwistAngle = vtr.ViewTwist;
  57.  
  58.              vpNew.UcsPerViewport = true ;
  59.              vpNew.UcsFollowModeOn = true ;
  60.              vpNew.GridOn = true ;
  61.              vpNew.GridFollow = true ;
  62.              btrDest.AppendEntity(vpNew);
  63.  
  64.              Tx.AddNewlyCreatedDBObject(vpNew, true );
  65.              vpNew.On = true ;
  66.          }
  67.  
  68.          Tx.Commit();
  69.      }
  70.  }

 

Источник: http://adndevblog.typepad.com/autocad/2015/05/creating-viewport-with-ucs-follow.html

Автор перевода: Александр Ривилис

Обсуждение: http://adn-cis.org/forum/index.php?topic=2778

Опубликовано 09.06.2015