コード例 #1
0
            /// <summary>
            /// Added a coordinate
            /// </summary>
            internal void AddedCoordinate(IList <Coordinate> coordinates, Coordinate lastCoordinate)
            {
                if (coordinates.Count == 1)
                {
                    // Create the new dimBaseElement, which holds the direction
                    _baseElement = new DimBaseElement()
                    {
                        Start = lastCoordinate, End = lastCoordinate, Transform = this.Transform, CoordinateSystem = this.CoordinateSystem, CSUnitsPerPixel = _csUnitsPerPixel
                    };

                    // Force recalculation
                    _baseElement.RecalculateCurvesAndAnnotations(false);
                    _measureElements.Clear();
                }
                else if (coordinates.Count == 2)
                {
                    // Set the base element's last coordinate
                    if (_baseElement != null)
                    {
                        _baseElement.End = lastCoordinate;
                        _baseElement.RecalculateCurvesAndAnnotations(true);
                    }
                    _measureElements.Clear();
                }
                else
                {
                    // Add extra elements
                    if (_measureElements.Count > 0)
                    {
                        // Reverse the lot in case the added coordinate actually is invalid
                        // (invalid means it is placed before the last coordinate).
                        if (_measureElements.Count == 1 && !_measureElements[0].Valid)
                        {
                            Reverse();
                        }

                        var last = _measureElements[_measureElements.Count - 1];

                        last.End = lastCoordinate;
                        last.RecalculateCurvesAndAnnotations(true);
                    }

                    // Add the new element
                    Coordinate lastElementCoordinate = _measureElements.Count > 0 ? _measureElements[_measureElements.Count - 1].Intermediate : _baseElement.End;
                    bool       first             = _measureElements.Count == 0;
                    var        newMeasureElement = new DimMeasureElement()
                    {
                        Base = _baseElement, Start = lastElementCoordinate, End = lastCoordinate, Transform = this.Transform, CoordinateSystem = this.CoordinateSystem, First = first, CSUnitsPerPixel = _csUnitsPerPixel
                    };
                    newMeasureElement.RecalculateCurvesAndAnnotations(true);
                    _measureElements.Add(newMeasureElement);
                }
            }
コード例 #2
0
            /// <summary>
            /// Deleted a coordinate
            /// </summary>
            internal void DeletedCoordinate(IList <Coordinate> coordinates, Coordinate lastCoordinate)
            {
                if (coordinates.Count == 0)
                {
                    // No elements left
                    _baseElement = null;
                    _measureElements.Clear();
                }
                else if (coordinates.Count == 1)
                {
                    // Set the base elements last coordinate
                    _baseElement.End = lastCoordinate;
                    _baseElement.RecalculateCurvesAndAnnotations(false);
                    _measureElements.Clear();
                }
                else
                {
                    // Remove the last coordinates
                    while (_measureElements.Count > coordinates.Count - 1)
                    {
                        _measureElements.RemoveAt(_measureElements.Count - 1);
                    }

                    int coordsCount  = coordinates.Count;
                    int measureCount = _measureElements.Count;

                    if (measureCount < coordsCount - 1)
                    {
                        // Not enough measure stuff
                        var newMeasureElement = new DimMeasureElement()
                        {
                            Base = _baseElement, End = lastCoordinate, Transform = this.Transform, CoordinateSystem = this.CoordinateSystem, CSUnitsPerPixel = _csUnitsPerPixel
                        };
                        newMeasureElement.RecalculateCurvesAndAnnotations(true);
                        _measureElements.Add(newMeasureElement);
                    }
                    else
                    {
                        var element = _measureElements[measureCount - 1];
                        element.End = lastCoordinate;
                        element.RecalculateCurvesAndAnnotations(true);
                    }
                }
            }
コード例 #3
0
 /// <summary>
 /// Clear the elements
 /// </summary>
 internal void Clear()
 {
     _baseElement = null;
     _measureElements.Clear();
 }