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