Сообщество программистов Autodesk в СНГ

ADN Club => Inventor API => Тема начата: izhgtumekhanik от 07-09-2023, 01:46:12

Название: Как создать замкнытй сплайн?
Отправлено: izhgtumekhanik от 07-09-2023, 01:46:12
Добрый вечер.

Не как не могу найти способ создать замкнутый сплайн по точкам.

Код - Python [Выбрать]
  1. oSpline = oSketch.SketchControlPointSplines.Add(objCollection)
  2. oSpline.IsClosed = True #ожидаемая ошибка

Название: Re: Как создать замкнытй сплайн?
Отправлено: mikazakov от 07-09-2023, 06:01:51
Ну дак в описании написано же oSpline.IsClosed - ReadOnly
Возможно последняя точка в передаваемой коллекции должна совпадать с первой.
На самом сплайне есть еще свойство SketchSpline.Closed вот возможно это свойство надо сделать True
Название: Re: Как создать замкнытй сплайн?
Отправлено: izhgtumekhanik от 07-09-2023, 10:13:22
Closed - нет такой функции и у меня выдает соответствующую ошибку.

https://help.autodesk.com/view/INVNTOR/2021/ENU/?guid=GUID-0A3B1F93-4FE0-42CA-99E7-DA3B188191E9

я пробовал соединить точки координатами и затем наложить привязку и сплайн не так выглядит как должен выглядеть.
Название: Re: Как создать замкнытй сплайн?
Отправлено: mikazakov от 07-09-2023, 11:00:49
Дак не в SketchControlPointSpline а в SketchSpline, видимо нужно сначала сплайн создать а потом его замкнуть
Название: Re: Как создать замкнытй сплайн?
Отправлено: izhgtumekhanik от 07-09-2023, 11:03:13
Дак не в SketchControlPointSpline а в SketchSpline

Получается в SketchControlPointSpline нет такой возможности?

Создал и все построилось и затем Closed - выдает ошибку.

Код - Python [Выбрать]
  1. objCollection= AppInvCom.TransientObjects.CreateObjectCollection()
  2.     for nm in dataPoint:
  3.      x = nm[0]/10
  4.      y = nm[1]/10
  5.      objCollection.Add(oTG.CreatePoint2d(x, y))
  6.  
  7. oSpline = oSketch.SketchControlPointSplines.Add(objCollection)
  8. oSpline.Closed = True #тут ошибка
Название: Re: Как создать замкнытй сплайн?
Отправлено: mikazakov от 07-09-2023, 11:05:19
а в ручную сплайн замкнуть можно через пользовательский интерфейс?
Название: Re: Как создать замкнытй сплайн?
Отправлено: izhgtumekhanik от 07-09-2023, 11:07:12
а в ручную сплайн замкнуть можно через пользовательский интерфейс?

Да, и все так как нужно выглядит.
Название: Re: Как создать замкнытй сплайн?
Отправлено: izhgtumekhanik от 08-09-2023, 21:21:32
Я слышал про опцию - автосопряжение, те при совпадении концов отрезков идет автоматический подбор сопряжения.
Название: Re: Как создать замкнытй сплайн?
Отправлено: mikazakov от 08-09-2023, 21:35:19
точки можно соединить через CoincidentConstraint
Название: Re: Как создать замкнытй сплайн?
Отправлено: izhgtumekhanik от 11-09-2023, 10:31:18
CoincidentConstraint не даст же добавить коллинеарность двух концов сплайна.

1 вариант:  (Сплайн почти идентичен.)

Код - Python [Выбрать]
  1. oSpline = oSketch.SketchControlPointSplines.Add(points)
  2.  
  3. oSpline = oSpline.ConvertToSpline()
  4. oSpline.Closed = True

2 вариант (CoincidentConstraint):  почему он не работает ?

Код - Python [Выбрать]
  1.     oSpline = oSketch.SketchControlPointSplines.Add(points)
  2.    
  3.     # startPoint = oSpline.ControlPoint(1)
  4.     startPoint = oSpline.StartSketchPoint
  5.     # startPoint = inventorApiV21.SketchPoint(startPoint)
  6.     # # startPoint = oSketch.SketchPoints.Add(startPoint)
  7.    
  8.     # endPoint = oSpline.ControlPoint(oSpline.ControlPointCount)
  9.     endPoint = oSpline.EndSketchPoint
  10.     # endPoint = inventorApiV21.SketchPoint(endPoint)
  11.     # # endPoint = oSketch.SketchPoints.Add(endPoint)
  12.        
  13.     coincident_constraint = oSketch.GeometricConstraints.AddCoincident(startPoint, endPoint)
Название: Re: Как создать замкнытй сплайн?
Отправлено: izhgtumekhanik от 15-09-2023, 00:50:30
Я так понимаю CoincidentConstraint вообще не как не работает со сплайном по точкам ?
Название: Re: Как создать замкнытй сплайн?
Отправлено: mikazakov от 15-09-2023, 11:31:21
В пользовательском интерфейсе работает, и через АПИ должно, если там только глюков нет.
Можно на англоязычном автодесковском форуме вопрос задать по замкнутому сплайну, там автодесковцы может что и ответят.