Forge, API и программирование – Русский – только для чтения
Задавайте вопросы и делитесь знаниями по Autodesk Forge и программированию на API программного обеспечения Autodesk
отмена
Отображаются результаты для 
Показать  только  | Вместо этого искать 
Вы имели в виду: 

Вопрос по AutoLISP (Лисп, который поможет считать длину динамических блоков)

8 ОТВЕТ 8
РЕШЕНО
Ответить
Сообщение 1 из 9
Valerik_73_
2357 просмотров, 8 ответов

Вопрос по AutoLISP (Лисп, который поможет считать длину динамических блоков)

Здравствуйте! Уважаемые форумчане, хотел задать следующий вопрос. Может ли кто ни будь помочь в написании лиспа или подсказать, если таковой лисп уже имеется. От программирования я пока далек :-(. В 3D модели я хочу создать трубы сделанные динамическим блоком. Задача лиспа: я выбираю одну трубу. Затем, через команду «выбрать подобные» выбираю остальные трубы данного диаметра и ввожу команду лиспа, который бы подсчитывал суммарную длину L всех выделенных труб (рис.1). Вот, например, я скачивал лисп SUMLINE, который подсчитывает длину выделенных отрезков, полилиний и дуг. Хотелось бы иметь лисп, который считает длину дин. блоков. Файл с трубами прилагаю (Создавал не я. Скачал на просторах интернета). Пожалуйста помогите!Рис.1.png

 

8 ОТВЕТ 8
Сообщение 2 из 9


@Valerik_73_ wrote:

... Может ли кто ни будь помочь в написании лиспа или подсказать, если таковой лисп уже имеется. От программирования я пока далек :-(...

 


 Если от программирования далёк, то в чем должна заключаться помощь в написании?

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

Сообщение 3 из 9

Как вариант (дальше продвигайся сам):

 

(defun C:TubeLenSum ( / len bref props prop ss)
 (setq len 0.0)
 (vl-load-com)
 (setq ss (ssget '((0 . "INSERT"))))
 (foreach e (ssnamex ss)
    (if (= 'ename (type (cadr e))) (progn
       (setq bref (vlax-ename->vla-object (cadr e)))
       (setq props (vlax-safearray->list 
            (vlax-variant-value 
               (vla-getdynamicblockproperties bref))))
       (foreach prop props
          (if (= (vla-get-PropertyName prop) "L") (progn
            (setq len 
                (+ len (vlax-variant-value (vla-get-Value prop))))
          ))
       )
    ))
 )
 (setq ss nil)
 (princ "\nСуммарная длина выбранных труб: ") (princ len) (princ)
)

 

 

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

Сообщение 4 из 9

Александр, спасибо большое! Наверное, в моей просьбе можно было разглядеть нотку наглости. Простите меня! Больше я надеялся, что данный лисп уже кем то писался. Мы разрабатываем газовые котельные и там имеется большое количество труб и арматуры. Я подумал, что можно упростить процесс подсчета спецификации путем подсчета труб через лисп, а арматуры через блоки с атрибутами. То что вы написали мне подошло! Еще раз спасибо вам! Очень признателен! Скажите пожалуйста, а сложно ли научиться писать лиспы? И есть ли литература с которой можно начать? Я смотрел возможности лиспов и некоторые (скачанные из интернета) довольно часто применяю в работе. Как я понял с ними можно существенно облегчить и ускорить свой труд.

Сообщение 5 из 9


@Valerik_73_ wrote:

...Скажите пожалуйста, а сложно ли научиться писать лиспы? И есть ли литература с которой можно начать? ...


Я не знаю что такое "писать лиспы" 🙂 Правильно это называется "писать программы на VisualLisp". Научиться писать программы нельзя - можно постоянно учиться и совершенствоваться в этом деле. Я программирую под AutoCAD уже почти 30 лет (правда последние лет 15 не на VisualLisp).

Литература есть. Например, AutoLISP и Visual LISP в среде AutoCAD (2006)

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

Сообщение 6 из 9
kpblc2000
в ответ: Alexander.Rivilis

Есть другой вариант - использовать "единичный" блок трубы с диаметром 1 мм и длиной 1 мм. Изменяя масштабы, можно смоделировать любую трубу (правда, только прямую). А потом через _.dataextraction уже извлекать все что надо и обрабатывать в Excel. Правда, это совсем не лисп 😉

Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям! | Do you find the posts helpful? "LIKE" these posts!
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.


Алексей Кулик aka kpblc | Aleksei Kulik aka kpblc Facebook | LinkedIn
autolisp.ru
Техническая поддержка программистов Autodesk в СНГ
Библиотека пользовательских lisp-функций | Custom Lisp-function library

Сообщение 7 из 9

Извините за мою неграмотность! Мне бы хоть простые научиться писать. По типу того, что вы для меня написали (хотя я точное не знаю простой он или нет, но выглядит просто). Спасибо за литературу! 🙂

Сообщение 8 из 9
Valerik_73_
в ответ: kpblc2000

Алексей, вам тоже спасибо! Я думаю мне будет достаточно лиспа, написанного Александром. Кстати, смотрел ваше выступление на autodesk university russia 2016. Именно благодаря вам я сейчас обратился на этот сайт и узнал, что лиспы могут выполнять не только простейшие функции. За это вам отдельное спасибо!

 

Сообщение 9 из 9
Karpenchis
в ответ: Valerik_73_

Можно в Вашем случае обойтись и без лиспов, воспользовавшись извлечением данных, раз трубы сделаны динблоками. 

По ссылке уроки по созданию блоков с атрибутами, что позволит в дальнейшем получать автособираемые спецификации https://www.youtube.com/playlist?list=PLF5lNUttdW4MEQWUI4kgDMgfLtW7hbvbS

Не нашли то, что искали? Задайте вопросы в сообществе или поделитесь своими знаниями.

Новая тема  

Autodesk Design & Make Report