Exemplo n.º 1
0
            public override void Do()
            {
                if (IsDone)
                {
                    throw new Exception("CBuildLineAction already was done (new line id: " + createdLineView.Model.Id + ")");
                }

                bool isAnjoinedLine = IsBuildToLine
                    ? point1.Value.Model.Contains(segment.Value.Owner.Model)
                    : point1.Value.Model.GetCommonLine(point2.Value.Model) != null;

                if (isAnjoinedLine) // выйти, если новая линия будет совпадать с какой-либо существующей
                {
                    return;
                }

                // если были выбраны точка и отрезок, создать вторую точку
                if (IsBuildToLine)
                {
                    divideAction.Do();
                    var newPoint = segment.Value.Owner.PointAt(segment.Value.IndexInLine + 1);
                    point2 = new CVPointWrap(Owner, newPoint);
                }

                CMLine line     = Owner.model.CreateLine(point1.Id, point2.Id);
                var    lineView = Owner.lineViewDict[line.Id];

                createdLineView = lineView;
            }
Exemplo n.º 2
0
        // обработчик события создания прямой модели
        private void Model_LineCreated(CMShape shape, CMLine line)
        {
            // создание вида для очередной линии
            CVLine lineView = new CVLine(linesObj, line);

            lineView.Selected += LineView_Selected;
            for (int j = 0; j < line.PointsCount; j++)
            {
                lineView.AddPoint(pointViewDict[line.PointAt(j).Id]);
            }
            lineViewDict.Add(line.Id, lineView);
        }
Exemplo n.º 3
0
 public CVLine(Transform segmentsOwner, CMLine model)
 {
     Model         = model;
     SegmentsOwner = segmentsOwner;
 }