Перейти к содержанию
Аккорд

определение общей длины нескольких отрезков

Рекомендуемые сообщения

Возможно вопрос детский, но нигде не могу найти функции определение общей длины нескольких отрезков. Ну, то есть, если в Автокаде мне необходимо узнать общую длину скажем 10-ти отрезков мне было достаточно их выделить нажать "свойства" и в свойствах отображалась общая (суммарная) длина этих 10-ти отрезков. Подскажите пож. реализовано ли что-то подобное в nanocad?

P.S. nanocad 5.1. Free

Изменено пользователем Аккорд

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

насколько показывают эксперименты - нет. и дело не в антикварном нанокаде 5.1

теоретически - ноль проблем. практически...  я запросто могу представить, зачем это может понадобиться. но есть нюанс...
есть пресловутый инспектор (который свойства). он показывает свойства выбранных объектов. если их несколько - то можно попробовать показать их куммулятивные свойства. вопрос только в том, как их сосчитать? объекты бывают сугубо разные, а свойство - одно на всех.

вот загрузил я здоровенный чертеж. нажал "выбрать все". а там и линии, и кружочки, и размеры и черт лысый. и что я должен показать вместо длины?
вот для текста, например - что? кому-то понадобится длина бэйзлайна  - это допустим, выглядит логично. а как только это делается многострочный текст - это уже становится логично гораздо меньше. а то еще и кому-то захочется увидеть длину контура буквы (а если это тру-тайп - то еще и площадь)...

собственно, вопрос совершенно законный - и отчасти даже логичный. но... куммулятивные свойства - штука очень сильно неоднозначная. и, к слову сказать, небыстрая.
если речь идет о глобальном механизме, который аж прямо встроен - для него должны быть сформулированы понятные и адекватные правила. мы вполне можем высосать их из пальца - но едва ли это правильно.
вот для примера - только общая длина линий? а чего это! полилинии тоже надо учесть. а у полилиний есть дуговые сегменты - значит считаем и дуги... а раз дуги - то и окружности тоже не стоит обходить стороной.  а там в очереди стоят эллипсы со сплайнами, а также спирали и прочие кривые - а чем они хуже? а еще у меня трехмерка есть - там у каждого тела есть ребра... считаем? или как? и если считаем - то у цилинда считаем что - две длины окружности по торцам, или еще и боковинку?

а кто-то захочет площадь... а ее как считать - только для замкнутых кривых, или для трех отдельных линий, которые треугольник образуют тоже?
и для плоского замкнутого сплайна посчитать площадь не фокус, хоть и не быстро - а если он пространственный?

а дальше объемы подойдут...

в общем, это я все к чему хорошего универсального решения - тут не видится. если я не прав - аппелирйуте, обсудим.
а для любой частной задачки... сосчитать длину кусочком скрипта - не фокус. единственный вопрос - а как сосчитать длину RAY\XLINE, которые бесконечны по определению :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это все-таки антикварный нанокад 5.1. Не помню, в какой версии добавили. Но сейчас есть команды ОБЩДЛ и ОБЩПЛ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Благодарю за ответы. Возможно я не разобрался, но тему с антикварной версией я не понял... Я решил попробовать поработать в nanocad, вошел на оф сайт увидел версии доступные для скачивания. Версий доступных для скачивания по сути 2: NANOCAD PLUS 20.0  и 

NANOCAD 5.1 . Рассудив что для двухмерного проектирования "на попробовать"  достаточно версии без "3D моделирование и зависимости" и скачал NANOCAD 5.1 . Я и предположить не мог что в разделе оф сайта могут быть устаревшие версии. Что я сделал не так? Нужно было качать NANOCAD PLUS 20.0 ?  По поводу ответа Lion007 : мне кажется Вы усложняете... В 90 % задач достаточно общей длины однотипных объектов (отрезок+ дуга или суммарная длина полилиний) либо же площади/периметра замкнутых объектов

Изменено пользователем Аккорд

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
5 часов назад, Аккорд сказал:

Возможно я не разобрался, но тему с антикварной версией я не понял...

- nanoCAD 5.1 это бесплатная версия которая не обновлялась лет этак 6.

- nanoCAD 20 это современная платформа. чтобы сложилось впечатление о nanoCAD сегодняшнего дня надо смотреть ее. и да конечно она платная. все модули в т.ч. 3D моделирования опциональны и не обязательны к приобретению/использованию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 08.05.2020 в 18:05, Аккорд сказал:

Возможно вопрос детский, но нигде не могу найти функции определение общей длины нескольких отрезков. Ну, то есть, если в Автокаде мне необходимо узнать общую длину скажем 10-ти отрезков мне было достаточно их выделить нажать "свойства" и в свойствах отображалась общая (суммарная) длина этих 10-ти отрезков. Подскажите пож. реализовано ли что-то подобное в nanocad?

P.S. nanocad 5.1. Free


В nanoCAD 5.1 ничего такого нет. Бесплатную версию, насколько я понимаю, давно никто не дорабатывает.

В nanoCAD 20.x есть соответствующий функционал в (Лента - Главная - Утилиты - Сведения), (Меню - Сервис - Сведения - Общая длина) или (Команда - CLENGTH, ОБЩДЛ).

P.S.
В nanoCAD 5.1, насколько я понимаю, подгрузить LISP вообще нельзя.

А так, вот пример кода;

;|

TLEN.LSP - Total LENgth of selected objects
(c) 1998 Tee Square Graphics

|;

(defun C:TLEN (/ ss tl n ent itm obj l)
  (setq ss (ssget)
        tl 0
        n (1- (sslength ss)))
  (while (>= n 0)
    (setq ent (entget (setq itm (ssname ss n)))
          obj (cdr (assoc 0 ent))
          l (cond
              ((= obj "LINE")
                (distance (cdr (assoc 10 ent))(cdr (assoc 11 ent))))
              ((= obj "ARC")
                (* (cdr (assoc 40 ent))
                   (if (minusp (setq l (- (cdr (assoc 51 ent))
                                          (cdr (assoc 50 ent)))))
                     (+ pi pi l) l)))
              ((or (= obj "CIRCLE")(= obj "SPLINE")(= obj "POLYLINE")
                   (= obj "LWPOLYLINE")(= obj "ELLIPSE"))
                (command "_.area" "_o" itm)
                (getvar "perimeter"))
              (T 0))
          tl (+ tl l)
          n (1- n)))
  (alert (strcat "Total length of selected objects is " (rtos tl)))
  (princ)
)

 

Изменено пользователем A.Kudrjashov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 14.05.2020 в 11:47, A.Kudrjashov сказал:

В nanoCAD 5.1, насколько я понимаю, подгрузить LISP вообще нельзя.

Можно. А не можете в Вашем коде перевести сообщения командной строки с непонятного языка на русский? Буду с удовольствием пользоваться и вспоминать Вас с благодарностью.

PS И хорошо бы добавить в код функцию отображения результата вычисления в лог, который вызывается клавишей F2.

Изменено пользователем ПГС-Проект
PS

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
15 часов назад, ПГС-Проект сказал:

Можно. А не можете в Вашем коде перевести сообщения командной строки с непонятного языка на русский?


.... если я правильно понял.
TLEn_2.lsp
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, A.Kudrjashov сказал:

.... если я правильно понял.

Спасибо! Всё так.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...

×
×
  • Создать...