//--------------------------------------------------------------------------------------------------

        #endregion

        #region Updating

        public void UpdateShape()
        {
            if (_AisShape == null)
            {
                _EnsureAisObject();
                _UpdateInteractivityStatus();
            }
            else
            {
                var ocShape = OverrideBrep ?? _ShapeSource.GetTransformedBRep();
                if (ocShape != null)
                {
                    if (_AisShape.Shape().ShapeType() != ocShape.ShapeType())
                    {
                        // If shape type changes, recompute can lead to crashes. It's better to redisplay AIS_Shape
                        Remove();
                        UpdateShape();
                    }
                    else
                    {
                        _AisShape.Set(ocShape);
                        _UpdatePresentation();
                        AisContext.RecomputeSelectionOnly(_AisShape);
                        _UpdateSelectionSensitivity();
                    }
                }
                else
                {
                    _UpdateMarker();
                }
            }
        }
示例#2
0
        //--------------------------------------------------------------------------------------------------

        public void UpdateVisualShape(InteractiveEntity entity)
        {
            if (!entity.IsVisible)
            {
                RemoveShape(entity);
                return;
            }

            var visualShape = GetVisualShape(entity);

            if (visualShape == null)
            {
                AddVisualShape(entity);
                return;
            }

            var ocShape = entity.GetTransformedBRep();

            if (ocShape != null)
            {
                foreach (var item in _BRepToInteractiveDictionary.Where(kvp => kvp.Value == entity).ToList())
                {
                    _BRepToInteractiveDictionary.Remove(item.Key);
                }

                _BRepToInteractiveDictionary.Add(ocShape, entity);
            }

            visualShape.UpdateShape();
        }
示例#3
0
        //--------------------------------------------------------------------------------------------------

        public VisualShape AddVisualShape(InteractiveEntity entity)
        {
            foreach (var item in _BRepToInteractiveDictionary.Where(kvp => kvp.Value == entity).ToList())
            {
                _BRepToInteractiveDictionary.Remove(item.Key);
            }

            var ocShape = entity.GetTransformedBRep();

            if (ocShape != null)
            {
                _BRepToInteractiveDictionary.Add(ocShape, entity);

                var visualShape = GetVisualShape(entity);
                if (visualShape != null)
                {
                    visualShape.UpdateShape();
                }
                else
                {
                    visualShape = new VisualShape(_WorkspaceController, entity);
                    _InteractiveToVisualShapeDictionary.Add(entity, visualShape);
                }

                return(visualShape);
            }
            return(null);
        }