Как создать замкнытй сплайн?

Автор Тема: Как создать замкнытй сплайн?  (Прочитано 6061 раз)

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

Оффлайн izhgtumekhanikАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 54
  • Карма: 0
  • Skype: izhgtumekhanik@gmail.com
Добрый вечер.

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

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


Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Как создать замкнытй сплайн?
« Ответ #1 : 07-09-2023, 06:01:51 »
Ну дак в описании написано же oSpline.IsClosed - ReadOnly
Возможно последняя точка в передаваемой коллекции должна совпадать с первой.
На самом сплайне есть еще свойство SketchSpline.Closed вот возможно это свойство надо сделать True

Оффлайн izhgtumekhanikАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 54
  • Карма: 0
  • Skype: izhgtumekhanik@gmail.com
Re: Как создать замкнытй сплайн?
« Ответ #2 : 07-09-2023, 10:13:22 »
Closed - нет такой функции и у меня выдает соответствующую ошибку.

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

я пробовал соединить точки координатами и затем наложить привязку и сплайн не так выглядит как должен выглядеть.
« Последнее редактирование: 07-09-2023, 10:49:00 от izhgtumekhanik »

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Как создать замкнытй сплайн?
« Ответ #3 : 07-09-2023, 11:00:49 »
Дак не в SketchControlPointSpline а в SketchSpline, видимо нужно сначала сплайн создать а потом его замкнуть

Оффлайн izhgtumekhanikАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 54
  • Карма: 0
  • Skype: izhgtumekhanik@gmail.com
Re: Как создать замкнытй сплайн?
« Ответ #4 : 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 #тут ошибка

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Как создать замкнытй сплайн?
« Ответ #5 : 07-09-2023, 11:05:19 »
а в ручную сплайн замкнуть можно через пользовательский интерфейс?

Оффлайн izhgtumekhanikАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 54
  • Карма: 0
  • Skype: izhgtumekhanik@gmail.com
Re: Как создать замкнытй сплайн?
« Ответ #6 : 07-09-2023, 11:07:12 »
а в ручную сплайн замкнуть можно через пользовательский интерфейс?

Да, и все так как нужно выглядит.

Оффлайн izhgtumekhanikАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 54
  • Карма: 0
  • Skype: izhgtumekhanik@gmail.com
Re: Как создать замкнытй сплайн?
« Ответ #7 : 08-09-2023, 21:21:32 »
Я слышал про опцию - автосопряжение, те при совпадении концов отрезков идет автоматический подбор сопряжения.

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Как создать замкнытй сплайн?
« Ответ #8 : 08-09-2023, 21:35:19 »
точки можно соединить через CoincidentConstraint

Оффлайн izhgtumekhanikАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 54
  • Карма: 0
  • Skype: izhgtumekhanik@gmail.com
Re: Как создать замкнытй сплайн?
« Ответ #9 : 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)
« Последнее редактирование: 15-09-2023, 00:38:37 от izhgtumekhanik »

Оффлайн izhgtumekhanikАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 54
  • Карма: 0
  • Skype: izhgtumekhanik@gmail.com
Re: Как создать замкнытй сплайн?
« Ответ #10 : 15-09-2023, 00:50:30 »
Я так понимаю CoincidentConstraint вообще не как не работает со сплайном по точкам ?

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Как создать замкнытй сплайн?
« Ответ #11 : 15-09-2023, 11:31:21 »
В пользовательском интерфейсе работает, и через АПИ должно, если там только глюков нет.
Можно на англоязычном автодесковском форуме вопрос задать по замкнутому сплайну, там автодесковцы может что и ответят.