Ошибка совмещения точек в эскизе.

Автор Тема: Ошибка совмещения точек в эскизе.  (Прочитано 1713 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 554
  • Карма: 18
Доброго времени суток, уважаемые форумчане. Помогите пожалуйста разобраться в вопросе! Пытаюсь наложить совмещение на две точки, концы двух линий. Выдает ошибку.
Код - C# [Выбрать]
  1. public void Error()
  2. {
  3.     PartDocument oDoc = (PartDocument)oApp.Documents.Add(DocumentTypeEnum.kPartDocumentObject);
  4.     PartComponentDefinition oCD = oDoc.ComponentDefinition;
  5.     PlanarSketch sketch = oCD.Sketches.Add(oCD.WorkPlanes[1]);
  6.     TransientGeometry oTG = oApp.TransientGeometry;
  7.     SketchLine line1 =  sketch.SketchLines.AddByTwoPoints(oTG.CreatePoint2d(1, 1), oTG.CreatePoint2d(2, 2));
  8.     SketchLine line2 = sketch.SketchLines.AddByTwoPoints(oTG.CreatePoint2d(-1, -1), oTG.CreatePoint2d(-2, 2));
  9.  
  10.     sketch.GeometricConstraints.AddCoincident((SketchEntity)line1.StartSketchPoint, (SketchEntity)line2.StartSketchPoint);
  11.  
  12.     // можно, конечно, вот так заморочиться
  13.     // sketch.GeometricConstraints.AddCoincident((SketchEntity)line1.StartSketchPoint, (SketchEntity)line2);
  14.     // sketch.GeometricConstraints.AddCoincident((SketchEntity)line1, (SketchEntity)line2.StartSketchPoint);
  15. }

Единственная возможность выполнить задачу, которую я отыскал, попарно совместить концы отрезков с линиями (см. закомментированный код).
И вроде бы кучу времени уже потратил, и вроде как можно на одну строку больше писать, или обернуть во что-то и дальше двигаться! Но не могу успокоиться, вот прям разобраться хочу: это я что-то не так делаю? Или все-таки под капотом пользовательского интерфейса происходит именно совмещение точек с отрезками, когда мы как бы "совмещаем две точки"? Есть идеи?
В программировании я новичок...но ненадолго! ;)

Отмечено как Решение R.I.Chernov 01-07-2021, 18:47:20

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 554
  • Карма: 18
Re: Ошибка совмещения точек в эскизе.
« Ответ #1 : 01-07-2021, 18:47:17 »
Походу нужный метод SketchPoint.Merge(), графика немного глючит до обновления модели, но в целом работает.

Код - C# [Выбрать]
  1. public void Error()
  2. {
  3.     PartDocument oDoc = (PartDocument)oApp.Documents.Add(DocumentTypeEnum.kPartDocumentObject);
  4.     PartComponentDefinition oCD = oDoc.ComponentDefinition;
  5.     PlanarSketch sketch = oCD.Sketches.Add(oCD.WorkPlanes[1]);
  6.     TransientGeometry oTG = oApp.TransientGeometry;
  7.     SketchLine line1 = sketch.SketchLines.AddByTwoPoints(oTG.CreatePoint2d(1, 1), oTG.CreatePoint2d(2, 2));
  8.     SketchLine line2 = sketch.SketchLines.AddByTwoPoints(oTG.CreatePoint2d(-1, -1), oTG.CreatePoint2d(-2, 2));
  9.  
  10.     line1.StartSketchPoint.Merge(line2.StartSketchPoint);
  11. }
В программировании я новичок...но ненадолго! ;)

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 658
  • Карма: 169
  • Skype: mikazakov@mail.ru
Re: Ошибка совмещения точек в эскизе.
« Ответ #2 : 02-07-2021, 21:14:53 »
Оно и в пользовательском интерфейсе происходит слияние двух точек эскиза в одну точку.
В этом не трудно убедится если сначала изучить коллекцию точек в эскизе для двух не соединённых отрезков, затем через пользовательский интерфейс их соединить и снова посмотреть коллекцию точек и будет видно что точек стало на одну меньше, потому что две из них слились в одну.

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 554
  • Карма: 18
Re: Ошибка совмещения точек в эскизе.
« Ответ #3 : 02-07-2021, 22:34:28 »
Спасибо, Михаил. Но правильно ли я понимаю, что если я хочу наложить зависимость совмещениях конца линии эскиза, и конца линии внутри блока, то в таком случае «слияния точек» невозможно, и тогда требуется наложить именно зависимость методом GeometricConstraints.AddCoincident()?
В программировании я новичок...но ненадолго! ;)

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 658
  • Карма: 169
  • Skype: mikazakov@mail.ru
Re: Ошибка совмещения точек в эскизе.
« Ответ #4 : 03-07-2021, 18:38:41 »
то в таком случае «слияния точек» невозможно, и тогда требуется наложить именно зависимость методом GeometricConstraints.AddCoincident()?
Ну раз пользовательский интерфейс в данном случае "не сливает" точки в одну, да в случае работы с блоком нужно геометрическую зависимость накладывать через GeometricConstraints.AddCoincident()

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 554
  • Карма: 18
Re: Ошибка совмещения точек в эскизе.
« Ответ #5 : 04-07-2021, 19:27:55 »
Ок, спасибо.
В программировании я новичок...но ненадолго! ;)