Revit API: изменение направления и глубины сечения - PullRequest
0 голосов
/ 16 октября 2018

Я совершенно новичок в Revit API, и я почесал голову с видом в разрезе.У меня есть идея для создания вида сечения из этого:

http://thebuildingcoder.typepad.com/blog/2011/07/section-view-creation.html

Однако, независимо от того, что я делаю, кажется, что я не могу определить направление обзора и «глубину» моеговид в разрезе.Результатом всегда является вид в разрезе, который позволяет мне смотреть снизу вверх (направление взгляда = (0,0, -1)), и я всегда вижу поверхность модели вместо чистого разреза ее ядра.

Поскольку свойства вида, направления вверх и направления вправо вида не имеют set (), я предполагаю, что я могу добиться только того, что хочу, в процессе создания вида сечения.

Iпопытался изменить вид ограничительной рамки, точки минимума и максимума на ограничительной рамке ... но результат тот же.Вот мой код

private void CreateSectionView(FamilyInstance beam)
    {
        // I tried to change the input view here
        View view = new FilteredElementCollector(_doc)
                        .OfCategory(BuiltInCategory.OST_Views)
                        .OfType<View>()
                        .FirstOrDefault(x => x.Name.Equals("East"));

        BoundingBoxXYZ boxXYZ = beam.get_BoundingBox(view);
        // determine the size of the box
        double length = boxXYZ.Max.X - boxXYZ.Min.X;
        double width = boxXYZ.Max.Y - boxXYZ.Min.Y;
        double height = boxXYZ.Max.Z - boxXYZ.Min.Z;

        // determine min point and max point
        // I tried to changed values here
        XYZ maxPt = new XYZ(length, width, 0);
        XYZ minPt = new XYZ(0, 0, height);
        XYZ middle = (boxXYZ.Max + boxXYZ.Min) / 2;

        // crate transform 
        // tried here
        Transform transform = Transform.Identity;
        transform.BasisX = XYZ.BasisX;
        transform.BasisY = XYZ.BasisZ;
        transform.BasisZ = XYZ.BasisY.Negate();
        transform.Origin = middle;

        // crate bounding box for section view
        BoundingBoxXYZ box = new BoundingBoxXYZ();
        box.Max = maxPt;
        box.Min = minPt;
        box.Transform = transform;


        // create a bounding box
        ElementId viewTypeId = GetSectionViewTypeId(ViewFamily.Section);
        ViewSection sectionView = ViewSection.CreateSection(_doc, viewTypeId, boxXYZ);            
    }

Что я пропустил или сделал не так?Как я могу добиться того, чего хочу (смотреть на элемент под другим углом, кроме взгляда снизу вверх и с разрезом в его ядре)?

...