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); }
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(); }