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

31/03/2015

Изменение размера области подрезки

Наблюдается странное поведение при изменении размера области подрезки.

Что я делал. Сначала я создал вид, затем установил область подрезки:

Код - C#: [Выделить]
  1. ViewFamilyType vTypeElev = Class1.getviewfamilytypes(
  2.     ViewFamily.FloorPlan, RevitDoc).First<ViewFamilyType>();
  3. var view = ViewPlan.Create(RevitDoc, vTypeElev.Id,
  4.     RevitDoc.ActiveView.GenLevel.Id);
  5. view.CropBoxActive = true;
  6. BoundingBoxXYZ box = new BoundingBoxXYZ();
  7. box.Min = new XYZ(100, 100, 0);
  8. box.Max = new XYZ(200, 200, 100);
  9. view.CropBox = box;

В этом случае все работает, как и ожидалось.

Однако, когда я только меняю область подрезки, без создания вида, то ничего не происходит.

Код - C#: [Выделить]
  1. var view = RevitDoc.ActiveView;
  2. BoundingBoxXYZ box = new BoundingBoxXYZ();
  3. box.Min = new XYZ(0, 0, 0);
  4. box.Max = new XYZ(100, 100, 100);
  5. view.CropBox = box;

Я попробовал тот же самый код на своем компьютере и, как ни странно, он работает. Я не уверен, почему так происходит.

Тем не менее, я могу предложить альтернативный вариант – использовать метод SetCropRegionShape класса ViewCropRegionShapeManager:

Код - C#: [Выделить]
  1. double length = 100;
  2. var view = RevitDoc.ActiveView;
  3. List<Curve> nl = new List<Curve>();
  4. XYZ p2 = new XYZ(0, 0, 0);
  5. XYZ p3 = new XYZ(length, 0, 0);
  6. XYZ p4 = new XYZ(length, length, 0);
  7. XYZ p5 = new XYZ(0, length, 0);
  8. nl.Add(Line.CreateBound(p2, p3));
  9. nl.Add(Line.CreateBound(p3, p4));
  10. nl.Add(Line.CreateBound(p4, p5));
  11. nl.Add(Line.CreateBound(p5, p2));
  12. CurveLoop cl = CurveLoop.Create(nl);
  13. ViewCropRegionShapeManager vpcr = view.GetCropRegionShapeManager();
  14. bool cropValid = vpcr.IsCropRegionShapeValid(cl);
  15. if (cropValid)
  16. {
  17.     vpcr.SetCropRegionShape(cl);
  18. }

Этот метод является более мощным и гибким, так как с помощью него можно задать не только прямоугольную область подрезки, но и область подрезки произвольного вида.

Источник: http://adndevblog.typepad.com/aec/2015/03/revitapi-how-to-resize-cropbox-of-view.html

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

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