Пример #1
0
 public CMAngle(int id, CMLine line1, CMLine line2, int?angle = null) : base(line1.Owner, id)
 {
     Line1      = line1;
     Line2      = line2;
     Point      = line1.GetCommonPoint(line2);
     this.angle = angle;
 }
Пример #2
0
 public void Detach(CMLine line)
 {
     lines.Remove(line.Id);
     if (line.Contains(this))
     {
         line.Detach(this);
     }
 }
Пример #3
0
        private bool disposed = false; // Для определения избыточных вызовов
        #endregion

        public void Attach(CMLine line)
        {
            // неизвестно куда вставлять точку, так что она должна быть уже вставлена в линию
            if (!line.Contains(this))
            {
                throw new Exception("Line hasn't point yet (point id: " + Id + ", line id: " + line.Id + ")");
            }
            lines.Add(line.Id, line);
        }
Пример #4
0
        private CMAngle CreateAngle(int id, CMLine line1, CMLine line2, int?angle = null)
        {
            var model = new CMAngle(id, line1, line2, angle);

            relations.Add(model.Id, model);
            if (AngleCreated != null)
            {
                AngleCreated(this, model);
            }
            return(model);
        }
Пример #5
0
        private CMLine CreateLine(int id, IEnumerable <int> pointsId)
        {
            CMLine line = new CMLine(this, id, pointsId);

            primitives.Add(line.Id, line);
            if (LineCreated != null)
            {
                LineCreated(this, line);
            }
            return(line);
        }
Пример #6
0
 public bool Contains(CMLine line)
 {
     return(lines.ContainsKey(line.Id));
 }
Пример #7
0
 public CMPoint GetCommonPoint(CMLine line)
 {
     return(pointsDict.Values.FirstOrDefault(point => point.Contains(line)));
 }
Пример #8
0
 public void Detach(CMLine line)
 {
     lines.Remove(line.Id);
 }
Пример #9
0
        private bool disposed = false; // Для определения избыточных вызовов
        #endregion

        #region ILineLinkable Support
        public void Attach(CMLine line)
        {
            lines.Add(line.Id, line);
        }
Пример #10
0
 public CMAngle CreateAngle(CMLine line1, CMLine line2, int?angle = null)
 {
     return(CreateAngle(nextId++, line1, line2, angle));
 }