|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Добавление в чертеж длины полилинии
Java/Kotlin/Go
Регистрация: 03.02.2006
Сообщений: 5,786
|
||
Просмотров: 17039
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
_.field :?:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Java/Kotlin/Go Регистрация: 03.02.2006
Сообщений: 5,786
|
не не
с филдами это процесс долгий и увлекательный а моя задача быстро пробежаться по нескольким полилиниям и расставить здесь же их длины. Я начал вот такой код, дошел до создания текста и умер (defun c ![]() (setq len (vla-get-length (vlax-ename->vla-object (car (entsel))))) |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Хорошо
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Инженер-теплотехник Регистрация: 17.08.2006
Смоленск
Сообщений: 308
|
Нужна длина только полилинии или еще какие варианты нарисуются?
Какой текст создавать: мульти, простой, на основе уже имеющегося текущего стиля текста? В общем нужна куча уточнений. PS: могу попробовать, но быстро не обещаю. PPS: а, пожоже не у меня одного обед. Пока читал и отвечал уже и прог накидали. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Те же яйца, только в профиль:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
>Кочетков Андрей Если актуально, то строчку
(wcmatch (cdr (assoc 0 (entget en))) "*POLYLINE") заменить (wcmatch (cdr (assoc 0 (entget en))) "*POLYLINE,LINE") А вот еще вариантик. Быстро переделал отсюда http://www.autocad.ru/cgi-bin/f1/board.cgi?t=36741nT Пишет длину вначале плиний и линии и заносит в гиперссылку. Подвел мышу и посмотрел Код:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Цитата:
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 24.03.2005
Сообщений: 320
|
Мне А. Ривилис сделал лисп, похожий, от которого я без ума, каждый день юзаю. Работает по такому же принципу, только в таблицу вставляет длину. Ведь так лучше, можно кое-какие действия над длинами городить.
Цитата:
|
|||
![]() |
|
||||
Инженер-теплотехник Регистрация: 17.08.2006
Смоленск
Сообщений: 308
|
Не, ну что ты будешь делать, а! Все время они опережают! Одно слово - гуру. Вы там вообще работаете, или это домашние заготовки были?
Есть у меня один вопрос, может кто просветит. Функция vla-get-length возвращает длину объектов, у которых есть свойство Length. Для регионов, дуг, эллипсов и сплайнов используются другие функции. Не появилось ли случайно в 2007/8 КАДах общей функции для взятия длины объекта? |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Попробуй для таких штукенций использовать нечто типа (vlax-curve-getdistanceatpoint ent (vlax-curve-getendpoint ent))
P.S. Пишу без када, так что проверь имена функций.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Инженер-теплотехник Регистрация: 17.08.2006
Смоленск
Сообщений: 308
|
Да, именно эти функции я использую для эллипсов и сплайнов. Но не подходит для мультилиний, вьюпортов... Извините, может не совсем точно был задан вопрос, интересует именно одна функция работающая со всеми объектами. Вьюпорт это конечно слишком (хотя почему? обычный многоугольник), может хоть для мультилинии упростили.
Если нет такой функции, ну и ладно, раньше ведь обходились. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Цитата:
Цитата:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Посмотри по ссылке в комментарии
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Регистрация: 28.10.2008
Сообщений: 26
|
Добрый день!
Можно ли в код из поста №5 добавить возможность извлечения и вставки в другие ячейки таблицы значения мультивыноски и атрибутов блоков? Причем одним циклом: после выбора таблицы указываю один блок, второй блок, мультивыноску и полилинию, и каждый раз указываю ячейки, куда вставлять данные. Это все нужно для создания кабельного журнала, т.е. первый атрибут - устройство, откуда идет кабель, второй - куда идет, мультивыноска - номер кабеля и длина полилинии - собственно длина кабеля. |
|||
![]() |
|
||||
Регистрация: 17.01.2014
Сообщений: 97
|
Здравствуйте. Необходим лисп проставляющий длину линии, и при этом, одновременно, происходило бы выравнивание текста параллельно и по центру линии, с реактором (т.е при растягивании линии расположение текста относительно линии должно оставаться прежним). Вот тут уже были попытки сделать подобное, но там выводится поле, а нужен простой текст, чтобы при изменении длины линии, её изначальное значение, проставленное как текст, не менялось бы. Уважаемы знатоки LISP, помогите с решением данной проблемы.
|
|||
![]() |
|
||||
Регистрация: 09.01.2013
Сообщений: 127
|
Что я сделал не так? Acad 2016x64
некорректно идентифицируется ID объекта. это связано с версией ACADa& Код:
Последний раз редактировалось Зодчий1989, 13.02.2019 в 10:25. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Это связано с ограничениями LISP: он не умеет оперировать с 64-разрядными целыми. Самое простое решение - это преобразовать объект в ename, вывести его в строку, отфильтровать то, что идет после символа ":", и преобразовать остаток в десятичную систему из 16-ричной. Функции соответствующие на этом форуме, насколько я помню, были.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Сергей812, там информация немного устарела. Спасибо, подправлю сегодня (по крайней мере на это надеюсь)
Только что добавил статейку: http://autolisp.ru/2019/02/14/objectid-for-fields/
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. Последний раз редактировалось Кулик Алексей aka kpblc, 14.02.2019 в 07:51. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Зодчий1989, Попробуй в строке 60 вместо vla-get-objectid использовать функцию Get-ObjectID-x86-x64
Код:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Регистрация: 09.01.2013
Сообщений: 127
|
, Идеально работает. Может пригодится кому нибудь.
Программа извлекает свойство (указывается в строке 61 ">%).Area \\f \"%lu2%pr2%ct8[1e-006]\">%}") из полилинии и вставляет в пространство листа "полем" ACADa. Код:
|
|||
![]() |