Тема: Удаление описания блока из чертежа
Здравствуйте.
Только начал разбираться с блоками.
Я пишу прогу на VBA под ACAD, в которой как я понял сначала создается описание блока
' cоздание блока координатного крестика - его описание в чертеже
Dim blockObj As AcadBlock
AcadPoint(0) = 0: AcadPoint(1) = 0: AcadPoint(2) = 0
Set blockObj = ThisDrawing.Blocks.Add(AcadPoint, "КрестXY") ' описание блока - базовая точка и имя
blockObj.Units = acInsertUnitsMillimeters ' единицы блока - миллиметры
' состав блока
Bpnt(0) = -3: Bpnt(1) = 0: Bpnt(2) = 0 ' гоизонтальная линия
Epnt(0) = 3: Epnt(1) = 0: Epnt(2) = 0
Set lin = blockObj.AddLine(Bpnt, Epnt)
lin.Layer = NameLayerKoorSetka
Bpnt(0) = 0: Bpnt(1) = -3: Bpnt(2) = 0 ' вертикальная линия
Epnt(0) = 0: Epnt(1) = 3: Epnt(2) = 0
Set lin = blockObj.AddLine(Bpnt, Epnt)
lin.Layer = NameLayerKoorSetka
а потом на чертеж в цикле делается вставка блока по имени в нужной точке
' переменная для вставки блока на чертеж acAny acInsertUnitsUnitless
Dim blockRefObj As AcadBlockReference
for
' Вставка блока на чертеж в точке с именем, масштабом по осям и углом поворота
Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(AcadPoint, "КрестXY", 1#, 1#, 1#, AngRot)
blockRefObj.Layer = NameLayerKoorSetka
next
С этим я разобрался. В результате работы моей проги на чертеже будет создано множество блоков и с разными именами в зависимости от исходных данных. Специфика моей работы такова, что этот чертеж нужно будет перестраивать при обнаружении ошибок на предыдущей итерации построения чертежа, т.е. возникает варианта два:
1. новая версия чертежа будет построена в новом чистом документе ACAD (все здорово, но мне это не нравится, т.к. перед построением чертежа мне нужно его сохранить с пустым содержанием, чтобы по пути его сохранения определить откуда взять данные для построения самого чертежа, потому что не хочу вызывать диалог, откуда брать данные);
2. в существующем документе ACAD сделать откат назад или просто стереть то, что было построено и запустить прогу построения новой версии чертежа (это мне очень удобно).
Но если с исходными данными было что-то не так, то в документе ACAD появятся описания блоков с неправильными именами, которые я хотел бы удалить программно (а самих вхождений блоков на чертеж нет).
Отсюда вопрос. Я хотел бы написать процедуру удаления описаний всех блоков (чтобы каждый раз не выполнять команду меню ACAD "Файл\Утилиты\Очистить") и вставить эту процедуру в мою прогу перед построением чертежа. В этом случае бы уже в окончательно готовом чертеже не было бы описания не нужных блоков.
Как мне это сделать, подскажите пожалуйста. По поиску посмотрел - нашел процедуры, которые только удаляют вхождения блоков, а описания не удаляют.