|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
12.01.2015, 14:26 | #1 | |
Помогите скоретировать lisp ztxt
Регистрация: 03.01.2014
Сообщений: 27
|
||
Просмотров: 9584
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,833
|
А не проще будет такие точки удалять вручную вместе с текстами?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Если #2 не устраивает и точки по каким-либо причинам должны остаться, то, как вариант, можно их перенести на блокированный слой, т.к. в команде идет выбор примитивов типа "точка" (point) на незаблокированных слоях (ключ "_:L" в функции ssget)
Код:
Нашел тему на caduser'e Перенос из содержания текста в координату z рядом стоящей точки
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,095
|
Как определить, что они действительно остались без отметок? чертеж в студию!
Цитата:
Подозреваю, что дело в строке 22, где каждая точка поднимается на высоту, соответствующую ближайшей отметке, даже если расстояние от "нормальных" точек до "их" текстов не превышает 5 мм, а от "обделенной" точки до ближайшего к ней текста - 15 мм. Цифры, разумеется, условные. Поэтому нужно отсеять те точки, которые "выделяются из коллектива". В качестве критерия можно использовать половину средней ширины текста отметки. Точнее можно сказать, увидев чертеж. Могут быть нюансы, связанные с плотностью заполнения, видом выравнивания текстов и регулярностью их расположения относительно "своих" точек (единообразно или как попало). Цитата:
|
|||
|
||||
Регистрация: 03.01.2014
Сообщений: 27
|
Да, kp+, это и нужно.
Отсюда вопрос: как сделать так, чтобы выдавался запрос на задание максимальной дистанции между текстом и точкой. а не присваивалось значение ближайшего текста. Приложил файл (Autocad 2007). Коричневым цветом выделены неправильные высотные отметки. |
|||
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,095
|
Цитата:
Как понять, что они неправильные? Сильно отличаются от среднего значения или есть другие критерии? Или это только Вы знаете? Если так, то рулит совет из #3, и переделывать код не нужно. PS Единообразность оформления наводит на мысли о музыке джаз том, что инфа в чертеж экспортирована из некоего программного комплекса/файла данных. Не лучше ли найти исходник? На форуме полно лиспов для выноса табличных даных в точки на чертеже с адекватной установкой отметки. Последний раз редактировалось kp+, 13.01.2015 в 10:42. |
|||
|
||||
Регистрация: 03.01.2014
Сообщений: 27
|
Цитата:
да, действительно инфа была экспортирована из какого-то программного комплекса. Я этого не знаю из какого. и исходника тоже нет. в выложенном файле часть данных. всего точек и текстов еще в 20 раз больше. Цитата:
|
|||
|
||||
Регистрация: 30.08.2010
Сообщений: 25
|
VVA, здравствуйте! Можно переделать ztxt.lsp, чтобы переносить координату Z не на точку, а на блок (его базовую точку). В моем случае почти всегда геодезическая съемка, что касается отметок поверхности земли, выглядит как блок и текст, а не точка и текст. Или проще воспользоваться сначала frto.lsp?
|
|||
|
||||
dima_25, Глянул код, вроде можно. Выложи dwg c примером блока.
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
Тестируй. Команда ZtxtB
Код:
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 13.06.2016 в 15:52. |
||||
|
||||
не полностью скопировал код из #11. Пробуй еще раз. На всякий случай прикрепил еще lsp файл
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
Дабы не плодить темы - название темы подходит, и лисп сам по себе удачный.
Можно ли изменить этот лисп так, чтобы значение текста становилось значением атрибута ближайшего блока? Не в Z блока передавать значение текста, а в атрибут. Т.е. уже должен существовать блок с атрибутом, рядом с ним надписаны тексты (номера объектов или названия или т.п.).
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
||||
Сразу вопросы:
- какой блок считать ближайшим? (Точка вставки, середина габаритного контейнера) - текст - это однострочный текст, многострочный или оба? - для текста - какую точку брать для сравнения? Ну и примерчик в виде dwg файла был бы не лишним
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
Я, как всегда, думал, что обойдется малой кровью.
Кстати, сравнил короткую Ztxt с Вашей ZtxtB - Ваша разбирает тексты по блокам лучше. Недостаток - нет ограничения на радиус поиска. И не отбрасываются уже обработанные тексты-блоки. Ближайший блок - лучше, похоже, брать середину габаритного контейнера. Без учета атрибутов, если они у блока есть. Если это морочно, то проще брать точку вставки. Текст - лучше оба, и однострочный и многострочный. Если атрибут однострочный, то из мтекстов брать первую строку. Точка текста - лучше бы тоже середину габаритного контейнера. Если морочно, то точку вставки. В целом же Ваше решение из ZtxtB вполне удачное - если "по-быстрому", то можно использовать все как есть. Главное, что думал добавить - выбор атрибута, если у блока их несколько. И встроить допуск для поиска - допустим, 10 габаритов блока. Или 0.5-1.0 габарита текста. Но нормально с допуском будет работать, если учитывать не точку вставки текстов, а центры их габаритов. Пример пока фантазийный.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
Опции темы | Поиск в этой теме |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Lisp, помогите с алгоритмом "подтягивания" поллиний | 2123 | LISP | 1 | 03.02.2010 23:58 |
Запуск Lisp команды в новом документе | BlackHarp | LISP | 1 | 26.03.2009 23:06 |
Auto Lisp. Помогите с легкой программой. | BARS_1985 | LISP | 6 | 27.09.2007 11:10 |
LISP помогите разобраться. | Elenaka | LISP | 5 | 20.10.2006 18:15 |
Помогите отладить lisp программу | Мишаня | LISP | 7 | 31.07.2006 12:54 |