|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Автоматическое изменение атрибутов блоков
Регистрация: 01.07.2010
Сообщений: 521
|
||
Просмотров: 24205
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Поиск по словам "автонумерация" и ему подобным. Вариантов решения - тьма.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Цитата:
![]()
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Offtop: Быть новичком и лениться юзать поиск - это не одно и то же. Кроме того, язык и версию автокада желательно указывать (на будущее).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
дубль 2: язык и версия акада.
Offtop: Некоторое время спустя... п.с.моё уточнение настолько сильно призадумало автора топика? подсказка: под языком подразумевается язык программирования, на котором он ищет решение, а не что-то иное. ![]()
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 30.09.2010 в 17:16. Причина: делаю предположение по поводу молчания автора топика |
||||
![]() |
|
||||
Я тоже тьму тем читал на эту тему, а решения по автонумерации так и не нашел. Мне тоже надо в атрибутах блока проставлять автоматически номер блока с префиксом и суффиксом. Я даже знаю принцип как это надо делать, да только лень самому писать.
Собрали набор блоков по какому-то признаку и в соотвествии расположением блока в наборе (а он там расположен по порядку создания) пронумеровали. Вот такой проги, которая создает набор блоков, просит указать имя атрибута в них и пронумеровывает не видел. |
||||
![]() |
|
||||
Цитата:
Offtop: А Zaghim так и молчит как рыба об лёд, насчёт языка и версии акада...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Шаражпроектхалтурмонтаж Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,010
|
Ну если с автонумерацией разберешься (как, кстати?) - то и с ее продолжением справишься.
Подсчитал сколько блоков уже стоит, вставил новый и нумернул с приращением к количеству. Или перенумеровал весь набор, включая вновь вставленный. Я так нумерую блоки штампов последующих листов - у тебя не та же задача случайно? |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
По моему правильней взять все блоки и инкрементировать максимальный атрибут.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Последние версии Binc BincA ApNum ApNumA
можно ли автоматизировать нумерацию блоков автоматическая нумерация в атрибутах блока Автоматическая нумерация в AutoCad 2006
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Цитата:
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Регистрация: 01.07.2010
Сообщений: 521
|
Жарко дискуссия развернулась))) Стараюсь писать пока только на Автолиспе, задачи которые себе ставил, все пока что получались именно при помощи его.... Автокад предпочтительно 2008, но есть и 10.
Вообще я думал это делать так, вначале вставил блок, потом entnext получить его свойства и как я думаю там будут эти самые атрибуты. Потом каким-то образом их заменить (кстати как это сделать не знаю, всегда только что то выдергивал, а втыкать назад не пробовал). В общем-то нужна будет не только нумерация, а еще и некоторые другие параметры, высотная отметка, например. А как выбрать все блоки программно? Понятно, что они должны быть все в одном слое, иначе возьмется лишнее. QuickSelect? Просто в лиспе не пробовал данный метод... У меня не блоки штампов, у меня колодцы))) |
|||
![]() |
|
||||
Шаражпроектхалтурмонтаж Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,010
|
с помощью (ssget "_X" '((0 . "INSERT") ...
а потом перебирать их и заносить данные в атрибуты. Примеры работы с атрибутами есть здесь: http://faqs.org.ru/progr/graph/autolisp2.htm [22] Атрибуты блоков [22.1] Как получать доступ к атрибутам блоков? [22.2] Как изменить (MODIFY) атрибуты блока? [22.3] Как подкорректировать (UPDATE) атрибуты блока? |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Цитата:
Извлечение значений атрибутов блоков AutoCAD Electrical с помощью AutoLisp там смотреть ф-ции get-all-atts, mip-block-setattr-bylist и примеры их использования
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Регистрация: 01.07.2010
Сообщений: 521
|
Всех обнял сразу, спасибо за помощь!!!!!!!!!!!! Буду разбираться!
Немного усложнилась задача. Блок стал динамический, стало 4 визибл сета... В общем когда вставляю блок, нужно сделать так что бы во всех этих 4 сетах менялось первые два значения атрибутов. Не понял как пользоваться этим: Код:
В общем решил проблему опять по-своему, в таком виде: Код:
Но данные меняются только в одном визибл сете, как сделать что бы менялись во всех четырех? И еще вопрос немного не в тему, но как сделать в блоке, что когда я его перетаскиваю в разные углы, стрелка привязывалась к разным уголкам рамки с атрибутами...что-то наподобие мультистрелки Последний раз редактировалось Zaghim, 02.10.2010 в 13:34. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Цитата:
![]() По умолчанию имя блока должно быть "block", имя тэга атрибута "tag". Никаких команд нет. Нужно 1. Открыть файл test.dwg 2. Загрузить в него лисп 3. Просто копируйте и удаляйте блоки Настройку имени блока и имени атрибута нужно менять в следующих строчках кода Код:
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 29.11.2012 в 12:09. Причина: добавил url странички автора |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Добавил к #18
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
инженер-электрик Регистрация: 21.10.2010
Краснодар
Сообщений: 134
|
VVA, спасибо, полезная вещь!
![]() А как можно подправить код, чтобы лисп работал не с одним набором block/tag, а с несколькими типа: block1/tag1, block2/tag2... а еще лучше по маске - со всеми блоками block*/tag*? хм... хотя пожалуй, маска для атрибута тут ни к чему. Просто block*/tag а если еще добавить нумерацию блоков, вставленных в таблицу.... вообще сказка будет ) и поддержку префиксов/суффиксов ) запросы растут ) кстати, если из середины списка был удален какой-то блок, назад его уже никак не поставить? Последний раз редактировалось angel-fear, 23.09.2011 в 12:36. |
|||
![]() |
|
||||
энергетик Регистрация: 01.03.2012
Владивосток
Сообщений: 72
|
|
|||
![]() |
|
||||
энергетик Регистрация: 01.03.2012
Владивосток
Сообщений: 72
|
Цитата:
1. Имя блока и тег изменять не в тексте кода, а чтобы програмно был запрос на ввод имени блока и тега 2. Чтобы бобавить блок с № n надо скопировать блок с атрибутом № n-1 с нажатой (с удерживанием) определеной комбинацией клавиш. Если это конечно возможно ![]() |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Роман Амосов, по п.1 ничего сложного нет. Тебе любой подскажет, как написать эти 2 строчки. Я сейчас не могу, т.к. нахожусь в отпуске с планшетом. По п.2 - ничего пока сказать не могу.
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
КИП и А Регистрация: 28.04.2010
Киев
Сообщений: 101
![]() |
Прикольная программка. Но бестолковая без доработки.
http://www.lee-mac.com/autolabelattributes.html Мне бы она пригодилась если бы нумерация происходила с 001, 002, 003...015, 016....051, 052...125, 126 и т.д. И перед работой проги указывать диапазон мышью где нумерация начинается с 001, и т.д. Если блок не попадает в указанный диапазон то нумерация не срабатывает. Если указанно несколько диапазонов то в каждом из диапазонов нумерация начинается с 001. Указать зависимость. В блоке к примеру есть 2 атрибута. "tag" - атрибут который пронумеровывается "text" - атрибут в котором забивается значение. (К примеру "Мама") Если в указанном диапазоне вставлены блоки с одинаковыми значениями "Мама" в атрибуте "text". То нумерация начинается с 001, и т.д. (Таким образом происходит разная нумерация в одних и тех же блоках с одними и теми же атрибутами.) Если нужна нумерация единая, то значение в атрибуте "text" одно и то же везде. Короче другими словами все одинаковые значения в атрибуте "text" нумеровать с 001, в указанном диапазон. Ого закрутил. Но реально унифицировать цены бы не было. VVA, Ты можешь я знаю ![]() А лучше не выделять диапазон мышью, а указывать замкнутый контур. Неважно чем выполнен контур (Линиями, полилниями,область) главное что бы контур был замкнутый. Добавил файл с примером для наглядности Последний раз редактировалось Eddicordo, 30.07.2012 в 17:24. Причина: Добавление файла с примером |
|||
![]() |
|
||||
ПГС Регистрация: 22.05.2007
Москва
Сообщений: 638
|
Покрутился я тоже с AutoLabelAttributesV1-0, вроде усе заработало. Проблему с маской решил временно, просто добавил еще один атрибут окурат положив его перед "счетчиком" получилось BR4.1 - BR4.X, ну пока вроде и этого хватает, но вот расставил я блоки, от нумеровались они... А как мне к следующим блокам переходить? Менять строчки лиспа с нейма "Block"? А если он уже подгружен в автозагрузку? А как его изменить, когда он уже внутри Акада сидит? Ну конечно же его изменить можно, я не спорю, но хотелось бы как-то не по строчкам кода бегать, а так с помощью двух кнопок как-нибудь))...
Я уж думал, грешным делом, взрывать блоки и переназначать имя для следующих блоков. Вот для моих заний с программированием это ей богу проще) В общем, автономераторов полно, но все равно вопросов пока больше чем ответов ![]() Последний раз редактировалось Palomnic, 14.07.2014 в 16:28. |
|||
![]() |
|
||||
Регистрация: 07.12.2010
Уфа
Сообщений: 427
![]() |
Цитата:
Цитата:
1. Выбор блока. 2. Выбор атрибута в выбранном блоке 3. Программа ищет количество существующих блоков и смотрит значения атрибутов. Если блоков нет, то "Блок 1". Если блоки есть, то находит блок с наибольшим атрибутом (речь же идет о числах???) и вставляет блок со следующим порядковым номером. 4. Если вставили 10 блоков, а потом удалили блок №3, то при запуске программы она должна выдать сообщение "Нет блока с №3!!! Переименовать блоки???" Жмешь "Да! Переименовать!" и она переименовывает 4 в 3, 5 в 4 и т.д. Или жмешь "НЕТ! Вставить блок с №3 заново!", и вставляешь блок с №3, а далее вставляешь блок с №11, №12,.....итд. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Удалено
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Регистрация: 07.12.2010
Уфа
Сообщений: 427
![]() |
#18 не подходит - потому что допустим все расставил, а потом надо где-то посередине удалить - хорошо, удалил. А еще через пару дней надо примерно в тоже место вставить ещё два блока, то они получатся с последними номерами. Что несколько сбивает общую картину.
#12 - много программ, причем и работающих и не работающих - покопался в них в очередной раз - ничего полезного для себя не нашел. BINCA при выделении блока, выдает кучу атрибутов, а потом выдает ошибку (это в блоке с многими атрибутами), с одним атрибутом работает, но не нашел как делать замену. Т.е. он вставляет к уже существующему тексту ещё и свой текст. Более того со всем этим лучше и быстрее справляется number.dvb и numinc.lsp |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Alexeipost, Проверил BINCA - у меня работает без ошибок. Пришли мне почтой образец. Посмотрю в чем проблема.
Опять у меня все меняет. Присылай образец. Или здесь выложи
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Регистрация: 14.07.2014
Сообщений: 1
|
Нужно тело программы для данного блока. Так чтобы атрибут был К1 до бесконечности и имя атрибута менялось в зависимости от изменения размера блока только по высоте и длине блока . Помогите пожалуйста чайнику который не шарит в программировании.
|
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
если нужны просто размеры - то те же поля в атрибутах, настроить на параметры растяжения и соответствующую точность отображения. Только нужно их принудительно обновлять для отображения новых значений. А автонумеровалок атрибутов различного вида только ленивый не может найти.
|
|||
![]() |
|
||||
энергетик Регистрация: 01.03.2012
Владивосток
Сообщений: 72
|
Всем доброго времени суток. Можно ли сделать так чтобы к нумерации добавлялась литера "а", "б", "с" поочередно. Чтобы нумерация выглядела так 1а, 2б, 3с, 4а, 5б, 6с, 7а ..... ОЧЕНЬ ОЧЕНЬ ОЧЕНЬ нааааадо. Помогите пожалуйста.
|
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Kavalergrad, Как использовать лисп, опубликованный на форуме
код в #37 - это реакторы, поэтому достаточно загрузить. Имя блока - "св", таг атрибута - светильник Цитата:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Массовое редактирование свойств атрибутов блоков | kgb | Программирование | 11 | 13.06.2023 14:39 |
Как поменять цвет атрибутов уже вставленных в чертёж блоков? | МишаИнженер | Программирование | 5 | 09.10.2012 20:55 |
Тормозит команда расчленения набора блоков | batmax | Программирование | 4 | 31.08.2010 17:37 |
Автоматическое заполнение атрибутов блоков. | TheBuTeK | Программирование | 8 | 24.12.2007 17:22 |