Тема: Длина полилинии

Привет Олл
Подскажи, как записать в переменную длину полилинии и
и как выделить из числа  - целое (напр. 34,6 надо - 34)

Re: Длина полилинии

1. Наверно, только считать по координатам точек (хотя, может я и ошибаюсь)
2. (fix 34.6) вернет 34. Внимание: это не округление числа, а отрезание дробной части.

Re: Длина полилинии

(setq et (car(entsel)))
(setq vla_object (vlax-ename->vla-object et))
(setq Perimeter(vlax-curve-getDistAtParam vla_object (vl-catch-all-apply 'vlax-curve-getEndParam (list vla_object))))

Re: Длина полилинии

(arxload "geomcal.arx" "File geomcal.arx not found")
(setq n  34.6 )
(c:cal (strcat "round" "(" (rtos n 2 4) ")"))
(c:cal (strcat "trunc" "(" (rtos n 2 4) ")"))

Re: Длина полилинии

Уважаемый shura-alex!
В приведенном примере вы используете vlax-функции, которые вычисляют значения параметра кривой. Что такое параметр, где можно найти полную информацию? Методом эксперимента сделал вывод, что для полилинии параметр - количество ее сегментов, для отрезка - длина, для окружности - 2*pi. А для других примитивов?

Re: Длина полилинии

Вам шашечки или чтобы ехать?:-))
Это для всех примитивов, у которых есть периметр, за исключением тех, у которых
(vla-get-perimeter vla_object)
Насколько я знаю - это только у регионов

Re: Длина полилинии

А можно по-подробнее. Что за vla ф-ии... Это лисп или
уже что-то другое. Есть ли инфа по ним.
И какой из двух примеров считает длину полилин-и.
(...возможно ли вытащить длину через Lengthen или List Автокада.)

Re: Длина полилинии

Функции VLA - это расширение языка ФвтоЛисп в сторону технологии ActiveX, то есть объектной модели Windows.
Если это интересно, прочти главу 7 книги Полещука "VisualLISP....".
Первый пример считает длину любго примитива.
Второй (более короткий) - периметр региона, т.к. для региона срабатывает функция  (vla-get-perimeter vla_object).
Через стандартные функции Акада все это тоже можно подсчитать.
Через Lengthen можно получить длину примитива, но только не для регионов. Для них надо использовать или _area или _massprop. Это еще проще, чем vla.
Но для стандартных комманд надо использовать (command ".....), что не всегда всем нравится. Ну, и наконец, __area, _massprop иди _list выдают результат в текстовое окно Акада. И получаются, что они хороши, но только не для программирования.

Re: Длина полилинии

Дополню немного. Команда AREA записывет площадь и периметр в системные переменные AREA и PERIMETER.

Re: Длина полилинии

В том-то все дело. А исходный вопрос был про присвоение переменным значений длины полилинии. Да и __area, _massprop или _list
"мусорные" очень. Это не всем нравится.

Re: Длина полилинии

Спасибо... Буду рыть дальше :))

Re: Длина полилинии

Ребят, а как найти длину полилинии из delphi? Полилиния с арками.