Удаление блока
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Удаление блока

Удаление блока

Ответ
Поиск в этой теме
Непрочитано 23.03.2006, 09:34 #1
Удаление блока
STe1S
 
Воркута
Регистрация: 23.03.2006
Сообщений: 10

как удалить блок ?
Просмотров: 8271
 
Непрочитано 23.03.2006, 09:50
#2
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,379


_purge

Но вначале удали или расчлени все вхождения блока в чертеж
Хмурый вне форума  
 
Непрочитано 30.04.2014, 10:05
#3
giprsk


 
Регистрация: 20.05.2009
Сообщений: 89


Нужно удалить блок из базы чертежа, но он вложен в другой блок (входит в его определение). Как найти имя блока/блоков в который/которые он вложен?
giprsk вне форума  
 
Непрочитано 30.04.2014, 10:12
1 | #4
Bull

Конструктор по сути (машиностроитель)
 
Регистрация: 10.10.2005
Набережные Челны (это где КамАЗ)
Сообщений: 11,391


Если блок входит в другой (нужный) блок, его не удалить.
__________________
Век живи, век учись - ...
Bull вне форума  
 
Непрочитано 30.04.2014, 10:35
1 | #5
Valery Brelovsky

Инженер дорожник
 
Регистрация: 22.10.2007
Израиль
Сообщений: 1,859


Да и найти сложно. Это вопрос меня тоже волнует именно нахождение блока вложенного блок. Народ умудряется копировать блок через буфер обмена и вставлять его как блок.
Valery Brelovsky вне форума  
 
Непрочитано 30.04.2014, 10:39
#6
giprsk


 
Регистрация: 20.05.2009
Сообщений: 89


Цитата:
Сообщение от Valery Brelovsky Посмотреть сообщение
Да и найти сложно. Это вопрос меня тоже волнует именно нахождение блока вложенного блок. Народ умудряется копировать блок через буфер обмена и вставлять его как блок.
Может быть это возможно сделать программными средствами, раз в Автокаде нет такого инструмента?

----- добавлено через ~3 мин. -----
Цитата:
Сообщение от Bull Посмотреть сообщение
Если блок входит в другой (нужный) блок, его не удалить.
Задача стоит в том, чтобы найти, куда блок входит, выгрузить или переименовать, а потом уже удалить.
giprsk вне форума  
 
Непрочитано 30.04.2014, 11:23
#7
Valery Brelovsky

Инженер дорожник
 
Регистрация: 22.10.2007
Израиль
Сообщений: 1,859


Цитата:
Сообщение от giprsk Посмотреть сообщение
Может быть это возможно сделать программными средствами, раз в Автокаде нет такого инструмента?
Може быть. Я не специалист в области Лиспа. Покрайней мере найти в какой блок входит, а там уже проще. Я выгружал блок в отдельный файл там проверял, если находил по приводил в порядок, т.е. взрывал всатленный блок затем чистил и вставлял обратно в в файл соответственно с обновлением вхождения этого блока и тогда можно удалить из списка файла. Но муторно, перебирать блоки. И сколько людям не говорил если копируешь блок через буфер не вставляй его как блок.
Valery Brelovsky вне форума  
 
Непрочитано 30.04.2014, 11:56
#8
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,379


уровень вложенности этих самых блоков в блоки известен? В это всё и упирается.
Хмурый вне форума  
 
Непрочитано 30.04.2014, 11:57
#9
giprsk


 
Регистрация: 20.05.2009
Сообщений: 89


Можно вот так: http://forum.dwg.ru/showpost.php?p=69918&postcount=10
В чистом чертеже создаёте "опознавательный" блок с искомым именем - скажем, цветное пятно большого размера.
Через DC переопределяете этот блок в своём чертеже. В тех блоках, куда он был вложен, "засветится пятно".
Тупо, конечно, но работает

----- добавлено через ~7 мин. -----
PS Кстати, проблема по поиску блока, которого я никак не мог найти, оказалась не в том, что он был вложен в другой блок, а в том, что Быстрый фильтр, хоть и написано "Весь чертёж", осуществляет поиск только в том пространстве, где вы находитесь. Блок просто находился в пространстве Листа, а я его искал в пространстве Модели.
giprsk вне форума  
 
Непрочитано 30.04.2014, 13:57
1 | #10
Valery Brelovsky

Инженер дорожник
 
Регистрация: 22.10.2007
Израиль
Сообщений: 1,859


Цитата:
Сообщение от giprsk Посмотреть сообщение
Тупо, конечно, но работает
Почему тупо. В принципе реальное решение. Единственное что радует, что не надо блоки искать каждый день. Пустые блоки так отлавливал. Вызывал редактор блоков чертил окружность побольше, а уже остальное дело техники.
Valery Brelovsky вне форума  
 
Непрочитано 30.04.2014, 15:53
#11
giprsk


 
Регистрация: 20.05.2009
Сообщений: 89


Цитата:
Сообщение от Valery Brelovsky Посмотреть сообщение
Почему тупо. В принципе реальное решение. Единственное что радует, что не надо блоки искать каждый день. Пустые блоки так отлавливал. Вызывал редактор блоков чертил окружность побольше, а уже остальное дело техники.
"Тупо" потому, что предлагаемое решение - это всё же не инструментарий Автокад и даже не LISP-функция, а всего лишь уловка.
giprsk вне форума  
 
Непрочитано 01.05.2014, 09:49
#12
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от giprsk Посмотреть сообщение
и даже не LISP-функция
Nested Block Counter
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 01.05.2014, 10:25
#13
Valery Brelovsky

Инженер дорожник
 
Регистрация: 22.10.2007
Израиль
Сообщений: 1,859


Цитата:
Сообщение от giprsk Посмотреть сообщение
это всё же не инструментарий Автокад и даже не LISP-функция, а всего лишь уловка.
Смотрите. Не соглашусь что это уловка. У меня принцип работы основан что тобы чертёж был максимально чистый и удобный в работе. На основе своего опыта я формирую чертёж что бы в конечном итоге было легко редактировать получать объёмы. Исходя из этого я исключаю и своего файла громоздкие блоки, не используюю вставку через буфер обмена вставить как блок. Использую динамические блоки но не делаю их много функциональными и громоздкими, и вообще стараюсь обходится без динамики и если использую динамику то этот блок не участвует в подсчёте каких либо объёмов. Это блоки чисто оформительские. И подавно не использую блоки внутри блока. Т.е. если создаю новый блок и ипользую в этом блоке другой блок то после расположения его на месте взрываю, и привожу все элементы в необходимое мне соответствие. Т.е. что бы не было проблемы при выключении слоя на котором расположен блок, слой выключался, а блок оставался. Т.е. придерживаюсь определённых правил, которое позволяют не решать тупые проблемы. В общем блока в блоке не должно быть и тогда не нужно искать тупых решений. И можно ещё перечислить много тупости в файлах, но лучше от этого не станет. В общей массе народ не вникает в качество выполнения файла, потому я забочусь о своём комфорте. Ещё народ создаёт маленький блок а точка вставки не известно где. У меня точка вставки соотместует месту стыковки с другимиэлементами чертежа, а народ вставляет потом переносит, потом поворочивает. Даже вставленный блок пересемтить и повернуть проще если точка вставки рядом, а так это несколько дополнительных действий. Для этого случая нашёл Лисп программу которая изменяет точку вставки не изменяя положение вставленных блоков. Т.е. кликнул по блоку и указал новую точку вставки.
Valery Brelovsky вне форума  
 
Непрочитано 02.05.2014, 11:42
#14
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Для "затравки" - кусок функции для обработки блоков на чертеже
Код:
[Выделить все]
//Обработка вложенных в блок примитивов
private void ProcessingAcadBlockReference(Transaction ATr, ObjectId AId)
{
	//Получаем ссылку на выбранный блок
        BlockReference acBlkRef = ATr.GetObject(AId, OpenMode.ForRead) as BlockReference;
        //Получаем таблицу записей выбранного блока
        BlockTableRecord acBlkTblRec = ATr.GetObject(acBlkRef.BlockTableRecord, OpenMode.ForRead) as BlockTableRecord;
        //Перебираем коллекцию Id входящих примитивов
        foreach (ObjectId acObjId in acBlkTblRec)
        {
        	//Получаем объект для каждого примитива по его Id (обратите внимание на режим открытия) 
               Entity acEnt1 = ATr.GetObject(acObjId, OpenMode.ForWrite) as Entity;

		...обрабатываем примитив


               //Если примитив является блоком
               if (acEnt1 is BlockReference)
                {
                   //Вызываем рекурсивно сами себя
                   ProcessingAcadBlockReference(ATr, acObjId);
                }
            }
}
можно обрабатывать неограниченное число вложенных блоков, можно узнать имена блоков и есть ли вообще вложенные в данный блок AId блоки.
Сергей812 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Удаление блока