uidoc.Selection.PickElementsByRectangle => Rectangle

Автор Тема: uidoc.Selection.PickElementsByRectangle => Rectangle  (Прочитано 5218 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн enotАвтор темы

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: uidoc.Selection.PickElementsByRectangle => Rectangle
« Ответ #15 : 10-02-2019, 14:31:13 »
Можно получить CropBox.Transform, из него взять Origin и Normal
из CropBox.Transform => Origin = CropBox.Transform.Origin  , а как получить Normal из  CropBox.Transform ?

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: uidoc.Selection.PickElementsByRectangle => Rectangle
« Ответ #16 : 10-02-2019, 14:39:38 »
BasisZ

Оффлайн enotАвтор темы

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: uidoc.Selection.PickElementsByRectangle => Rectangle
« Ответ #17 : 10-02-2019, 14:52:53 »
Подошел Basis.X , CropBox.Transform.Origin  => это точка, находящаяся в геометрическом центре CropBox ?

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: uidoc.Selection.PickElementsByRectangle => Rectangle
« Ответ #18 : 10-02-2019, 15:35:22 »
BasisX подойти не мог, ты что-то перепутал
Код - C# [Выбрать]
  1.         public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
  2.         {
  3.             var uiapp = commandData.Application;
  4.             var uidoc = uiapp.ActiveUIDocument;
  5.  
  6.             var pt = PickPoint(uidoc);
  7.  
  8.             TaskDialog.Show("dev", $"{pt}");
  9.  
  10.             return Result.Succeeded;
  11.         }
  12.  
  13.         private static XYZ PickPoint(UIDocument uidoc)
  14.         {
  15.             var document = uidoc.Document;
  16.  
  17.             var view = uidoc.ActiveGraphicalView;
  18.  
  19.             using (var transactionGroup = new TransactionGroup(document, "temp"))
  20.             {
  21.                 transactionGroup.Start();
  22.  
  23.                 CreateSketchPlane(view);
  24.                
  25.                 try
  26.                 {
  27.                     return uidoc
  28.                         .Selection
  29.                         .PickPoint();
  30.                 }
  31.                 catch (OperationCanceledException)
  32.                 {
  33.                     return null;
  34.                 }
  35.                 finally
  36.                 {
  37.                     transactionGroup.RollBack();
  38.                 }
  39.             }
  40.         }
  41.  
  42.         private static void CreateSketchPlane(View view)
  43.         {
  44.             if (view.SketchPlane != null)
  45.                 return;
  46.  
  47.             var document = view.Document;
  48.  
  49.             using (var transaction = new Transaction(document, "create view sketchplane"))
  50.             {
  51.                 transaction.Start();
  52.  
  53.                 var transform = view.CropBox.Transform;
  54.  
  55.                 var plane = Plane.CreateByNormalAndOrigin(transform.BasisZ, transform.Origin);
  56.  
  57.                 var sketchPlane = SketchPlane.Create(document, plane);
  58.                
  59.                 view.SketchPlane = sketchPlane;
  60.  
  61.                 transaction.Commit();
  62.             }
  63.         }
  64.  

Оффлайн enotАвтор темы

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: uidoc.Selection.PickElementsByRectangle => Rectangle
« Ответ #19 : 10-02-2019, 17:08:14 »
Все получилось, Спасибо!!