private void Data_AnyPropertyChanged(object sender, EventArgs e)
        {
            foreach (SummaryProperty summaryProperty in this)
            {
                foreach (SmartEntityProperty property in summaryProperty.EntityPropertyDataCollection)
                {
                    OnPropertyChanged(new PropertyChangedEventArgs(property.Name));
                }
            }

            if (_hasObjectOnLockedLayer)
            {
                _hasObjectOnLockedLayer = false;
                OnLockedLayerEventHandler?.Invoke(this, EventArgs.Empty);

                // Один или несколько объектов расположены на заблокированном слое, обновить их невозможно
                MessageBox.Show(Language.GetItem("mpESKD", "h104"), MessageBoxIcon.Alert);
            }
        }
示例#2
0
        private void Property_PropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            if (_isModifiedFromAutocad)
            {
                return;
            }

            Overrule.Overruling = false;
            var intellectualEntityProperty = (IntellectualEntityProperty)sender;

            try
            {
                using (AcadUtils.Document.LockDocument())
                {
                    using (var blockReference = _blkRefObjectId.Open(OpenMode.ForWrite, true, true) as BlockReference)
                    {
                        var entityType   = _intellectualEntity.GetType();
                        var propertyInfo = entityType.GetProperty(intellectualEntityProperty.Name);
                        if (propertyInfo != null)
                        {
                            if (intellectualEntityProperty.Name == "Style")
                            {
                                var style = StyleManager.GetStyleByName(entityType, intellectualEntityProperty.Value.ToString());
                                if (style != null)
                                {
                                    _intellectualEntity.ApplyStyle(style, false);
                                }
                            }
                            else if (intellectualEntityProperty.Name == "LayerName")
                            {
                                if (blockReference != null)
                                {
                                    blockReference.Layer = intellectualEntityProperty.Value.ToString();
                                }
                            }
                            else if (intellectualEntityProperty.Name == "LineType")
                            {
                                if (blockReference != null)
                                {
                                    blockReference.Linetype = intellectualEntityProperty.Value.ToString();
                                }
                            }
                            else
                            {
                                propertyInfo.SetValue(_intellectualEntity, intellectualEntityProperty.Value);
                            }

                            _intellectualEntity.UpdateEntities();
                            _intellectualEntity.GetBlockTableRecordWithoutTransaction(blockReference);
                            using (var resBuf = _intellectualEntity.GetDataForXData())
                            {
                                if (blockReference != null)
                                {
                                    blockReference.XData = resBuf;
                                }
                            }

                            if (blockReference != null)
                            {
                                blockReference.ResetBlock();
                            }
                        }
                    }
                }

                Autodesk.AutoCAD.Internal.Utils.FlushGraphics();
            }
            catch (System.Exception exception)
            {
                if (exception.Message != "eOnLockedLayer")
                {
                    ExceptionBox.Show(exception);
                }
                else
                {
                    OnLockedLayerEventHandler?.Invoke(this, intellectualEntityProperty);
                }
            }

            Overrule.Overruling = true;
        }