public static void Run()
        {
            //Find items within a specified volume
            Position  p1        = Position.Create(0.0, 0.0, 0.0);
            Position  p2        = Position.Create(10000.0, 10000.0, 10000.0);
            LimitsBox limitsBox = LimitsBox.Create(p1, p2);

            DbElement[] eles = Spatial.Instance.ElementsInBox(limitsBox, false);
            int         size = eles.Length;

            //Find items fully within a specified volum
            eles = Spatial.Instance.ElementsInBox(limitsBox, true);
            size = eles.Length;

            //Find items within the 3D box of a given item
            eles = Spatial.Instance.ElementsInElementBox(Example.Instance.mEqui, false);
            size = eles.Length;

            //Find items fully within the 3D box of a given item
            eles = Spatial.Instance.ElementsInElementBox(Example.Instance.mEqui, true);
            size = eles.Length;

            //Determine if the item lies within or intersects with the given 3D box
            bool bResult = Spatial.Instance.ElementInBox(Example.Instance.mEqui, limitsBox);

            //Determine if the item lies within or intersects with the given 3D box of a second element
            bResult = Spatial.Instance.ElementInElementBox(Example.Instance.mEqui, Example.Instance.mBran);
        }
示例#2
0
        public void Zoom(string element, string distance)
        {
            var dbElement = DbElement.GetElement(element);
            var volume    = dbElement.GetDoubleArray(DbAttributeInstance.WVOL);
            var lb        = LimitsBox.Create(Position.Create(volume[0], volume[1], volume[2]),
                                             Position.Create(volume[3], volume[4], volume[5]));

            lb.ExpandBy(DbDouble.Create(distance).Value);
            var limit = new[]
            {
                lb.Minimum.X / 2, lb.Maximum.X / 2,
                lb.Minimum.Y / 2, lb.Maximum.Y / 2,
                lb.Minimum.Z / 2, lb.Maximum.Z / 2
            };

            View3DManager.Instance.CurrentView.SetViewLimits(limit);
            var direction      = View3DManager.Instance.CurrentView.GetDirection();
            var curentPosition = lb.Centre();
            var viewPosition   = new[] { curentPosition.X, curentPosition.Y, curentPosition.Z };

            View3DManager.Instance.CurrentView.SetCentreAndDir(viewPosition, direction);
            View3DManager.Instance.CurrentView.SetThruPoint(viewPosition);
            View3DManager.Instance.CurrentView.UpdateView();
        }