|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
14.04.2017, 07:07 | #1 | |
Программная замена атрибута блока в таблице. Возможно ?
Регистрация: 05.11.2014
Сообщений: 982
|
||
Просмотров: 10727
|
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,095
|
Bfind решает вопрос. Только пользоваться надо осторожно, т.к. в нем есть средства "массового поражения" - замены текста во многих чертежах сразу, в т.ч. не открытых в Акаде, а просто находящихся в указанной папке. И какого-то лысого эта опция включена по умолчанию Чуть не запорол множество чертежей
Следите за галочками настроек! |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
baksconstructor, получить ENAME вхождения блока внутри ячейки таблицы можно так:
Код:
|
|||
|
||||
Регистрация: 05.11.2014
Сообщений: 982
|
|
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
baksconstructor, я могу "собрать" в команду, нужно только бы уточнить ТЗ.
Предполагаемый алгоритм: 1. Запускаем команду. 2. Запрос "Выберите блок в таблице". 3. Появляется список его атрибутов (вопрос только в виде имен тегов или их значений?). Либо нужно менять всегда один и тот же атрибут? Тогда этот лишний запрос можно убрать, жестко прописав этот атрибут в коде. 4. Вводится новое значение с клавиатуры. 5. Значение атрибута заменяется. 6. baksconstructor доволен. Прошу внести коррективы |
|||
|
||||
Регистрация: 05.11.2014
Сообщений: 982
|
skkkk сейчас согласовал и упростил цель.
ТЗ: 1. Запускаем команду 2. Запрос выбора таблицы, выбрали 3. В таблице у всех блоков в всех или видимых атрибутах меняет содержимое на = "" , (во всей таблице у всех или видимых атрибутов не будет содержимого) 4. Всё. Избавляемся от всех подсказок вокруг блока в ячейке таблицы. Суть в том что приходят таблицы с блоками, но некоторые атрибуты не верны, чтобы не искать не тратить время на замену решено вообще избавится от этих атрибутов (нам оно особо не нужно). 5. baksconstructor доволен. |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Ну это как посмотреть... Точно ли не нужны атрибуты, которые внутри окружностей, например, у манометра показывающего или расходомера ультазвукового (там, правда, есть еще два мтекста)? Если так, то термометр и манометр будут в таблице одинаковыми. Полагаю, что будут исключения. Или ключевой момент тут в этом
? Проверка на то, находится ли атрибут внутри геометрии блока или снаружи - та еще заморочка. Может, введем список исключений? Как то: TG1, PG1... Его можно будет дополнять в коде по мене надобности. Это тоже - как посмотреть . Для юзера, может и стало казаться проще, но для программиста... Просто я пока не знаю, как получить список всех блоков таблицы, но раз уж назвался груздем, то в кузовок слажу. Только уже тогда не факт, что успею сегодня скодить. ----- добавлено через ~19 мин. ----- kp+, думаю, что во всем чертеже (иди даже всей модели) не нужно менять все блоки. Убрать атрибуты надо только в условных обозначениях, а в самом-то чертеже они нужны. А Lee Mac почему-то не предусмотрел вариант выбора области чертежа или объектов, в которых производить замену -только весь чертеж, модель и листы. И как оказалось, внутри таблицы он почему-то атрибуты не заменил. Только у блоков, вставленных в модель. |
|||
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,095
|
Зачем убрать? Я, может, невнимательно читал, но поначалу у ТС задача была "заменить в атрибутах блоков таблицы УГО одни надписи на другие". Причем основным критерием поиска должно было быть содержание надписи, а не принадлежность к блоку внутри таблицы (иначе базовая команда _find справилась бы).
Не знаю, у меня все получилось. Если что, у меня базовый Акад 2010х86. Можно выкрутиться. В опциях есть настройка "не трогать заблокированные слои". Если поместить таблицу УГО в отдельный слой (а часто так и делают) и "изолировать" его (т.е. заблокировать остальные) - все получится. |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Не так выразился. Имел в виду стереть содержимое.
У меня почему-то нет. AutoCAD 2011х64. Хотя я вроде понял, почему. Если поставить галочку "Block Definitions" в настойках, то да - срабатывает, но стирается содержимое атрибутов в описании блока, соответственно, на чертеже все блоки тоже идут под замес. Если снимаю эту галочку, а оставляю только атрибуты блоков, то меняется лишь в модели, в таблице - нет. Или я что-то не то делаю? Вроде других вариантов в настройках не нашлось. Можно еще скопипастить таблицу в новый (лучше пустой) файл, и препарировать ее там, затем вернуть. Но вот получится ли изменить только атрибуты в блоках таблицы? Потому что иначе в возвращенной таблице изменений не будет. |
|||
|
||||
Цитата:
Цитата:
Цитата:
Короче блоки вставляются при помощи Код:
Что только не делал, получал таблицу, получал блок в ячейке таблицы через Код:
И тут я сломал голову и оставил как есть. skkkk глянь темку, может натолкнёт на мысль тема
__________________
Вопрос : Где находится Тургай ? Ответ : Между Парагваем и Уругваем..... |
||||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
baksconstructor, пока нет. Совершил пару набегов, излазил ссылки которые дал maratovich - пока безрезультатно, даже на англоязычных ресурсах глухо. Может, кто из знающих подскажет, куда еще копнуть? Entget выдает только описания блоков, которые содержатся в таблице, а вот их вхождения получить не удается. Было пару бредовых идей. Первая - взрывать таблицу и собирать блоки, но в получающемся наборе объектов после взрыва блоки уже не те, что были в таблице, то есть, собрать их, вернуть таблицу а потом менять атрибуты - не выходит. Вторая - программно "прощупывать кадждую ячейку таблицы с помощью nentselp, но это весьма ненадежный вариант, поскольку велика вероятность того, что в "прощупываемой" точке не окажется ничего из состава блока - при попадании на пустое место в ячейке блок не найдется. Пока лишь могу предложить полумеру - прощелкивать каждый блок в таблице вручную, а программно из него уберутся все атрибуты (кроме, я так понимаю, исключений). Остается надеяться, что наши гении подкинут идейку получше. В общем, я пока не сдался, правда есть сейчас определенный напряг со временем.
|
|||
|
||||
Регистрация: 05.11.2014
Сообщений: 982
|
Цитата:
Ладно, значит нельзя, пускай это на совести Автодеска остаётся будем его вспоминать почаще |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Так мой вариант вроде получше - надо только щелкнуть блок, а атрибуты затрутся сами. Это сделать легко. Надо?
Так и вижу, как они там все враз заикали |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Мои динамические блоки [2] | Кулик Алексей aka kpblc | Динамические блоки | 4334 | 22.04.2019 09:16 |
Угол поворота атрибута в составе блока | rzinnurov | AutoCAD | 15 | 18.10.2017 08:08 |
Дописать префикс/суффикс перед/после значения атрибута блока | Liam | AutoCAD | 7 | 05.10.2013 23:05 |
Размер блока по таблице | Positron | Программирование | 5 | 16.05.2013 01:04 |
Программная вставка блока с атрибутами в таблицу. Как сохранить установленные значения атрибутов? | Кулик Алексей aka kpblc | Программирование | 8 | 22.07.2010 15:01 |