ADN Club > Inventor API

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

(1/2) > >>

R.I.Chernov:
Доброго времени суток, уважаемые форумчане. Помогите пожалуйста разобраться в вопросе! Пытаюсь наложить совмещение на две точки, концы двух линий. Выдает ошибку.

--- Код - C# [Выбрать] ---public void Error(){    PartDocument oDoc = (PartDocument)oApp.Documents.Add(DocumentTypeEnum.kPartDocumentObject);    PartComponentDefinition oCD = oDoc.ComponentDefinition;    PlanarSketch sketch = oCD.Sketches.Add(oCD.WorkPlanes[1]);    TransientGeometry oTG = oApp.TransientGeometry;    SketchLine line1 =  sketch.SketchLines.AddByTwoPoints(oTG.CreatePoint2d(1, 1), oTG.CreatePoint2d(2, 2));    SketchLine line2 = sketch.SketchLines.AddByTwoPoints(oTG.CreatePoint2d(-1, -1), oTG.CreatePoint2d(-2, 2));     sketch.GeometricConstraints.AddCoincident((SketchEntity)line1.StartSketchPoint, (SketchEntity)line2.StartSketchPoint);     // можно, конечно, вот так заморочиться    // sketch.GeometricConstraints.AddCoincident((SketchEntity)line1.StartSketchPoint, (SketchEntity)line2);    // sketch.GeometricConstraints.AddCoincident((SketchEntity)line1, (SketchEntity)line2.StartSketchPoint);}
Единственная возможность выполнить задачу, которую я отыскал, попарно совместить концы отрезков с линиями (см. закомментированный код).
И вроде бы кучу времени уже потратил, и вроде как можно на одну строку больше писать, или обернуть во что-то и дальше двигаться! Но не могу успокоиться, вот прям разобраться хочу: это я что-то не так делаю? Или все-таки под капотом пользовательского интерфейса происходит именно совмещение точек с отрезками, когда мы как бы "совмещаем две точки"? Есть идеи?

R.I.Chernov:
Походу нужный метод SketchPoint.Merge(), графика немного глючит до обновления модели, но в целом работает.


--- Код - C# [Выбрать] ---public void Error(){    PartDocument oDoc = (PartDocument)oApp.Documents.Add(DocumentTypeEnum.kPartDocumentObject);    PartComponentDefinition oCD = oDoc.ComponentDefinition;    PlanarSketch sketch = oCD.Sketches.Add(oCD.WorkPlanes[1]);    TransientGeometry oTG = oApp.TransientGeometry;    SketchLine line1 = sketch.SketchLines.AddByTwoPoints(oTG.CreatePoint2d(1, 1), oTG.CreatePoint2d(2, 2));    SketchLine line2 = sketch.SketchLines.AddByTwoPoints(oTG.CreatePoint2d(-1, -1), oTG.CreatePoint2d(-2, 2));     line1.StartSketchPoint.Merge(line2.StartSketchPoint);}

mikazakov:
Оно и в пользовательском интерфейсе происходит слияние двух точек эскиза в одну точку.
В этом не трудно убедится если сначала изучить коллекцию точек в эскизе для двух не соединённых отрезков, затем через пользовательский интерфейс их соединить и снова посмотреть коллекцию точек и будет видно что точек стало на одну меньше, потому что две из них слились в одну.

R.I.Chernov:
Спасибо, Михаил. Но правильно ли я понимаю, что если я хочу наложить зависимость совмещениях конца линии эскиза, и конца линии внутри блока, то в таком случае «слияния точек» невозможно, и тогда требуется наложить именно зависимость методом GeometricConstraints.AddCoincident()?

mikazakov:

--- Цитата: R.I.Chernov от 02-07-2021, 22:34:28 ---то в таком случае «слияния точек» невозможно, и тогда требуется наложить именно зависимость методом GeometricConstraints.AddCoincident()?
--- Конец цитаты ---
Ну раз пользовательский интерфейс в данном случае "не сливает" точки в одну, да в случае работы с блоком нужно геометрическую зависимость накладывать через GeometricConstraints.AddCoincident()

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии