|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
![]() |
Поиск в этой теме |
![]() |
#1 | |
LISP. Помогите с лиспом по переименованию нескольких вхождений динамического блока в значение его атрибута.
Регистрация: 01.09.2015
Сообщений: 13
|
||
Просмотров: 12927
|
|
||||
Регистрация: 01.09.2015
Сообщений: 13
|
Спасибо большое, за ответ.
При выполнении вашего кода вылетает из автокада, если выбрать следующий блок с таким же значением аттрибута, как предыдущий. Прилагаю файл в котором вылетает. У меня в чертеже имеется несколько одинаковых по параметрам динамических блоков с одинаковым значением атрибута. Хотелось бы, чтобы команда работала не только с одним вхождением, а выделить нужные для переименования блоки в большом колличестве. Например я имею в чертеже 100 блоков с именем "стойка" Из них 70 с атрибутом "ИМЯ_001" - со значением "СТ-1", И 30 с атрибутом "ИМЯ_001" - со значением "СТ-2", После ввода команды выделяю нужные для изменения блоки, и создается 70 блоков с именем "СТ-1" и 30 блоков "СТ-2", с сохранением их динамических свойств. Последний раз редактировалось kirillwu, 04.06.2018 в 16:22. |
|||
![]() |
|
||||
Шаражпроектхалтурмонтаж Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,010
|
Переименовать массово все анонимные вхождения одного блока я не знаю как.
Предлагаю первым переименованным заменить заранее выбранные остальные с помощью этого лиспа: Код:
Последний раз редактировалось Nike, 05.06.2018 в 11:20. |
|||
![]() |
|
||||
Регистрация: 01.09.2015
Сообщений: 13
|
Дело в том, что у меня на работе главный конструктор очень консервативен в автокаде. Когда в автокаде проявились динамические блоки, у меня в компании был придуман стандарт оформления, в котором каждый блок спецификации должен быть назван по своей маркировке. Всем крайне не удобно работать с моим файлом. Спецификации привыкли проверять командой "выбрать подобные", которая с моими блоками не работает корректно. На команду "найти" никто не хочет переходить.
Возможно проще написать лисп, аналог команды "выбрать подобные"? Только выделяющую блоки не только по одинаковому именю, слою и т.д. А еще учитывающая разность в атрибутах? Последний раз редактировалось kirillwu, 05.06.2018 в 08:51. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
Пускай изучат команду _.dataextraction
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 01.09.2015
Сообщений: 13
|
Изучена! Главный конструктор теряет визуальный интерфейс без команды "выбрать подобные", к сожалению ничего не могу с этим поделать(
----- добавлено через ~16 мин. ----- Выдает ошибку "слишком мало аргументов" Последний раз редактировалось kirillwu, 05.06.2018 в 08:50. |
|||
![]() |
|
||||
Шаражпроектхалтурмонтаж Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,010
|
исправил
----- добавлено через ~6 мин. ----- Цитата:
Выбор блоков по значению атрибутов. Код:
|
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Динамические блоки сами по себе неплохо засоряют чертеж промежуточными анонимными блоками) Так что определением блока больше/меньше в чертеже - в данном случае уже особой роли не играет, имхо.
|
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Мой вариант
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 10.06.2018 в 11:17. Причина: Добавлена функция mip-conv-to-str |
|||
![]() |
|
||||
Регистрация: 01.09.2015
Сообщений: 13
|
Попробовал у себя. Подскажите, пожалуйста: правильно ли я понял: Ввёл команду, выделил шесть блоков в кружочке "оригинал". На месте одного из них создался новый блок, с именем, совпадающим с значения атрибута того блока, на котором создался. Ноо с пустым атрибутом и только один. Получается для получения нужного мне результата нужно вызвать команду, нажать на каждый блок, который нужно переименовать по отдельности. А затем скопировать значения атрибута "ИМЯ_001"на каждый из созданный блоков в ручную?
Хотелось бы между "Оригиналом" и "Результатом" - выполнить одно применение вашего лиспа. Огромное вам спасибо за ответы в этой теме!! |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Цитата:
kirillwu, проверил на другой машине. Автокад 2013x64, W7x64 Команда вводится 1 раз, блоки создаются по имени атрибута и копируются их значения
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Регистрация: 01.09.2015
Сообщений: 13
|
Цитата:
Забыл упомянуть, если выделять блоки массово в командной строке вылезает эта надпись |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
обновил #14. Перезагрузи лисп
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Регистрация: 01.09.2015
Сообщений: 13
|
Приветствую! Не могли бы вы еще чуть помочь. После выполнения лиспа в #14 аттрибуты, являющиеся многострочными становятся однострочными. Возможно ли это убрать?
Тестовый файл в вложении Последний раз редактировалось kirillwu, 26.06.2018 в 14:56. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
kirillwu, Тестируй
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Цитата:
Выбираем все блоки, обрабатываем только с именем "Стойка". Пишем блок wblock-ом в TEMP, снимаем значения атрибутов, динамические свойства c оригинального блока, копируем блок в TEMP с именем равным значению атрибута "ИМЯ_001", вставялем его в обрабатываемый чертёж, восстанвливаем значения атрибутов, динамические свойства, удаляем оригинальный блок. Далее по циклу для всех выбранных блоков. удаляем файлы из TEMP. Без обвесов. Код:
Последний раз редактировалось koMon, 05.07.2018 в 10:35. |
||||
![]() |
|
||||
|
||||
![]() |
|
||||
Регистрация: 01.09.2015
Сообщений: 13
|
Цитата:
Последний раз редактировалось kirillwu, 05.07.2018 в 09:33. |
|||
![]() |
|
||||
Цитата:
Код:
имя_001 содержит управляющие коды, нужно корректировать обработку этого атрибута, иначе обрушение автокада! закостылил) если конечно оно надо Код:
с name_001 проблема восстановления( ----- добавлено через ~17 мин. ----- хотя видимости отслеживает… Последний раз редактировалось koMon, 05.07.2018 в 11:29. |
||||
![]() |
|
||||
Регистрация: 01.09.2015
Сообщений: 13
|
Цитата:
Последний раз редактировалось kirillwu, 05.07.2018 в 13:52. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
В лиспе есть подобная функция?
|
|||
![]() |
|
||||
я не знаю о такой функции, но её написать вообще не проблема, вопрос - что делать, когда имя будет содержать спецсимволы?
да нет ошибка не выскакивает, файл отрабатывается весь, но акад ругается на наличие дублируемых блоков, которые вложены в блок кронштейн и тупо их игнорит. |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
|
|||
![]() |
|
||||
а что так скромно)?
так-то поинтересней будет snvalid день прожит не зря!))) ну здесь-то это излишнее) задача тупо переименовать, для удобовыбираемости вышестоящим специалистом), а принципиально - да. вот я даже не ставил проверку на уже наличие в базе вставляемого блока из-за чего выскакивают highly likely сообщения о наличии описания блока. |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Если просто стоит задача выделить блоки с одинаковым значением атрибута - то можно с другой стороны: просто перехватывать команду "выбрать подобные" в обработчике событий и если выделен блок с тэгом "ИМЯ_001" - найти и выделить все другие с тем же значением атрибута. А если нет - пропускать исходную команду дальше. Но это тоже надо "ломать" традиции - ставить всем программу в автозагрузку.
Ну-ну. Во вставках двух разных блоков будет одинаковое значение указанного атрибута (просто человеческий фактор) - как создать два определения блока с одним и там же именем? |
|||
![]() |
|
||||
|
||||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Цитата:
Выбор блоков по значению атрибутов Выбор блоков по значениям динамических параметров
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
добавил проверку на наличие в базе уже определённого блока, но вложенных блоков тьма, поэтому акад при кажом вставлении такого блока всё равно мило ругается)
Код:
kirillwu, давайте уже попробуем "Ригель", "Заполнения" и что там ещё у вас есть!-) |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
т.е. вступать в диалог с пользователем, а не поганить чертеж по тихому)
----- добавлено через ~6 мин. ----- по нормальному надо сначала проанализировать чертеж, найти все конфликты (по именам, по одинаковым значениям атрибутов в блоках с разными "родителями", блоки на заблокированных слоях и т.д.), запросить реакцию пользователя (причем желательно, в удобоваримом варианте типа выбора очередного конфликта на палитре с автопозиционированием чертежа на "проблемном" блоке) и лишь при отсутствии неразрешимых конфликтов запустить саму обработку чертежа. |
|||
![]() |
|
||||
как это совсем не GOOD!^)
Цитата:
но вот ежели их у него сотни, тогда ДА, тогда КОНЕЧНО! мне почему-то кажется, что пора мне говорить "пас"))) |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
|
|||
![]() |
|
||||
Сергей812,
А нет, показалось))) Я тут посмотрел, kirillwu, ещё один тест давал в #20, ну и ещё малёк подшаманил. только вот маску на мтекст, по ходу ручками нужно делать. надо бы функцию на снятие форматируюших кодов написать по-правильнее. а так в целом заменяет блоки вполне себе прилично, не по тихому поганя цельный чертёх))) сборный результат теста (DXF->RAR) выкладываю. Код:
|
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Вот это не подойдет? В .Net это встроенное уже.
|
|||
![]() |
|
||||
|
||||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Значение атрибута в текстовое поле динамического блока | zekatyumen | Динамические блоки | 19 | 28.01.2023 09:26 |
Мои динамические блоки [2] | Кулик Алексей aka kpblc | Динамические блоки | 4334 | 22.04.2019 09:16 |
C# .net переопределение динамического блока из внешнего файла | bargool | .NET | 35 | 18.10.2011 16:03 |
Редактирование вхождения динамического блока из командной строки. | Alexey_BH | Динамические блоки | 2 | 26.09.2010 13:13 |
При растягивании/поворачивании грисп динамического блока перестало показывать значение параметра | Red Nova | Динамические блоки | 2 | 02.10.2008 14:57 |