Как получить длину объекта Spline

Автор Тема: Как получить длину объекта Spline  (Прочитано 6846 раз)

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

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Нужно получить длину объекта Spline
Стандартной функции пока не нашел. Есть ли она в API?
Или нужно приложить голову для решения этой задачи.

Отмечено как Решение Алексей (IdeaSoft) 16-03-2016, 19:51:57

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Как получить длину объекта Spline
« Ответ #1 : 16-03-2016, 18:41:16 »
Код - C# [Выбрать]
  1. var length = spline.GetDistanceAtParameter(spline.EndParam) - spline.GetDistanceAtParameter(spline.StartParam);
« Последнее редактирование: 16-03-2016, 18:59:14 от Александр Ривилис »

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Как получить длину объекта Spline
« Ответ #2 : 16-03-2016, 19:02:55 »
Попробовал этот вариант длина возвращается 0.
EndParam  и StartParam что это за аргументы?

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Как получить длину объекта Spline
« Ответ #3 : 16-03-2016, 19:04:28 »
Попробовал этот вариант длина возвращается 0.
EndParam  и StartParam что это за аргументы?
Не может быть такого)) Я уже много лет его использую - всегда результативно

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13880
  • Карма: 1786
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Как получить длину объекта Spline
« Ответ #4 : 16-03-2016, 19:04:47 »
Алексей (IdeaSoft)
Код Александр Пекшев aka Modis годится не только для сплайнов, но и для всех примитивов, унаследованных от Curve. Т.е. отрезки - Line, дуги - Arc, полилинии - Polyline, Polyline2d, Polyline3d, сплайн - Spline и т.д. и т.п.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13880
  • Карма: 1786
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Как получить длину объекта Spline
« Ответ #5 : 16-03-2016, 19:05:31 »
EndParam  и StartParam что это за аргументы?
Это свойства в классе Curve.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13880
  • Карма: 1786
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Как получить длину объекта Spline
« Ответ #7 : 16-03-2016, 19:17:18 »
Кстати, вот готовый пример кода:
http://adn-cis.org/forum/index.php?topic=1043.msg4886#msg4886
В нём я пользуюсь тем, что для всех стандартных примитивов, унаследованных от Curve, значение GetDistanceAtParameter(curve.StartParam) равно 0.0
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Как получить длину объекта Spline
« Ответ #8 : 16-03-2016, 19:36:47 »
Не может быть такого)) Я уже много лет его использую - всегда результативно
Может я что-то не так делаю у меня получается.

spl.EndParam = 3.348
spl.StartParam = 0

Использую API acad 2012

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Как получить длину объекта Spline
« Ответ #9 : 16-03-2016, 19:56:21 »
Спасибо большое. Все получилось!
Это просто в коде у меня локальная переменная length
совпала с глобальной переменной от какого-то Me.Length, которая была =0
я поменял на dim L as Double = ... и все OK!